¿Cómo anulo el texto "Enviado por" para los nodos de Drupal?

Estoy usando Drupal 6.

En ./modules/node/node.module, lo siguiente genera la información de envío en la vista de nodo:

/**
 * 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),
    ));
}

Obviamente, no quiero alterar el código de un módulo principal, así que estoy pensando que lo que me gustaría hacer es crear un nuevo módulo que simplemente anule esta función devolviendo una cadena vacía. ¿Como podría hacerlo?

O, aún más simple, ¿existe una forma administrativa de eliminar la configuración de envío en las páginas de nodo?

preguntado el 27 de agosto de 11 a las 14:08

4 Respuestas

Si simplemente no desea que se muestre en la vista de nodo, existe una forma administrativa de deshacerse de él, según el tipo de contenido. Por ejemplo, puede desactivarlo para el tipo de contenido "producto" o "socio", pero mantenerlo para el tipo de contenido "publicación de blog". Esta opción se puede encontrar en admin / build / themes / settings y se llama "Mostrar información de la publicación".

Respondido 28 ago 11, 16:08

Maneras 2

1: en su template.php ponga [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 o en tu módulo

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),
    ));
}

en la plantilla es una forma más fácil, por supuesto

aquí es exactamente cómo puedes hacerlo http://drupal.org/node/11811

Respondido 27 ago 11, 20:08

Como solo desea eliminar ese texto, puede decirle a Drupal que no muestre esa información: Vaya a admin / build / themes / settings y anule la selección de los tipos de contenido para los que no desea mostrar esa cadena. En la captura de pantalla, la información "enviado por" no se muestra para el tipo de contenido "Página", pero se muestra para los otros tipos de contenido.

captura de pantalla

Si desea modificar la cadena basándose en algunos criterios y utilizar (por ejemplo) una cadena diferente según el contenido, puede modificar la función del tema llamada cuando Drupal (o cualquier módulo) llama theme("node_submitted", $node), lo que significa que debería implementar hook_theme_registry_alter (), utilizando un código similar al siguiente:

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

Si solo desea usar una cadena diferente, que siempre se usa en lugar de "Enviado por! Nombre de usuario en @ fecha y hora", existen alternativas más fáciles:

  • Con el módulo de anulaciones de cadenas, puede reemplazar cualquier cadena a la que pase un módulo t() con otra cuerda que prefieras.
  • Añadiendo el siguiente código en settings.php puedes obtener el mismo resultado.

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

La ventaja del segundo método es que no es necesario utilizar otro módulo, pero es necesario modificar el archivo settings.php, que no es tan fácil como el primer método.

Entre usar una función de tema en un tema y usar un módulo, prefiero usar un módulo, ya que no requiere cambiar el tema usado; en el caso de que los usuarios puedan establecer un tema por sí mismos, esto significa no alterar todos los temas seleccionables. La otra ventaja es que, en el caso de que desee utilizar la cadena original, solo necesita deshabilitar el módulo.

Respondido 29 ago 11, 05:08

Esto probablemente debería estar en drupal. *?

http://drupal.org/project/submitted_by es una solución alternativa, dado que no todos los temas respetarán la anulación anterior, al menos no en D6.

respondido 27 mar '13, 07:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.