open metatags metadatos drupal drupal-7 drupal-theming

metatags - open graph drupal 7



Drupal 7 ¿Cómo sobrescribir page.tpl para un tipo de contenido específico? (8)

Quería anular page.tpl.php para el tipo de contenido específico. He probado estas cosas, nada funciona para mí.

  1. page--article.tpl.php
  2. page--node--article.tpl.php
  3. page--node--type--article.tpl.php
  4. page--node-type--article.tpl.php
  5. page--type--article.tpl.php

Pero cuando apunté a un nodo específico por número, es decir, page--node--8.tpl.php , funcionó bien. Creo que la page--article.tpl.php debería haber funcionado, pero no sé por qué no funciona.

Por favor dime si lo estoy nombrando mal. y cómo puedo depurar tales cosas. He oído que puedo usar el módulo Devel, pero no sé nada al respecto. Se apreciará una pequeña pista en la dirección correcta.

Gracias por adelantado


Paso 1.crear un tipo de contenido por ejemplo: mi tipo de contenido es "fullwidthpage"

Paso 2. copie page.tpl.php y cambie el nombre a la página - fullwidthpage.tpl en la carpeta de la plantilla.

Paso 3. Agrega este código a template.php

function <strong>YOUR_THEME_NAME_HERE</strong>_preprocess_page(&$variables) { if (isset($variables[''node'']->type)) { // If the content type''s machine name is "my_machine_name" the file // name will be "page--my-machine-name.tpl.php". $variables[''theme_hook_suggestions''][] = ''page__'' . $variables[''node'']->type; } }

No olvides cambiar YOUR_THEME_NAME_HERE


Debes asegurarte de que tu plantilla pueda manejar esto ... Obtuve un fragmento de código que me funcionó aquí:

http://drupal.org/node/1089656#comment-4426790

<?php function themeName_preprocess_page(&$vars, $hook) { if (isset($vars[''node''])) { // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php". $vars[''theme_hook_suggestions''][] = ''page__''. $vars[''node'']->type; } } ?>


Sé que esta es una vieja pregunta, pero si otros llegan aquí, la forma en que anulo los tipos de contenido en drupal 7 es como esta

node-- contenttype .tpl


Entonces, dependiendo de lo que intente lograr, puede haber algunos trucos CSS que podrían ayudarlo.

Por ejemplo, para anular cualquier regla de CSS para un tipo de nodo específico, solo recuerde que sus páginas para ese tipo de nodo tendrán una clase de cuerpo de "node-type-[TYPE]" (es decir: .node-type-article )

A continuación, puede anular el CSS de la siguiente manera:

body.node-type-article #selector {}


Me encontré con el mismo problema.

node - recipe.tpl.php

no

página - recipe.tpl.php

esto es, por supuesto, con un tipo de contenido llamado ''receta''.


SIEMPRE CLARO EL CACHE ...

Vaya a / admin / config / development / performance y haga clic en el botón Borrar caché. Debería ser lo primero que haga si ha realizado modificaciones en la estructura del servidor y no se muestran como se esperaba.

De lo contrario, casi lo tienes bien

  1. página - content-type-name.tpl.php

le permitirá tema la plantilla de tipo de contenido.


¿Ha recordado borrar la memoria caché (en Administrar> Configuración del sitio> Rendimiento) para que Drupal esté "al tanto" de su nuevo archivo y lo use en lugar del predeterminado.

Consulte aquí sobre Borrar datos en caché

Además, es posible que deba agregar un enlace de preproceso (no he usado D7 por mi cuenta, solo 5/6 - creo que esto ha cambiado un poco). Esta publicación en Drupal Stack Exchange parece dar más detalles


Deberá sobrescribir la plantilla de nodo específica para el tipo de contenido si es diferente de una Página básica. Por favor comprueba esto:

http://api.drupal.org/node/19080

Debajo de esta página, copie / pegue los elementos que se encuentran en la página node.tpl.php y sobrescríbalo en la forma que desee. Puede acceder al nodo específicamente por $ node

Su plantilla para artículos sería:

node - article.tpl.php

Una vez que se haya creado, asegúrese de borrar la caché para asegurarse de que esto funcione.