не получается создать уникальный page--services--.tpl

Главные вкладки

Аватар пользователя rgzrgz rgzrgz 15 апреля 2015 в 21:30

Всем привет. У меня Друпал 7.36. Хочу сделать уникальные layout'ы для некоторых разделов сайта, таких как Услуги, Цены итд.
Нажимаю добавить содержимое > Баизик пейдж > создаю страницу "services". Потом делаю page--services.tpl.php и она не подхватывается почему-то!Если файл переименовать в page--node--1.tpl.php - то подхватывается. Но я знаю, что можно использовать не название ноды, а название в адресной строке, т.е. http://localhost/drupal/services. Кеш чистил, ставил чистые ссылки, глобал редирект, патчауто....не подхватывает.
Если я буду делать page--node--1.tpl.php то потом запутаюсь если будет много страниц. Как сделать, чтобы работало с названием page--services.tpl.php?
ps делаю все на adaptivetheme.

Комментарии

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 15 апреля 2015 в 21:36

"rgzrgz" wrote:
Нажимаю добавить содержимое > Баизик пейдж > создаю страницу "services". Потом делаю page--services.tpl.php и она не подхватывается почему-то!

Она и не должна подхватиться. Из коробки темплейты только для системных путей.
http://drupal.stackexchange.com/questions/103199/drupal-7-template-sugge...

function mytheme_preprocess_page(&$variables) {
// Get the alias for the page being viewed
$alias = drupal_get_path_alias($_GET['q']);
if ($alias != $_GET['q']) {
    $template_filename = 'page';
  //Break it down for each piece of the alias path
        foreach (explode('/', $alias) as $path_part) {
         // Added the str_replace becayse path parts with - were not being picked up properly by the theme_hook_suggestions
                $template_filename = $template_filename . '__' . str_replace("-", "_", $path_part);
        $variables['theme_hook_suggestions'][] = $template_filename;
    }
}

 if (isset($variables['node'])) {
    // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
    $variables['theme_hook_suggestions'][] = 'page__'. $variables['node']->type;
  }

Аватар пользователя rgzrgz rgzrgz 18 апреля 2015 в 22:45

RxB wrote:
"rgzrgz" wrote:
Нажимаю добавить содержимое > Баизик пейдж > создаю страницу "services". Потом делаю page--services.tpl.php и она не подхватывается почему-то!

Она и не должна подхватиться. Из коробки темплейты только для системных путей.
http://drupal.stackexchange.com/questions/103199/drupal-7-template-sugge...

function mytheme_preprocess_page(&$variables) {
// Get the alias for the page being viewed
$alias = drupal_get_path_alias($_GET['q']);
if ($alias != $_GET['q']) {
    $template_filename = 'page';
  //Break it down for each piece of the alias path
        foreach (explode('/', $alias) as $path_part) {
         // Added the str_replace becayse path parts with - were not being picked up properly by the theme_hook_suggestions
                $template_filename = $template_filename . '__' . str_replace("-", "_", $path_part);
        $variables['theme_hook_suggestions'][] = $template_filename;
    }
}

 if (isset($variables['node'])) {
    // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
    $variables['theme_hook_suggestions'][] = 'page__'. $variables['node']->type;
  }


а что здесь менять, кроме названия темы mytheme_preprocess_page? и $template_filename = 'page'; можно на примере page--services.tpl.php?

Аватар пользователя rgzrgz rgzrgz 19 апреля 2015 в 14:11

RxB wrote:
"rgzrgz" wrote:
а что здесь менять, кроме названия темы mytheme_preprocess_page? и $template_filename = 'page'; можно на примере page--services.tpl.php?

Ничего более не менять

не получается. Parse error: syntax error, unexpected end of file in C:\Apache24\htdocs\drupal736\sites\all\themes\myadaptive\template.php on line 120
в файле template.php

<?php function myadaptive_preprocess_page(&$variables) {
// Get the alias for the page being viewed
$alias drupal_get_path_alias($_GET['q']);
if (
$alias != $_GET['q']) {
    
$template_filename 'page--services';
  
//Break it down for each piece of the alias path
        
foreach (explode('/'$alias) as $path_part) {
         
// Added the str_replace becayse path parts with - were not being picked up properly by the theme_hook_suggestions
                
$template_filename $template_filename '__' str_replace("-""_"$path_part);
        
$variables['theme_hook_suggestions'][] = $template_filename;
    }
}
 
 if (isset(
$variables['node'])) {
    
// If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
    
$variables['theme_hook_suggestions'][] = 'page__'$variables['node']->type;?>

в папке с темой templates есть файл page--services (он рабочий, если переименовать его в page--node--1)
в чем может быть syntax error?

Аватар пользователя rgzrgz rgzrgz 19 апреля 2015 в 22:27

RxB wrote:
если это всё содержимое, то у вас не хватает фигурных скобок

Спасибо большое, проблема решена)

Действительно не было фигурной скобочки в конце+нужно было создать новый тип содержимого "services (Машинное имя: services)" Я изначально не понял назначение этой функции, стандартный Basic page она не перекрывает. Теперь все работает, спасибо!