Как переопределить текст «Передано» для узлов Drupal? - PullRequest
0 голосов
/ 27 августа 2011

Я использую Drupal 6.

In ./modules/node/node.module, следующий вывод информации о представлении в представлении узла:

/**
 * Format the "Submitted by username on date/time" for each node
 *
 * @ingroup themeable
 */
function theme_node_submitted($node) {
  return t('Submitted by !username on @datetime',
    array(
      '!username' => theme('username', $node),
      '@datetime' => format_date($node->created),
    ));
}

Очевидно, я неЯ не хочу изменять код основного модуля, поэтому я думаю, что я хотел бы сделать, это создать новый модуль, который просто переопределяет эту функцию, возвращая пустую строку.Как мне это сделать?

Или, еще проще, существует ли административный способ удаления настроек отправки на страницах узлов?

Ответы [ 4 ]

2 голосов
/ 28 августа 2011

Если вы просто не хотите, чтобы оно отображалось в представлении узла, существует административный способ избавиться от него в зависимости от типа контента. Например, вы можете отключить его для типа контента «продукт» или «партнер», но оставить его для типа контента «сообщение в блоге». Эту опцию можно найти в admin / build / themes / settings и она называется «Показать информацию о посте»

1 голос
/ 28 августа 2011

Поскольку вы просто хотите удалить этот текст, вы можете сказать Drupal не показывать эту информацию: Перейдите в admin / build / themes / settings и отмените выбор типов контента, для которых вы не хотите показыватьэта строка.На снимке экрана информация «отправлено» не отображается для типа контента «Страница», но отображается для других типов контента.

screenshot

Если вы хотитеизмените строку, основываясь на некоторых критериях, и используйте (например) другую строку, основанную на содержимом, тогда вы можете изменить функцию темы, вызываемую, когда Drupal (или любые модули) вызывают theme("node_submitted", $node), что означает, что вам нужно будет реализовать hook_theme_registry_alter () , используя код, подобный следующему:

function mymodule_theme_registry_alter(&$theme_registry) {
  if (isset($theme_registry['node_submitted'])) {
    $theme_registry['node_submitted']['function'] = 'theme_mymodule_node_submitted';
  }
}

Если вы хотите использовать только другую строку, она всегда используется вместо «Отправлено! username в @datetime,"есть более простые альтернативы:

  • Используя модуль переопределения строк, вы можете заменить любую строку, которую модуль передает в t(), на другую предпочитаемую вами строку.
  • Добавление следующегоКод в settings.php вы можете получить такой же результат.

    $conf['locale_custom_strings_en'] = array(
      'Submitted by !username on @datetime' => 'The string you want to use',
    );
    

Преимущество второго метода заключается в том, что вам не нужно использовать другой модуль, но вам нужно изменить файл settings.php, который не так прост, какпервый метод.

Между использованием функции темы в теме и использованием модуля я бы предпочел использовать модуль, поскольку для этого не требуется менять используемую тему;в случае, если пользователи могут установить тему для себя, это означает, что нельзя изменять все выбираемые темы.Другим преимуществом является то, что, если вы хотите использовать исходную строку, вам просто нужно отключить модуль.

1 голос
/ 27 августа 2011

2 способа

1: в ваш template.php поместите [theme_name] _node_subbmitted ()

function [your_theme_name]_node_submitted($node) {
  return t('blah blah !username on @datetime',
    array(
      '!username' => theme('username', $node),
      '@datetime' => format_date($node->created),
    ));
}

2 или в свой модуль

function [your_module_name]_node_submitted($node) {
  return t('blah blah by !username on @datetime',
    array(
      '!username' => theme('username', $node),
      '@datetime' => format_date($node->created),
    ));
}

в шаблонеэто более простой способ, конечно

вот как можно это сделать http://drupal.org/node/11811

0 голосов
/ 27 марта 2013

Это, вероятно, должно быть на drupal. *?

http://drupal.org/project/submitted_by - это альтернативное решение, так как не все темы будут соответствовать переопределению, описанному выше, по крайней мере, не в D6.

...