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í.
page--article.tpl.php
-
page--node--article.tpl.php
-
page--node--type--article.tpl.php
-
page--node-type--article.tpl.php
-
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
- 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.