Начальное руководство по созданию и использованию пользовательских шаблонов позиций (оверрайдов, overrides)

Авторы/перевод. материала
  • Schenker
  • Посохов Юрий
Источники материала

Данный материал содержит основную информацию, необходимую для начала работы с пользовательскими шаблонами позиций (оверрайдами, overrides). В статье приводится подробное описание структуры оверрайдов, директорий и файлов, необходимых для его нормальной работы.  

ВСТУПЛЕНИЕ

Система шаблонов Seblod создана таким образом, чтобы легко интегрироваться в существующую систему управления шаблонами Joomla. Пользовательские шаблоны (оверрайды) Seblod представляют собой простой набор PHP файлов, расположенных в строго определенных директориях и названных таким образом, чтобы Seblod их мог автоматически идентифицировать и назначить соответствующим типам контента/типам поиска.

Хотелось бы сделать небольшое отступление и определиться с используемой терминологией.

Зачастую именно оверрайды, как наиболее часто используемые мы называем "кастомным шаблоном", хотя по сути это не совсем так. 

Что же такое пользовательский (или кастомный) шаблон, оверрайд и вариация?

1) кастомный шаблон (custom template) - шаблон вывода, созданный пользователем с "0", либо на основе дефолтных шаблонов Seblod, когда вывод данных осуществляются за счет изменения основного index.php шаблона. Предоставляет самый полный контроль над выводом, возможность задать формат, кол-во позиций, способ получения/вывода значений и т.д.

2) оверрайд (override) шаблона - функционал, предусмотренный шаблонами Seblod - возможность изменить вывод данных в какой-то одной/всех позициях вывода, добавив соответствующим образом файл овверайда конкретной позиции в папку positions шаблона seb_one. Изменить/оформить вывод можно только в пределах позиций, определенных основным шаблоном (в index.php).

3) вариации (variation) шаблона - более гибкий аналог оверрайда, на мой взгляд один из самых мощных инструментов вывода в Seblod, НО опять же - нет смысла применять в любых ситуациях, все зависит от задачи. Примером служит вариация seb_css3. Позволяет определить формат вывода данных для определенной позиции в шаблоне. Вариация используется как "правило" вывода, в котором можно даже создать и менять настройки, создав определенный интерфейс для их ввода. Вариации загружаются в определенные папки и после уже включаются непосредственно в типе контента, типе поиска для ЛЮБОЙ выбранной позиции! уже из менеджера Seblod (в отличие от предыдущих двух вариантов).

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

Оверрайды шаблона позволяют Вам настроить дизайн и вывод данных полностью в соответствии с Вашими потребностями. Для начала работы необходимо создать тип контента (content type) в Менеджере типов форм и контента (Seblod Form & Content Type Manager) и добавить все необходимые поля в соответствующие позиции форм. Данная инструкция покажет Вам как создать оверрайд, который будет автоматически привязан к созданному типу контента и возьмет на себя управление выводом данных, либо формы.

РАЗМЕЩЕНИЕ ОВЕРРАЙДА ШАБЛОНА SEBLOD

Файлы оверрайдов шаблона Seblod должны быть размещены в соответствующей папке основного шаблона Seblod (seb_one). Он расположен в папке шаблонов Joomla:

.../templates/seb_one/

Все основые изменения в соответствии с этой инструкцией будут совершаться в папке positions. Это папка в которой размещаются ваши PHP файлы оверрайдов шаблона (overrides). 

В Seblod 2.x папка positions не содержит вышеуказанной структуры папок и файлов, ее неободимо создать самостоятельно. Вы также можете загрузить полную структуру файлов и папок здесь.

При создании структуры папок и файлов самостоятельно придерживайтесь следующей инструкции:

Создайте только те папки, которые Вам необходимы! 

Для управления выводом в папке с именем Типа контента (типа поиска) могут быть созданы следующие подпапки:

  • content - оверрайд закладки content
  • admin - оверрайд Admin Form
  • site - оверрайд Site Form
  • Intro - оверрайд Intro

Для типа поиска имена папок соответственно будут:

  • search - оверрайд Search form
  • item - оверрайд вывода item

ДЛЯ LIST ОВЕРРАЙДЫ В SEB_ONE НЕ ПРЕДУСМОТРЕНЫ! ДЛЯ ВЫВОДА В ПОЛЬЗОВАТЕЛЬСКОМ ФОРМАТЕ ДАННЫХ ИЗ LIST ИСПОЛЬЗУЙТЕ ШАБЛОНЫ СТОРОННИХ РАЗРАБОТЧИКОВ, НАПРИМЕР TPL_BASIC_LIST.

Т.е. например, если вам нужно сделать оверрайд позиции mainbody в выводе (content) типа контента "_content_type", то:

создайте папку

 

..templates/seb_one/positions/_content_type/content/

 

a) создайте пустой файл с расширением .php в данной папке с имененем нужной позиции, т.е. mainbody.php;

б)добавьте следующий код в самом начале файла:

<?php 
// No Direct Access 
defined( '_JEXEC' ) or die;
 ?>

в)Сохраните файл.

г) также не забудьте добавить в папку пустой файл index.html

Папка positions может иметь следующую структуру.

Структура папок шаблонов Seblod

 

Шаг 1. Создание папки для вашего типа контента.

 Каждый созданный Вами тип контента (тип поска) должен иметьсобственную папку для оверрайдов с именем, соответствующим названию Типа контента. Это позволяет системе привязывать папки оверрайдов к соответсвующим типам контента автоматически. Мы рекомендуем Вам просто скопировать папку _content_type и переименовать ее в соответствии с названием вашего типа контента. В нашем случае папка будет называться products (пример). 

Ее полный путь будет следующий:

.../templates/seb_one/positions/products

Теперь в папке products содержатся следующие подпапки:

/admin
/content
/intro
/site

В этих папках будут размещаться PHP файлы вашего пользовательского шаблона. Обратите внимание, что названия папок полностью соответствуют названию четырех закладок в редакторе типа контента (см. рис.) в Менеджере форм и типов контента Seblod. Меню редактора типа контента Seblod

Шаг 2. Создание необходимых файлов оверрайда для каждого вида формы/контента.

В соответствии с нашим примером давайте предположим, что мы используем только три позиции в редакторе типа контента:

#MAINBODY
#TOPBODY
#BOTTOMBODY

 Соответственно, нам необходимо создать три файла mainbody.php , topbody.php и bottombody.php Разместить данные файлы в соответствующие папки видов форм/контента.

Для того, чтобы оверрайд шаблона работал необходимо создать соответствующий PHP файл для каждой позиции! Запомните, каждая позиция (position), которую вы используете в редакторе типа контента нуждается в соответствующем файле php в папке оверрайда, если Вы хотите применить свою структуру и стиль для данной позиции. Если Вы перемещаете поля в редакторе типа контента в другую позицию, то файл PHP необходимо создать для данной позиции (либо переименовать ранее используемый файл). Также необходимо отметить, что файл позиции активируется только в том случае, если хотя бы одно поле есть в позиции данного оверрайда!

Шаг 3. Добавление стилей и разметки в оверрайды.

После того, как Вы полностью создали структуру своего пользовательского шаблона Вам необходимо отредактировать в любом текстовом редакторе соответствующие php файлы, в которые следует добавить стили, разметку и связи с соответствующими полями используемого типа контента Seblod. Вы можете добавить элементы DIV, таблицы, CSS классы, функции Jquery, либо любые другие элементы, которые Вы обычно используете в PHP файлах. Вы также можете прописать связи с плагинами и расширениями Joomla в пользовательских шалонах Seblod. Несколько примеров запросов приведено в "стартовом" файле right-a.php. Более подробную информацию о том, как получать значения нужных полей в пользовательских шаблонах читайте в разделе Советы, API Seblod.

_content_type
Теги
Шаблоны

Комментарии  

# Hoggo А для второго языка как сделать кустом?
# Hoggo Цитирую Hoggo:
А для второго языка как сделать кустом?

Aa vse ea razobralsea! )))
# Николай Большое спасибо! Все очень подробно описано.. все получилось для поля field x
но само поле field x состоит из image. (несколько фотографий)
как задать стиль поля самого поля image?
я хочу сделать между ними расстояния
я пытаюсь внутри поля image написать стиль в stuff, но ничего не получается
# ILYA Доброго времени суток.
Я сегодня весь день потратил на поиски, где и как делать свой стиль css. :-x
А именно интересует, где файл с css или какой создать файл? (который отвечает за стиль)
У меня прогресс! Я стал видеть надпись которая приветствует Hi, I am the new position1 content ! :) Но на этом ТУПИК.
Спасибо.
# Yuri Posohov Привет. Создай файл овверайда какой-нибудь позиции в шаблоне (по инструкции выше, главное чтобы в позиции было хотя бы одно поле).
В файле овверайда добавь
$doc = JFactory::getDocument();
$doc->addStyleSheet(JURI::root(true) . '/templates/' . $this->template . '/css/mystyle.css');
где mystyle.css - подключаемый тобой файл css, расположенный в папке ..templates/seb _one/css
# ILYA Спасибо за ответ!
Но ничего не выходит.
Я должен эти php закорючки добавить в например: mainbody позицию? (То есть туда от куда берет Hi, I am the new mainbody content !)
Так как в php я пока еще не разбираюсь.! Может для особо одаренных еще подробней:? :) :oops:
# ILYA ok!
С стилями разобрался вроде. попробовал поменять фон этой Hi, I am the new position content ! Получилось.
Только теперь не понятно все таки, как заставить отобразить мои поля.?
# Yuri Posohov Если тебе просто нужно вывести поля "как есть" из той позиции, которую ты оверрайдил - добавь в файл
echo $cck->forcePosition('mainbody');

А вообще почитай в Советах статью про API себлод - там есть команды получений значений полей в разных вариациях, что открывает большие возможности - добавлять полям любые классы, стили, html-структуру и т.д.
# ILYA ОГРОМНОЕ СПАСИБО, Обязательно посмотрю про API!
Все выводит.
А если отдельное поле (просто из Content Type того же "mainbody") то, какая волшебная строчка будет?
(Ответьте как будет время, это уже просто интерес)
Спасибо за поддержку.
# Yuri Posohov Поле со всеми настройками -
echo $cck->renderField('имя_поля');

Только значение поля
echo $cck->get('имя_поля')->value;

Название опции поля (например, для Select simple, checkbox)
echo $cck->get('имя_поля')->text;

Ссылка, которая установлена в настройках поля (путь)
echo $cck->get('имя_поля')->link;

Лейбл поля
echo $cck->get('имя_поля')->label;

Описание поля
echo $cck->get('имя_поля')->description;

И т.д. и т.д. - команд API сотни, всего не перечислишь.
Смотри статью)
# ILYA :lol: ОГРОМНОЕ СПАСИБО!

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