Изменить автогенерируемые названия шаблонов в теме

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

Аватар пользователя dabogee dabogee 12 августа 2009 в 12:09

Доброе время суток!
Начал собирать свою тему, и встал следующий вопрос: когда мы генерируем новый блок ч/з меню Blocks->Add block ему автоматически присваивается некоторый идентификатор (смотрю через devel Themer) т.е. block-page.tpl.php > block-block-[id].tpl.php, где id - уникальный номер блока. Чтобы подсунуть в тему свой шаблон достаточно создать одноименный файл. Но...когда таких блоков становиться много, уже не помнишь где какой. Собственно вопрос: есть ли модуль, или что надо поправить в ядре, чтобы автоматическое имя блока генерировалось как block-block-[название блока при создании].tpl.php

Огромное спасибо!

Комментарии

Аватар пользователя glu2006 glu2006 12 августа 2009 в 12:16

Этого можно избежать если вызывать в теле блока свои theme функции которые будут передавать в блок уже сгенеренный HTML каждая функция пусть называется так как вы ее запомните. Функции собираете в своем модуле. Тогда у Вас будет один шаблон для блока и не надо будет ломать голову как перестраивать его названия в шаблонах. Smile

Аватар пользователя dabogee dabogee 12 августа 2009 в 12:25

Если я правильно понял, надо в блоке block-block-[id].tpl.php сделать что-то типа сделать
<?php include (block-block-[my_block_name].tpl.php);?>??

Собственно хотелось бы избежать этого..т.е. разрастания количества файлов

Аватар пользователя glu2006 glu2006 12 августа 2009 в 13:09

dabogee wrote:
Если я правильно понял, надо в блоке block-block-[id].tpl.php сделать что-то типа сделать
<?php include (block-block-[my_block_name].tpl.php);?>??

Собственно хотелось бы избежать этого..т.е. разрастания количества файлов

Вы не правильно поняли Smile у Вас есть шаблон в теме block.tpl.php он один и больше других не надо.
Вы создаете блок с каким либо контентом и теле блока пишите


<?php echo theme('имя функции'аргументы?>

Эту функцию описываете и регистрируете в своем модуле. Функция строит Вам нужный HTML и передает его в единственный шаблон блока. А в стилях вы уже сами прописываете то что вам надо внешний вид и т.д.
К примеру вы создали вьюху которая выводит в блок какие либо материалы и Вам необходимо ее потемить своеобразным образом вы можете выводить блок созданный этой вьюхой и темизировать шаблон блока, а можете создать новый блок в теле которого напишите:


<?php echo theme('view''view_name'аргументы?>

И перекроете theme функцию вьюхи уже в коде а не в новом файле.
Данный способ конечно не всегда нужен, но если стоит проблема большого количества блоков, то лучше искать функцию в коде, чем шаблон в куче файлов.