Вставка региона в user-profile.tpl.php (РЕШЕНО)

Главные вкладки

Аватар пользователя AsVit@drupal.org AsVit@drupal.org 28 августа 2009 в 22:29

Всем приветик!
Мне нужно вывести регион через user-profile.tpl.php
Создал в themename.info регион
regions[region_name] = Region name
для вывода
<?phpecho $region_name;?>
и в template.php добавил

<?phpfunction themename_preprocess_node(&$vars, $hook) {
  $vars['region_name'] = theme('blocks', 'region_name');
}
?>

но themename_preprocess_node это только для node.tpl.php ..
Как регион вывести из user-profile.tpl.php ?
А если не регион то хотябы блок..
СпасибО! Большущее!

Комментарии

Аватар пользователя Zga Zga 28 августа 2009 в 23:36

<?phpecho $region_name;?> - это зачем?
<?php print $region_name;?> - вот как надо...

<?phpfunction themename_preprocess_node(&$vars, $hook) {
$vars['region_name'] = theme('blocks', 'region_name');
}
?> - вот это тоже никчему если только вы не хотите переопеределить темизацию вашего блока, но судя по коду не хотите, а значит незачем это пихать в template.php

Аватар пользователя AsVit@drupal.org AsVit@drupal.org 29 августа 2009 в 13:17

Решено:
В template.php

<?php function THEMENAME_preprocess_user_profile(&$variables) {
$variables['region_name'] = theme('blocks''region_name');
}
?>

В THEMENAME.info
 regions[region_name] = Region name
В user-profile.tpl.php

<?php if (!empty($region_name)): ?>
<?php 
print $region_name?>
<?php 
endif;?>
Аватар пользователя kosilko kosilko 29 августа 2009 в 13:46

"<a href="mailto:AsVit@drupal.org">AsVit@drupal.org</a>" wrote:
Решено

криво решено. Ваш регион будет всегда обрабатываться движком в фоне, хотите его вы видеть или нет. В этом случае остается только не забыть в настройках блока указать на каких страницах его показывать. Но даже и так, функция theme('blocks', 'region_name'); будет вызвана дважды - один раз друпалом при выводе страницы (он ведь наивно полагает что этот регион для страницы) и результат её будет отработан в никуда, а второй раз уже вами, там где вы хотите видеть. Хотя, если вам некритична производительность сайта, то можно и забить на эту проблемку.

Аватар пользователя AsVit@drupal.org AsVit@drupal.org 29 августа 2009 в 14:30

В блоке указано, показывать только на странице профиля..
У Вас есть другой вариант решения задачи? Подскажите пожалуйста. Буду очень благодарен!

Аватар пользователя AsVit@drupal.org AsVit@drupal.org 29 августа 2009 в 19:15

"kosilko" wrote:
есть такая функция
drupal_get_content($region = NULL, $delimiter = ' ');
попробуйте ее
Вы молгли бы описать как это применить в моей ситуации?

Аватар пользователя kosilko kosilko 31 августа 2009 в 13:34

"<a href="mailto:AsVit@drupal.org">AsVit@drupal.org</a>" wrote:
Вы молгли бы описать как это применить в моей ситуации?

прибейте функцию THEMENAME_preprocess_user_profile
в user-profile.tpl.php вместо print $region_name; напишите drupal_get_content('region_name');

или второй вариант (без прибития THEMENAME_preprocess_user_profile) :


<?php 
function THEMENAME_preprocess_user_profile(&$variables) {
$variables['region_name'] = drupal_get_content('region_name');
}
?>
в этом случае в user-profile.tpl.php ничего не нужно изменять
?>

в обоих случаях не забудьте выставить параметры отображения блоков - на каких страницах их показывать.