Переопределение шаблонов вывода компонентов и модулей

08/10/2010 Документация Joomla 1.5

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

/components
  /com_content
        /views
          /article
                /tmpl
                  default.php (разметка или шаблон компонента)
                  form.php    (разметка)
                view.html.php (вид, который выводит HTML)
                view.pdf.php  (вид, который выводит PDF)
          /category
                /tmpl
                  blog.php         (разметка)
                  blog_items.php (дочерняя разметка) 
                  default.php   (разметка)
                view.html.php   (HTML вид)
                view.feed.php   (RSS вид)

Из структуры видно, что каждый вид имеет свою директорию (articles, category, ...). В каждом виде есть директория tmpl, в которой хранятся разметки вывода содержимого (или просто шаблоны). В виде материала (/article) это /tmpl/default.php - разметка используемая для вывода материала по умолчанию и /tmpl/form.php - разметка используемая для добавления материала с сайта. В виде категории (/category) так же присутствует две разметки /tmpl/blog.php - для вывода материалов из категории  в виде блога и /tmpl/default.php - для вывода материалов в виде списка. При создании пункта меню, выбирая тип "материалы" получается следующая картина.

layuot

Так же можно заметить что существуют дополнительные файлы разметки, которые отсутствуют в списке, при создании пункта меню (например article/tmpl/pagebreak.php). Это связано с инструкциями, которые описаны в pagebreak.xml, в которых скрывается данная разметка из списка для пункта меню. Но это отдельная тема и ее затрагивать пока не стоит. Так же есть дочерние шаблоны (например category/tmpl/blog_item.php и другие) о них немного позже.

Создание своей разметки в шаблоне Joomla для компонентов

Переопределение разметки вывода происходит в самом шаблоне в директории /html. Например, для стандартного шаблона rhuk_milkyway это будет {root}/templates/rhuk_milkyway/html/. Здесь важно понимать, что если вы переопределили вывод разметки в одном шаблоне, то он не будет переопределяться для других шаблонов.

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

/templates
  /rhuk_milkyway
        /html
          /com_content
          (эта директория совпадает с названием компонента)
                /articles 
                (эта директория совпадает с названием 
                 вида (представления) компонента)
                  default.php 
                  (этот файл совпадает с названием файла, 
                   разметку которого нужно переопределить)
                  form.php ...

Можно разобрать конкретный пример на стандартном шаблоне rhuk_milkyway. Изначально в шаблоне нет никакого переопределения и нужно поменять разметку в стандартном виде материала. Для этого нужно просто скопировать файл из стандартного компонента {root}/components/com_content/views/article/tmpl/default.php в созданную директорию /templates/rhuk_milkyway/html/com_content/article/default.php и дальше менять уже разметку в вашем шаблоне, не затрагивая основные файлы компонента.

Так можно переопределять вывод любого компонента, если он это поддерживает.

Переопределение дочерних разметок

В некоторых видах могут быть дочерние разметки, допустим если взять стандартный вид категории, можно увидет 3 файла, которые начинаются одинаково (blog.php, blog_item.php и blog_links.php). На самом деле это одна разметка, просто она разбита на 3 части,  оснавная - blog.php и две дочерние которые она использует. Если открыть blog.php, то можно увидеть использование метода LoadTemplate, где потключаются дополнительные разметки.

echo $this->loadTemplate('item');
// и
echo $this->loadTemplate('links');  

Переопределение их происходить точно так же как и обыной разметки. Допустим если нужно переопределить разметку материала в блоге, копируем {root}/components/com_content/views/category/tmpl/blog_item.php в нужный шаблон /templates/rhuk_milkyway/html/com_content/category/blog_item.php. 


12 

Комментарии   

 
0 Денис
12.07.2013 11:24
А какой путь должен быть например для плагина pagenavigation.php ?
 
 
0 Анна
12.12.2014 11:25
Здравствуйте! а таким образом можно переопределить любой компонент или нет, по этой статье все получилось но вот с правкой com_rsgallery2 следуя статье результатов нет, вот и вопрос как узнать можно ли переопределить, поддерживает или нет сомпонент переопределение?
 
 
0 kud
13.12.2014 08:47
Здравствуйте! а таким образом можно переопределить любой компонент или нет, по этой статье все получилось но вот с правкой com_rsgallery2 следуя статье результатов нет, вот и вопрос как узнать можно ли переопределить, поддерживает или нет компонент переопределение?
 
 
0 ильдар
09.08.2016 16:15
а после обновления джумлы нужно вручную вносить правки в свои переопределения?