Вот наваял тут небольшую функцию. Делает она примерно следующее:
если текущая страница не является нодой, то cool_title(0) выводит заголовок страницы, а cool_title(1) остается пустым. Если текущая страница - нода, то в cool_title(0) выводится термин, к которому отнесена нода, а в cool_title(1) выводится заголовок ноды.
$sql=db_fetch_array(db_query("SELECT nid FROM {node_revisions } WHERE title='%s'",drupal_get_title()));
$terms = taxonomy_node_get_terms($sql['nid']);
foreach ($terms as $term){
$t=$term->name;
}
switch ($op) {
case 0:
if (drupal_is_front_page()){
$result=drupal_get_title();
}
else{
if (!$sql) {
$result=drupal_get_title();
}
else{
if (!$t){
$result=drupal_get_title();
}
else{
$result=$t;
}
}
}
break;
case 1:
if (!drupal_is_front_page() && $t){
if ($sql['nid']){
$node=node_load($sql['nid']);
$result=$node->title;
}
}
break;
}
return $result;
}
Доработки и критика ожидаются и приветствуются.
Пример использования
Комментарии
Не понял, зачем это?)
Видать для поисковиков, и нежелания возиться со сторонними модулями...
я не понял что именно реализовано)
На этом сайте есть реализация этой функции. В Оранжевом блоке под шапкой выводится cool_title(0). А если открыть ноду, то большими буквами будет заголовок cool_title(1).
А все это не "зачем", а для КРАСОТЫ.
Теперь понял
не понял правда зачем так сложно делать:)
все вроде доступно в масиве $node и в $title
А если нет ноды? Например менюшка какая-нибудь, или еще что-то, что не имеет массива $node.
А мне нужно было, чтобы Заголовок ноды выводился в другом месте, отличном от места вывода заголовка просой страницы.
Например, на странице "События" отображается список новостей, и мне не нужно, чтобы заголовок этой страницы выводился посередине, как в ноде.
Вот поэтому все так сложно.
$node передается в page.tpl.php в 5м друпале)
если $node нет, значит это не нода. Как раз можно определить, что не нода. Чем плохо?)
юзать в этом случае $title
Согласен, мысль дельная. Надо будет как-нибудь воспользоваться.
Просто у меня в ноде вместе с заголовком выводится термин, к которому эта нода приписана.
Может можно как-нибудь и проще. Просто мне в голову это пришло.
За совет спасибо. Может еще чего подскажете?
В page.tpl.php у меня заголовок выводится так:
<?php
if (isset($title) && $title != "") {
print $title . " - ";
}
if (isset($node->taxonomy)) {
$taxterm = "";
foreach ($node->taxonomy as &$as) {
if ($taxterm) {$taxterm .= ", ";}
$taxterm .= $as->name;
}
if ($taxterm) {print $taxterm . " - ";}
}
print "$site_name";
?>
Если находимся в ноде или блоге есть переменная $title. Печатаю ее и "-"
Если материал отнесен к какой-либо категории, печатаю их через запятую
потом печатаю название сайта
Получается примерно так
Находимся в новости:
Новость - категория1, категория2, категория3 - Название сайта
Находимся в категории:
Категория - Название сайта
Находимся в блоге
Блог - название сайта
На главной
Название сайта
Мне нравится так
Вообще если есть тестовая установка вывести
<?php
print_r($node);
?>
и посмотреть что там есть)
Придумано здорово. Только мне не подходит.
$title не пустой, если открыта не нода. Там заголовок текущей страницы.
Я сделал, чтобы на месте заголовка обычной страницы, в открытой ноде отображался термин(ы) к которому это нода приписана.
p.s. Спасибо за еще один способ!
что это было?
Очень интересно, а что это??
А попробуйте использовать модуль www.drupal.org/project/auto_nodetitle
Может он вам сможет заменить необходимость писать код?