2010-08-30 2 views
2

sys info: установка drupal 6 с множеством модулей ... слишком много для отображения.Шаблон страницы не загружается, но шаблон узла загружается

проблема: только определенный тип содержимого не загрузит файл шаблона правильно. некоторые узлы, которые будут отображаться на этих страницах через представления, превращают их в разметку. они являются единственным содержимым, которое загружается. файл шаблона, что это содержание падает обратно в узел-event.tpl

цель: чтобы загрузить страницу-team.tpl.php

предложения шаблона загружаются двумя способами в template.php через предварительную обработку с помощью

mytheme_preprocess_page(&$vars, $hook) 

преобразован из _phptemplate_variables() в установку drupal 5.

Метод 1:

if (module_exists('path')) { 
    $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q'])); 
    if ($alias != $_GET['q']) { 
    $template_filename = 'page'; 
    foreach (explode('/', $alias) as $path_part) { 
     $template_filename = $template_filename . '-' . $path_part; 
     $vars['template_files'][] = $template_filename; 
    } 
    } 
} 

Метод 2:

if ($vars['node']->og_groups['0'] || preg_match('/fdl\//',$vars['node']->path) || (preg_match('/og\/manage/',$alias) || preg_match('/og\/invite/',$alias) || preg_match('/og\/users/',$alias)) || (preg_match('/node\/add/',$alias) && $_GET['gids'] != '') || $vars['node']->og_description || (arg(0) == 'user' && is_numeric(arg(1)))) { 
    $vars['template_files'][] = 'page-team'; 

} 

страниц команда является TPL, что не хватает, и я подозреваю, что может быть ошибка с моим кодом выше (метод 2) ,

Я пытаюсь загрузить этот шаблон для всех страниц с первым аргументом пути «fdl», поэтому site.com/fdl и всеми дочерними элементами fdl.

Я знаю, что есть много возможностей. но я чувствую, что ошибка здесь. спасибо за любую помощь, которую вы можете предложить.

+0

В вашей папке с темами уже есть page.tpl.php? Известна ошибка (http://drupal.org/node/279573), в которой говорится, что node-foo.tpl.php не может использоваться темой, когда node.tpl.php недоступен. То же самое относится и к page.tpl.php - я не уверен на 100%. – marcvangend

+0

спасибо за ваш ответ, но у меня действительно есть page.tpl.php в каталоге тем. –

ответ

0

Я нашел функцию устаревших ссылок в шаблоне. обновление всех исправленных параметров.

1

Ну, вы очистили кеш? Поскольку при работе с темами drupal обычно ловит недавно добавленные темы и шаблоны после очистки кеша.

И если вы не уверены в своем рег. exp., я считаю, вы можете просто написать это:

 

if(strpos(drupal_get_path_alias($_GET['q']),'fdl')===0){ 
    $vars['template_files'][] = 'page-team'; 
} 
 

И очистить кэш.

+0

Я очистил кеш, но безрезультатно. спасибо за ваш фрагмент, но и не повезло. страница по-прежнему загружает только шаблон узла, а не шаблон страницы. –

+0

Он должен работать. Я только что протестировал его в своем проекте. Ниже приведен весь пример. – angryobject

1

Это то, что я имею в моем template.php:

 

function frontend_preprocess_page(&$vars){ 
    if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){ 
     $vars['template_files'][] = 'page-dummy'; 
    } 
} 
 

фронтенд это название моей темы. У меня есть файл-dummy.tpl.php в папке темы. Чтобы увидеть, что он работает, я добавил «IT WORKS» сразу после тега body. Затем очищается кеш. Теперь я перехожу на страницу «mydomain.com/dummy_tests/1» и вижу, что IT WORKS.

Если у вас возникли проблемы, попробуйте проверить вывод drupal_get_path_alias ($ _ GET ['q']). Просто сделайте

 

print drupal_get_path_alias($_GET['q']); 
 

прямо внутри функции preprocess_page(). И если это действительно начинается с «fdl», все должно работать. Это рабочий пример, поэтому вы просто пытаетесь поиграть и понять, почему он не работает для вас.

BTW, попробуйте удалить шаблон узла и оставить только шаблон страницы. Я не знаю, почему, но может быть что-то не так, и дрюпал их беспорядок.

+0

Да, запрос правильный, но все же страница tpl не загружается. вы думаете, потому что это особый тип контента, есть проблема? –

+0

Не совсем. Я не думаю, что пользовательский тип контента может сделать что-то неправильно. И я просто не могу понять, почему это не работает для вас. – angryobject

+0

так странно, удалив шаблон узла, был доступен шаблон страницы. я все равно хотел бы знать, что именно дало преимущество узла, но, спасибо за вашу помощь, рассердился. –

0

Я попытался добавить пользовательские шаблоны в функции page_preprocess и node_preprocess. И он работал как для шаблонов страниц, так и для узлов.

 

function frontend_preprocess_page(&$vars){ 
    if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){ 
     $vars['template_files'][] = 'page-dummy'; 
    } 
} 

function frontend_preprocess_node(&$vars){ 
    if(strpos(drupal_get_path_alias($_GET['q']),'dummy_tests')===0){ 
     $vars['template_files'][] = 'node-dummy'; 
    } 
}