Block.tpl.php - Drupal 7 берет стандарт

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

Аватар пользователя Ateiri Ateiri 7 января 2012 в 2:52

Здравствуйте. Перешел на Drupal 7 и у меня возникла масса вопросов и проблем. Все я выкладывать не буду, а ограничусь двумя.

1) block.tpl.php - не смотря на то что данный файл присутствует в моей теме, используется block.tpl.php из модулей по дефолту. Как подключить именно мой block.tpl.php.

2) В template.php я обнаружил огромное количество препроцессов, я не совсем понял для чего они нужны, нужны ли они вообще и как их едят Smile

У меня такое чувство что эти 2 вопроса пересекаются между собой, я буду очень благодарен если кто-нибудь поможет мне в постижении этого соуса Smile

Комментарии

Аватар пользователя Chyvakoff Chyvakoff 7 января 2012 в 14:08

"ХулиGUN" wrote:
А что, google.ru лежит?

"ХулиGUN" wrote:
У меня такое чувство, что Вы и Друпал ваще никак не пересекаетесь

АФФТАР ЖЖЁТ)))

Аватар пользователя Alexei91 Alexei91 7 января 2012 в 15:45

По первому вопросу. Пример темизации конкретного блока, - block--system--user-menu.tpl.php. (Вход/учётка юзера).
По второму вопросу. template.php - тоже самое, что functions.php на WP.
Всё это на drupal.org есть.

P.S.
«А что, google.ru лежит?»
В ПС такое говно порой нах-ся, лучше сразу документацию на drupal.org.

Аватар пользователя Ateiri Ateiri 7 января 2012 в 18:03

В теме bluemasters есть файл block.tpl.php, оно же является прямым доказательством его надобности.
Я наверное не совсем корректно задал вопрос о template.php, препроцессы подключают переменные в шаблоны, так я это понимаю, но хорошо бы иметь русскую документацию. Drupal.org имеет достаточно масштабные гайды, но написано это явно не для новичков.

block--system--user-menu.tpl.php, Alexei91 благодарю, а где можно посмотреть все возможные связки, ну или опять же таки найти информацию об этом моменте. Например я хочу чтобы блоки в определенном регионе имели свой собственный дизайн.
Предположим у меня есть регион prefooter и в нем я хочу разместить 4 блока своего дизайна. Для этого будет использоваться файл block--prefooter.tpl.php?

Аватар пользователя Proteus Proteus 7 января 2012 в 21:13

"Ateiri" wrote:
В теме bluemasters есть файл block.tpl.php, оно же является прямым доказательством его надобности.

То, что файл block.tpl.php есть в какой-то теме не значит, что он обязательно должен быть любой теме. На самом деле он не является обязательным, если его в теме нет, то применяется дефолтный block.tpl.php, который находится в modules/block. А вот если надо чтобы определенный блок выглядел иначе, тогда block--system-user-menu.tpl.php (или типа того), но тут есть нюанс, чтобы такой шаблон работал в твоей теме должен быть стандарнтный block.tpl.php, нужно просто скопировать его из modules/block.

"Ateiri" wrote:
а где можно посмотреть все возможные связки

Связки могут быть какие-угодно, в зависимости от блоков. Имена создаются по схеме block--[название блока].tpl.php

"Ateiri" wrote:
Предположим у меня есть регион prefooter и в нем я хочу разместить 4 блока своего дизайна. Для этого будет использоваться файл block--prefooter.tpl.php?

Для темизации регионов существует другой шаблон region.tpl.php. Но он не отвечает за темизацию блоков в регионе, он отвечает за то как выглядит сам регион. Если нужно, чтобы определенные блоки выглядели определенным образом нужно для каждого создать свой block--[название блока].tpl.php

"Ateiri" wrote:
1) block.tpl.php - не смотря на то что данный файл присутствует в моей теме, используется block.tpl.php из модулей по дефолту. Как подключить именно мой block.tpl.php.

Кеш очистить не забыл?

"Ateiri" wrote:
2) В template.php я обнаружил огромное количество препроцессов, я не совсем понял для чего они нужны, нужны ли они вообще и как их едят :)

"Ateiri" wrote:
препроцессы подключают переменные в шаблоны, так я это понимаю

Совершенно верно. В принципе они необязательны, они просто добавляют переменные и логику для tpl.php файлов. В теме их может не быть, как и вообще не быть template.php файла.

Аватар пользователя divined divined 13 сентября 2012 в 11:27

А что делать если нужно переопределить именно block.tpl.php.
Мне нужно внести изменения во все блоки, а не в один.

Делать 100500 темплейтов для каждого блока абсурдно.

Аватар пользователя divined divined 17 сентября 2012 в 17:31

divined wrote:
А что делать если нужно переопределить именно block.tpl.php.
Мне нужно внести изменения во все блоки, а не в один.

Делать 100500 темплейтов для каждого блока абсурдно.

Аватар пользователя divined divined 13 сентября 2012 в 11:28

кэш не забыл.

не переопределяется.

да и в основной файл вносить изменения не правильно, слетит после апдейта.

Аватар пользователя Proteus Proteus 14 сентября 2012 в 23:28

"divined" wrote:
А что делать если нужно переопределить именно block.tpl.php.
Мне нужно внести изменения во все блоки, а не в один.

Делать 100500 темплейтов для каждого блока абсурдно.

если нужно, чтобы в разных регионах блоки выглядели по-разному, то есть такое решение Skinr

"divined" wrote:
да и в основной файл вносить изменения не правильно, слетит после апдейта.

Ничего не слетит, файл-то в теме находится, если тема самодельная, то это на твоей совести. А если не самодельная, то автоматически становится таковой после того, как ты меняешь вывод блоков:)
На то и нужно создавать block.tpl.php в теме, чтобы менять там и писать, что хочешь...

Аватар пользователя divined divined 17 сентября 2012 в 12:01

Quote:
если нужно, чтобы в разных регионах блоки выглядели по-разному, то есть такое решение Skinr

- нет, нужно чтобы везде выглядели одинаково, все блоки

Quote:
Ничего не слетит, файл-то в теме находится

- если он находится в теме он не работает, работает если переписать в ядре друпала

Quote:
А вообще большинство подобных вопросов можно решить с помощью CSS.

- как вы с помощью css добавите пару дивов?

Quote:
На то и нужно создавать block.tpl.php в теме, чтобы менять там и писать, что хочешь...

- вопрос как раз про то что друпал не принимает такой ТПЛ, все-равно использует тот, который в ядре.

Аватар пользователя Chyvakoff Chyvakoff 17 сентября 2012 в 14:09

"divined" wrote:
если он находится в теме он не работает, работает если переписать в ядре друпала
"divined" wrote:
вопрос как раз про то что друпал не принимает такой ТПЛ, все-равно использует тот, который в ядре.

Должен понимать.
Значит не то имя дали шаблону.
Точно в нужную папку темы засунули(тему не перепутали)?
Другие tpl`ки этой темы подтягиваются?
В папку темы или в templates в папке темы?

Аватар пользователя divined divined 17 сентября 2012 в 14:19

Quote:
Значит не то имя дали шаблону.

Просто скопировал с модуля block - block.tpl.php

Quote:
Точно в нужную папку темы засунули(тему не перепутали)?
Другие tpl`ки этой темы подтягиваются?

Точно не перепутал, другие в этой же папке работают.

Quote:
В папку темы или в templates в папке темы?

И там и там пробовал.

Аватар пользователя Chyvakoff Chyvakoff 17 сентября 2012 в 17:25

Quote:

block--[region|[module|--delta]].tpl.php
base template: block.tpl.php

Theme hook suggestions are made based on these factors, listed from the most specific template to the least. Drupal will use the most specific template it finds:
block--module--delta.tpl.php
block--module.tpl.php
block--region.tpl.php

"module" being the name of the module and "delta", the internal id assigned to the block by the module. For example, "block--block--1.tpl.php" would be used for the first user-submitted block added from the block administration screen since it was created by the block module with the id of 1. "region" will take effect for specific regions. An example of a region-specific template would be block--sidebar_first.tpl.php. If you had a block created by a custom module called "custom" and a delta of "my-block", the theme hook suggestion would be called "block--custom--my-block.tpl.php."


По-разному пробовали имена давать?

Аватар пользователя divined divined 17 сентября 2012 в 17:30

В том то и дело что мне не нужно для 1 модуля, для 1 блока...мне нужно переписать для всех блоков сразу.

Если помодульно, поблочно то это надо создать около 70 темплейтов, причем одинаковых.

Аватар пользователя Chyvakoff Chyvakoff 17 сентября 2012 в 20:42

Я на [theme=danland] экспериментировал. block.tpl.php в templates отлично подхватывается.
Попробуй в другой теме.Может твоя тема как то коряво сделана?