Drupal 7 - Suprime la salida de nodos en las páginas de taxonomía


10

¿Hay alguna forma de suprimir la salida de nodos en las páginas de taxonomía, sin tener que instalar un módulo (es decir, solo en template.php)?

Los nodos etiquetados con un término de taxonomía aparecen en la "página del Índice de taxonomía" (por ejemplo, yoursite.com/taxonomy/term/[id]).

Nuevo en Drupal 7, las páginas del Índice de taxonomía pueden tener campos adjuntos. Sin embargo, si intenta anular la página de taxonomía con una Vista (por ejemplo, para controlar cómo se muestran los nodos), los campos en las páginas del Índice de taxonomía no aparecerán.

Por lo tanto, he colocado mi Vista de taxonomía como bloque en la página Índice de taxonomía. De esa manera, puedo controlar cómo aparecen los nodos y aún tengo los campos de la página Índice de taxonomía.

Debido a esto, la página de taxonomía todavía está generando sus nodos. Puedo ocultarlos configurando el avance de los nodos como oculto, pero aún así carga los nodos (y, por lo tanto, cualquier CSS / Jquery adjunto a los nodos a pesar de que los nodos no se muestran). ¿Cómo puedo evitar que aparezcan los nodos, idealmente desde el interior de template.php?


¿Por qué no quieres instalar un módulo? Algunas cosas son más fáciles de lograr con los módulos.
Martin Schlagnitweit

Respuestas:



8

La solución de http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ funciona bien para mí:

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

Nota: debe restablecer la memoria caché de su sitio.


NOTA: esto deshabilitará la lista de nodos para cualquier página de términos de taxonomía en el sitio.
Duncanmoo

@Peter Lozovitskiy Hago esto y me enfrento al error "Aviso: Uso de constante constante" taxonomía "indefinida".
shekoufeh

@ shekoufeh, he corregido el código (reemplazado por comas) intente este código ahora.
Peter Lozovitskiy

2

Debe eliminar los nodos de la variable $ page.

En template.php puedes hacerlo así:

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

En tu page.tpl.php usa este código:

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

Esto elimina los nodos de todos los vocabularios y términos . Si desea eliminarlos solo en ciertos términos o en todos los términos de un uso de vocabulario arg(2)que contiene el tidpara cargar el término y luego actualizar la instrucción if.


Funciona pero aún deja el localizador encendido. Eso significa que se están cargando nodos y desperdician los recursos del servidor. De todos modos, gracias por el consejo, ya estoy usando tu método :) Pero, en teoría, todavía existe uno mejor.
int_ua

0

Puedes hacer prácticamente cualquier cosa en template.php, pero eso no es recomendable. El punto de usar un CMS es que separa los datos, el comportamiento y la apariencia. El archivo template.php es parte de la capa de temas, y debe usarlo para ajustar el estilo visual de su sitio.

Si desea ajustar el comportamiento de un sitio (en este caso: controlar qué elementos se muestran en una lista determinada), debe cambiar el comportamiento, de modo que instale y configure los módulos. Si desea crear listas personalizadas de contenido, el módulo Vistas es exactamente lo que necesita.

En su caso (si lo entiendo correctamente), desea que los campos del término de taxonomía se muestren sobre la lista de nodos etiquetados con ese término. Puede volver a crear eso en su vista creando un bloque de vistas que tome el término ID de la URL y muestre la información que necesita.


¡Gracias por la respuesta! Ya estoy usando Vistas para anular la página de taxonomía. Sin embargo, estoy usando la anulación de vistas como bloque en lugar de una página, ya que necesito mantener visibles los campos de la página de taxonomía. El único problema es que la página de taxonomía todavía carga los nodos, lo que parece innecesario.
big_smile

No entiendo lo que quiere decir con "los campos en la página de taxonomía", pero ocultar el contenido de la página y reemplazarlo con un bloque no parece la solución correcta. Si simplemente anula la página de taxonomía con una vista de página normal, ¿qué funcionalidad le falta exactamente? (Tal vez pueda actualizar su pregunta original, y
mejoraré

Respuesta actualizada también.
marcvangend

Lamentablemente, su respuesta no parece funcionar. Si intenta incluir los campos de taxonomía en una vista, mostrará el contenido de cada campo (y no los que solo pertenecen a la página específica que se está visualizando).
big_smile

0

Estaba usando CSS para ocultar las cosas de la taxonomía, pero configurar su visualización como personalizada y dejar en blanco esa parece una mejor opción.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.