Как задать синоним темизированным файлам Drupal 7

Когда начинаешь заниматься темизацией страниц Drupal, то сталкиваешься с тем, что приходится задавать имена c ID (page-node-20, taxonomy-term-4 и т.д.). Если у нас небольшой сайт, найти на FTP нужный шаблон не составляет труда, но когда у вас портал, то количество шаблонов на FTP измеряется десятками, и для каждой страницы/типа материала/термина таксономии используются свои. В итоге, поиск нужного шаблона страницы занимает немало времени.

Как-то давно я наткнулся на зарубежный ресурс, где описывалась данная проблема, и один человек предложил решение, а именно он написал кусок кода, который помогает задавать имена темизированным файлам такие же, как и название страницы. К примеру у нас есть страница “site.ru/contacts/otziv”, и это обычная страница типа материала, что бы не задавать название “page--node--220.tpl.php” можно задать “page--contacts--otziv.tpl.php”, поиск такого файла займет несколько секунд.

Все что нужно сделать, это прописать в “template.php” который лежит в папке с шаблоном на FTP кусок кода:

НАЗВАНИЕТЕМЫ_preprocess_page(&$variables, $hook) {
$alias = drupal_get_path_alias($_GET['q']);
if ($alias != $_GET['q'])
   {
	 $template_filename = 'page';
     foreach (explode ('/', $alias) as $path_part) {
      $template_filename = $template_filename . '__' . str_replace ("-", "_", $path_part);
     $variables['theme_hook_suggestions'][] = $template_filename;
	}
    }
}

Теперь вы можете задавать адекватные названия в зависимости от адреса, такие как "page--contacts--otziv.tpl.php". Но есть одно но, если задать шаблон родительской страницы, то он перекроет все дочерние, приведу пример. У нас на сайте имеется 4 страницы, /contacts/otziv, /contacts/number, /contacts/forum, /contacts/maps. Если темизировать их по отдельности "page--contacts--otziv.tpl.php", "page--contacts--number.tpl.php" - то все будет окей, но если задать шаблон для родителя "page--contacts.tpl.php", то он перекроет все вышестоящие шаблоны, и увы с этим ничего не сделать. Остается лишь задавать родительским шаблонам старые названия "page--node--102".

А в целом все работает и существенно упрощает работу с файлами на FTP.