Удалить текст "отправлено" только в тизере
Я прочитал Как удалить текст "отправлено" на дисплее узла? где вы можете удалить это в настройках типа контента для самого узла, но есть ли способ изменить только тизер, чтобы он не отображал текст "отправлено"?
Я ищу способ сделать это без предварительной обработки или модуля; Я не могу использовать свою тему для решения этой проблемы.
Я надеялся избежать использования Вычисляемого поля модуля для чего-то настолько тривиального.
2 answers
Эта настройка проверена, и информация добавлена в template_preprocess_node().
Это означает, что нет другого способа изменить это, кроме функции предварительной обработки. Однако ничто не мешает вам добавить функцию предварительной обработки в модуль, которая отлично работает. Вам просто нужно убедиться, что ваш модуль запускается после node.module, установив вес в системной таблице на что-то большее, чем node (возможно, 0).
Пример кода с помощью воля:
В вашем файле .install:
db_update('system')
->fields(array('weight' => 1))
->condition('type' => 'module')
->condition('name' => 'moduleName')
->execute();
, А затем в файле .module:
function moduleName_preprocess_node(&$variables) {
// Do not display post information on teasers
if ($variables['teaser']) {
$variables['display_submitted'] = FALSE;
}
}
Если вас устраивает регулярное выражение, вы можете использовать hook_node_view для добавления переменной '#post_render' в $node->содержимое:
function myModule_node_view($node,$view_mode){
if($view_mode=='teaser'){
$node->content['#post_render'][]='myModule_post_render_teaser';
}
}
function myModule_post_render_teaser($rendered){
$regex='';//This selector would have to grab the rendered "meta submitted" div
return preg_replace(etc. etc.);
}