Всем приветик!
Мне нужно вывести регион через 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 ?
А если не регион то хотябы блок..
СпасибО! Большущее!
Комментарии
<?phpecho $region_name;?> - это зачем?
<?php print $region_name;?> - вот как надо...
<?phpfunction themename_preprocess_node(&$vars, $hook) {
$vars['region_name'] = theme('blocks', 'region_name');
}
?> - вот это тоже никчему если только вы не хотите переопеределить темизацию вашего блока, но судя по коду не хотите, а значит незачем это пихать в template.php
phpecho - там php echo - тоесть есть пробел..
- Попробуйте вывести регион у себя.. не так просто оказалось
Ну, как вариант - надстройка в виде Content Profile (профили как ноды)
Решено:
В 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;?>
криво решено. Ваш регион будет всегда обрабатываться движком в фоне, хотите его вы видеть или нет. В этом случае остается только не забыть в настройках блока указать на каких страницах его показывать. Но даже и так, функция theme('blocks', 'region_name'); будет вызвана дважды - один раз друпалом при выводе страницы (он ведь наивно полагает что этот регион для страницы) и результат её будет отработан в никуда, а второй раз уже вами, там где вы хотите видеть. Хотя, если вам некритична производительность сайта, то можно и забить на эту проблемку.
В блоке указано, показывать только на странице профиля..
У Вас есть другой вариант решения задачи? Подскажите пожалуйста. Буду очень благодарен!
есть такая функция
drupal_get_content($region = NULL, $delimiter = ' ');
попробуйте ее
прибейте функцию 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 ничего не нужно изменять
?>
в обоих случаях не забудьте выставить параметры отображения блоков - на каких страницах их показывать.
Спасибо!
не подскажете как для 7ки решить?