(phptemplate) Шаблоны для определенных типов содержимого

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

Аватар пользователя marazmus marazmus 22 января 2007 в 22:34

Оригинал статьи на drupal.org.

Для оформления содержимого документов (node) используется файл шаблона node.tpl.php. Это общий файл шаблона для всех типов контента.

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

Друпал позволяет сделать это - просто создайте файл с определенным именем в каталоге темы.

Формат имени - node-ТИП_КОНТЕНТА.tpl.php.

К примеру, для создания шаблона записи в блог создайте файл node-blog.tpl.php, для сообщения форума - node-forum.tpl.php - и так далее.

Друпал будет использовать эти файлы шаблонов вместо “стандартного” node.tpl.php.

Обратите внимание, что эта система работает для всех типов контента, и даже тех, которые вы добавили сами.

Примечание: это не касается типов контента, созданных с помощью модуля flexinode - там своя логика (см. статью по темизации flexinode на drupal.org).

Важные примечания:

* node-admin.tpl.php не сработает Smile
* в новых шаблонах доступны все переменные и поля объекта $node, обычно доступные в стандартном шаблоне (и плюс те, что добавил автор нового типа контента)

Примечание "переводчика" - это простой перевод-компиляция статьи документации. Сложности с flexinode и CCK оставим на будущие статьи Smile

Комментарии

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 22 января 2007 в 22:51

Мне кажется, что уместнее, внятнее и по-русски переводить не "темизация", а "изменение оформления" (или "смена/замена оформления").

Аватар пользователя andreyvlru andreyvlru 13 марта 2007 в 15:10

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

Шучу ;), но вкаждой шутке есть доля шутки

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 14 марта 2007 в 7:39

Наверное, зависит от контекста. В какой фразе?
Если в смысле "функции, управляющие оформлением темы", то, имхо, что-нибудь вроде "функции оформления" или "оформительские функции". Или там имеется в виду "функции, зависящие от вывода темы оформления", "определяемые выводом темы"? Тогда, наверное, "оформленные темой функции".


Я ставлю строчку "php_value error_reporting 7" в файл .htaccess, а вы? Smile Полный русский перевод Drupal 5.x и еще некоторых модулей.

Аватар пользователя marazmus marazmus 14 марта 2007 в 10:31

а как переводить themeable functions?

Наверное, зависит от контекста. В какой фразе?

Контекст здесь жесткий и однозначный - это функции, которые в своей работе формируют html-код, который выводится непосредственно в браузер пользователя.

А "themeable" они потому, что эти функции можно "перекрыть" своими вариантами, без правки ядра, с помощью "hook"-системы, и "нарисовать" в них свой вариант конечного html-кода, который будет выведен в браузер.

Т.е., к примеру, можно просто взять функцию, которая формирует вид профиля пользователя - theme_user_profile(). "Распотрошить" ее и сделать свой вид профиля, расположив html-теги по своему, что-то добавив, что-то убрав, и задав свои имена классов, и т.д. А "перекрытой" она будет потому, что мы будет править не саму функцию theme_user_profile(), которая расположена в коде ядра Друпала, а создадим в файле template.php нашей темы эту функцию, с именем ИМЯНАШЕЙТЕМЫ_user_profile(). Теперь Друпал будет использовать нашу функцию для генерации html-кода при отображении профиля пользователя, а не стандартную, из ядра.

p.s. У меня нет идей, как перевести "themeable function" Smile Из ваших идей пока нравится вариант "оформительские функции" или "функции оформления", в своей локальной вики для рабочей документации я даже использовал эти варианты несколько раз, сами "вылезли" Smile

Аватар пользователя Shelendor Shelendor 18 марта 2007 в 3:25

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

Аватар пользователя marazmus marazmus 18 марта 2007 в 10:50

Если складывать локально, то советую Firefox + Scrapbook Smile
А на друпал.ру... Можно в вики запихать эту серию по phptemplate, но мне пока реально некогда. Если кто-нибудь это сделает, с меня виртуальное пиво и реальная благодарность Smile

Аватар пользователя qman qman 22 апреля 2007 в 20:16

всем привет,
обратил внимание что статья применима к drupal 5, но я еще использую 4.7 .
описанная возможность точно не будет работать под 4.7?

Аватар пользователя marazmus marazmus 22 апреля 2007 в 20:38

В статье на drupal.org, которую я переводил, указаны версии 4.6 и 4.7. Попробуйте, может сработает - просто у меня сейчас нет возможности проверить, к сожалению.

Аватар пользователя blackvl@drupal.org blackvl@drupal.org 22 апреля 2007 в 21:38

Работает, я уже это использовал на 5-ке. К сожалению, хозяин сайта тянет с заполнением материалом, поэтому не покажу окончательную версию -
смотрите заготовку: http://black.rezona.net/tdksm/taxonomy/term/ - для каждого типа товара сделан свой node-typeX.tpl.php

Аватар пользователя marazmus marazmus 22 апреля 2007 в 21:59

Посмотрел, клево Smile

А вот мне всегда интересно было, как люди решают импорт всяких прайсов и каталогов в Друпал. XML? Руками? "Полуавтомат" какого-либо рода?

Аватар пользователя blackvl@drupal.org blackvl@drupal.org 22 апреля 2007 в 23:29

В моем случае только руками Sad и даже не секретарши, поэтому проект затянулся, впрочем со мной рассчитались и капает за поддержку хостинга Smile
Но, если бы список имен файлов и текстов был-бы в csv (который получается экспортом из экселя или подобных прог) можно было бы и всосать... Достаточно положить один товар и посмотреть куда ложатся записи. Далее пишется SQL на INSERT и обрабатывается этот файл.
Опять-же в моем случае это не эффективно (нет такой таблицы) - пусть уж сразу заполняют базу - а для чего тогда админка?!