Удалить текст "отправлено" только в тизере


Я прочитал Как удалить текст "отправлено" на дисплее узла? где вы можете удалить это в настройках типа контента для самого узла, но есть ли способ изменить только тизер, чтобы он не отображал текст "отправлено"?

Я ищу способ сделать это без предварительной обработки или модуля; Я не могу использовать свою тему для решения этой проблемы.

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

 3
Author: Community, 2011-05-25

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;
  }
}
 4
Author: Berdir, 2011-05-29 00:14:30

Если вас устраивает регулярное выражение, вы можете использовать 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.);
}
 0
Author: Trey, 2011-05-25 19:04:46