He creado un tema y tengo mis archivos de plantilla en esta estructura
- /templates/page/page.tpl.php
- /templates/page/page--node-type.tpl.php
He creado una plantilla de página personalizada pero, por alguna razón, Drupal no la está utilizando. He borrado mi caché y también he intentado agregar esta función de preprocesador en el archivo template.php del tema pero todavía no funciona.
if (isset($vars['node']))
{
// If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
$vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
}
Cualquier ayuda sería apreciada.
Respuestas:
Como se informa en las Sugerencias de plantillas de Drupal 7 , la sugerencia de plantilla utilizada de forma predeterminada desde Drupal 7 para las páginas es página - [front | internal / path] .tpl.php.
Para una página visible en http://www.example.com/node/1/edit , Drupal buscaría los siguientes archivos de plantilla:
Para agregar sugerencias adicionales, su tema debe implementar template_preprocess_page () y agregar nuevas sugerencias en
$variables['theme_hook_suggestions']
($variables
es la variable pasada por referencia a la función).Si lo hizo, entonces la única razón por la que el archivo de plantilla sugerido no se está utilizando es porque el archivo no tiene un nombre correcto: en el caso de que la página muestre una página de libro, por ejemplo, el archivo de plantilla debería ser page - book.tpl .php. Puede cambiar el código de su tema y dejar que use la plantilla page - node-type.tpl.php, si no encuentra una plantilla como page - book.tpl.php.
Para notar también eso, en theme_get_suggestions () (que es la función llamada por template_preprocess_page () ) los guiones se reemplazan por
_
, y no al revés. La razón por la que se hace se explica en un comentario informado en el código de función.fuente
Estoy usando Drupal 7.4, y tuve el mismo problema y lo único que me ayudó fue esta publicación: Cómo agregar un page.tpl personalizado según los tipos de contenido
De la publicación:
fuente
He pasado demasiado tiempo tratando de seguir el ejemplo anterior usando el reemplazo de cadenas en Drupal 7.22. Esto no parece funcionar para mí. Curiosamente, algunos tipos de contenido parecen sugerirse automáticamente, mientras que otros no. Este es el código que funcionó para mí al final.
entonces la sugerencia de plantilla para un tipo de contenido de front_page sería:
página - front_cover.tpl.php
Curiosamente, la sugerencia de plantilla de código para el tipo de contenido de 'problema' aparece como page - issue.tpl.php sin necesidad de un script de preprocesador. Esto para mi propósito parece anular la plantilla de vista que usa una ruta similar.
es decir
view path = / issue / # sugerencia de plantilla basada en el tipo de contenido, es decir / issue / # / front_cover
fuente