it-swarm-es.com

Campos en page.tpl.php

Quiero mostrar en mi page.tpl.php 3 campos personalizados que forman el último tipo de contenido agregado a mi sitio web.

Tengo un tipo de contenido personalizado llamado "Artículos" con tres campos personalizados, field_1, field_2, field_3.

¿Cómo puedo mostrar en cada página de mi sitio web esos tres campos del contenido más reciente agregado a los "artículos"? Quiero hacer esto sin usar vistas.

1
Sergiu B

No tengo las respuestas exactas para ti, pero tengo algunas instrucciones para indicarte. Intente algo como esto:

  1. En template.php, en una función THEMENAME_preprocess_page (), construya una consulta para obtener el ID de nodo del nodo creado más recientemente. Busque la API de base de datos de Drupal para ver cómo hacer esto. (Una solución más permanente sería usar un módulo personalizado para la consulta, pero comencemos en la capa del tema para que esto funcione).
  2. Haz una node_load() para obtener todo el contenido de ese nodo, que contendrá tus tres campos y más.
  3. Cree variables (dentro del $variables[] matriz) para contener el contenido renderizado de sus campos personalizados.
  4. Utilice esas nuevas variables en page.tpl.php o page-article.tpl.php
1
David Lanier

Como voy a asumir que tiene algún tipo de oposición religiosa al módulo Vistas, optaría por el método del módulo personalizado.

Un módulo simple podría crear un bloque que se puede mostrar en cualquier página que desee.

Empezaría aquí, http://drupal.org/node/20675 . Estamos hablando de 6.x, ¿verdad? Por supuesto que somos. Una vez que tenga la configuración del archivo .info y .module, puede pasar a Declarar contenido de bloque, (http://drupal.org/node/206758), y luego a Generar contenido (http://drupal.org/node/206759) ... aquí es donde se pone interesante ...

function yourModuleName_block($op='list', $delta=0) {
  // set up the block  
  $block = array();

  if ($op == "list") {
    // This is what it will be listed as in your list of blocks
    $block[0]["info"] = t('On This Date');
  } 
  else if ($op == 'view') {
     $block['content'] = yourfunctionToGetNewArticalContent();
  }
}

Luego crea tu función para devolver lo que quieras, para eso querrás echar un vistazo aquí .. http://api.drupal.org/api/drupal/includes--database.mysql- common.inc/function/db_query/6

1
Aaron