Привет.
В общем, сейчас, наверное, спрошу глупость, но я реально не могу понять этот момент в Друпале. Ситуация такая, что есть определенный тип ноды, для которого в тизере постоянно должно выводиться "Read more", даже если текстовое поле там пустое. В общем вопрос такой: как задать свои условия для вывода этой ссылки?
Облазил весь форум, кучу ресурсов, но ничего рабочего и грамотного не нашел. Да, я знаю, что можно залезть и покопаться в modules/node/node.module, но хочется как-то по-человечески решить эту проблему.
Буду рад, если напишите как это реализовать на доступном языке, а еще лучше пример какой-нибудь приведете. Не откажусь, если кто поможет по аське, обещаю, что тупить не буду
Спасибо
Комментарии
<?php
// node-NOTETYPE.tpl.php
echo l('Read more', $node_url);
?>
Спасибо. Но чтобы так делать, нужно тогда уже отключить в $links вывод read_more, которое идет стандартным образом. Может кто код выложить, как это сделать?
а если немного подумать?
<?php
if (!$page && !$node->readmore) echo l('Read more', $node_url);
?>
О, это уже идея! Просто не все переменные знаю, бывают проблемы с этим..
Попробовал, все равно как то криво выходит. И это все решение проблемы в лоб, нужно более изящное решение, чтобы исправить массив $links.
Можно ли как то переопределить функцию node_link в template.php?
http://api.drupal.ru/api/function/hook_link/6
if($variables['node']->type == 'ваш тип' && !isset($variables['node']->links['node_read_more']) && $variables['teaser']==1) {
$variables['node']->links['node_read_more']=l(t('Read more'),'node/' . $variables['node']->nid,
array('attributes'=>array(
'title'=>$variables['node']->title,
'class'=>'node-more-read'),
));
$variables['links']=theme('links',$variables['node']->links);
}
}
Как-то так наверное
olk, похожий код я и у вас на блоге видел
Только у меня почему то не срабатывает моя_тема_preprocess_node, хотя моя_тема_user_bar срабатывает на ура. Проверяю тупо вставкой print_r("Какая то гадость") в начало функции.
Прошу еще светлых идей
Просто часто забывают, что все что касается обработки темизации кэшируется (в частности регистр тем в котором и прописан процесс вызова функций темизации), поэтому настоятельно рекомендую после всяческих манипуляций с хуками темизации сбрасывать кэш регистра тем.
кстати вместо моя_теме_preprocess... можно использовать phptemplate_preprocess... (если конечно ваша тема использует движок phptemplate)
xxandeadxx, а можно где-нибудь потробно почитать как работать с этими хуками? А то я без понятия, что с ними делать и куда вставлять. Давно хочу разобраться, но хорошего описания с примерами нету
http://api.drupal.ru/api/group/hooks/6
Спасибо. Действительно, забыл про это дело. Сейчас что-то вырисовывается