Задача такая: создать регион между контентом и комментариями к нему. Прочитал о том как как создавать новый регион. В итоге в файле page.tpl.php нашел место где выводиться контент
<?php if ($page['content']): ?>
<?php print render($page['content']); ?>
<?php endif; ?>
Но как же сделать регион именно между концом контента страницы и комментариями. Я так понимаю 'content' в это файле цельная часть включающая сам контент и комментарии. В каком файле копать в таком случае?
Комментарии
node.tpl
if (isset($content['region'])) {
hide($content['region']);
}
print render($content);
...
if ($page && isset($content['my_region'])) {
print render($content['my_region']);
}
...
print render($content['comments']);
вот код, подскажите куда именно вставить этот код
<?php?>
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php print $user_picture; ?>
<?php print render($title_prefix); ?>
<?php if (!$page): ?>
<h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2>
<?php endif; ?>
<?php print render($title_suffix); ?>
<?php if ($display_submitted || !empty($content['links']['terms'])): ?>
<div class="meta">
<?php if ($display_submitted && isset($submitted) && $submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
<?php if (!empty($content['links']['terms'])): ?>
<div class="terms terms-inline">
<?php print render($content['links']['terms']); ?>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
<?php if (!$teaser): ?>
<div id="node-top" class="node-top region nested">
<?php print render($node_top); ?>
</div>
<?php endif; ?>
<div class="content"<?php print $content_attributes; ?>>
<?php
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
print render($content);
?>
<div id="comment-node"><script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script>
<div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus">
</div>
</div>
<?php print render($content['links']); ?>
</div>
<?php print render($content['comments']); ?>
<?php if (!$teaser): ?>
<div id="node-bottom" class="node-bottom region nested">
<?php print render($node_bottom); ?>
</div>
<?php endif; ?>
</div>
?>
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
print render($content);
?>
->
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
//Если наш регион существует - скрываем его перед выводом содержимого
if (isset($content['my_region'])) {
hide($content['my_region']);
}
//Выводим содержимое
print render($content);
//Если это страница ноды и наш регион существует,
if ($page && isset($content['my_region'])) {
//то выводим его
print render($content['my_region']);
}
//Выводим всё, что идет после содержимого, в том числе и комментарии
...
?>
не получается, не выводиться содержимое в этом регионе
помогите! могу дать доступ к сайту
Покажите:
а откуда регионы в $content ?
я думал они в page[]
Да это я у себя пихал поначалу. Сейчас рефакторю тот код, вот и попался под руку.
Чего это они в page[]? Куда запхаешь, там и будут.
ТС, как сделано у меня сейчас:
theme.info
template.php
//бла-бла-бла
$variables['below_node'] = block_get_blocks_by_region('below_node');
}
node.tpl.php
<?php print render($content); ?>
<?php print render($below_node); ?>
<?php print render($content['comments']);
В node.tpl.php я пропустил всю разметку, думаю сами справитесь.
Суть в том, что перед выводом основного содержания ($content) мы скрываем из него всякие ненужности в данный момент, типа комментариев (поскольку они в $content['comments']), затем выводим сам $content (то что hide - не выводится).
После него выводим свой регион, заполнили мы его в препроцессе ноды.
Затем выводим остальное, например - комментарии.
По содержимому региона.
Если необходима возможность из админки таскать мышкой блоки в новый регион, то для его заполнения в препроцессе используем block_get_blocks_by_region.
Если это необязательно, можно заполнять любым другим способом.
ser_house, все получилось, большое вам спасибо