Здравствуйте. Перешел на Drupal 7 и у меня возникла масса вопросов и проблем. Все я выкладывать не буду, а ограничусь двумя.
1) block.tpl.php - не смотря на то что данный файл присутствует в моей теме, используется block.tpl.php из модулей по дефолту. Как подключить именно мой block.tpl.php.
2) В template.php я обнаружил огромное количество препроцессов, я не совсем понял для чего они нужны, нужны ли они вообще и как их едят
У меня такое чувство что эти 2 вопроса пересекаются между собой, я буду очень благодарен если кто-нибудь поможет мне в постижении этого соуса
Комментарии
АФФТАР ЖЖЁТ)))
По первому вопросу. Пример темизации конкретного блока, - block--system--user-menu.tpl.php. (Вход/учётка юзера).
По второму вопросу. template.php - тоже самое, что functions.php на WP.
Всё это на drupal.org есть.
P.S.
«А что, google.ru лежит?»
В ПС такое говно порой нах-ся, лучше сразу документацию на drupal.org.
В теме bluemasters есть файл block.tpl.php, оно же является прямым доказательством его надобности.
Я наверное не совсем корректно задал вопрос о template.php, препроцессы подключают переменные в шаблоны, так я это понимаю, но хорошо бы иметь русскую документацию. Drupal.org имеет достаточно масштабные гайды, но написано это явно не для новичков.
block--system--user-menu.tpl.php, Alexei91 благодарю, а где можно посмотреть все возможные связки, ну или опять же таки найти информацию об этом моменте. Например я хочу чтобы блоки в определенном регионе имели свой собственный дизайн.
Предположим у меня есть регион prefooter и в нем я хочу разместить 4 блока своего дизайна. Для этого будет использоваться файл block--prefooter.tpl.php?
То, что файл block.tpl.php есть в какой-то теме не значит, что он обязательно должен быть любой теме. На самом деле он не является обязательным, если его в теме нет, то применяется дефолтный block.tpl.php, который находится в modules/block. А вот если надо чтобы определенный блок выглядел иначе, тогда block--system-user-menu.tpl.php (или типа того), но тут есть нюанс, чтобы такой шаблон работал в твоей теме должен быть стандарнтный block.tpl.php, нужно просто скопировать его из modules/block.
Связки могут быть какие-угодно, в зависимости от блоков. Имена создаются по схеме block--[название блока].tpl.php
Для темизации регионов существует другой шаблон region.tpl.php. Но он не отвечает за темизацию блоков в регионе, он отвечает за то как выглядит сам регион. Если нужно, чтобы определенные блоки выглядели определенным образом нужно для каждого создать свой block--[название блока].tpl.php
Кеш очистить не забыл?
Совершенно верно. В принципе они необязательны, они просто добавляют переменные и логику для tpl.php файлов. В теме их может не быть, как и вообще не быть template.php файла.
А что делать если нужно переопределить именно block.tpl.php.
Мне нужно внести изменения во все блоки, а не в один.
Делать 100500 темплейтов для каждого блока абсурдно.
кэш не забыл.
не переопределяется.
да и в основной файл вносить изменения не правильно, слетит после апдейта.
если нужно, чтобы в разных регионах блоки выглядели по-разному, то есть такое решение Skinr
Ничего не слетит, файл-то в теме находится, если тема самодельная, то это на твоей совести. А если не самодельная, то автоматически становится таковой после того, как ты меняешь вывод блоков:)
На то и нужно создавать block.tpl.php в теме, чтобы менять там и писать, что хочешь...
А вообще большинство подобных вопросов можно решить с помощью CSS.
- нет, нужно чтобы везде выглядели одинаково, все блоки
- если он находится в теме он не работает, работает если переписать в ядре друпала
- как вы с помощью css добавите пару дивов?
- вопрос как раз про то что друпал не принимает такой ТПЛ, все-равно использует тот, который в ядре.
Должен понимать.
Значит не то имя дали шаблону.
Точно в нужную папку темы засунули(тему не перепутали)?
Другие tpl`ки этой темы подтягиваются?
В папку темы или в templates в папке темы?
Просто скопировал с модуля block - block.tpl.php
Точно не перепутал, другие в этой же папке работают.
И там и там пробовал.
По-разному пробовали имена давать?
В том то и дело что мне не нужно для 1 модуля, для 1 блока...мне нужно переписать для всех блоков сразу.
Если помодульно, поблочно то это надо создать около 70 темплейтов, причем одинаковых.
Я на [theme=danland] экспериментировал. block.tpl.php в templates отлично подхватывается.
Попробуй в другой теме.Может твоя тема как то коряво сделана?
Хмм, попробовал на Garland, Batik, Acquia Marina везде 0 эмоций.
Если есть вопросы - установи http://drupal.org/project/devel_themer
Он всё покажет.