Поиск по этому блогу

вторник, 3 ноября 2015 г.

Изучаем Joomla. Переопределение шаблона (template override) и макетов (Layout Overrides)

Чтобы понять, работу с шаблонами в движка Joomla нужно было разобратьс с такими понятиями, как Layout Template, Ntmplate overrides, Layout overrides, custom css, template manager После просмотра нескольих статей догадался посомтреть документацию Джумлы. Здесь есть даже страница на русском. Только после сравния перевода с оригиналом начал привыкать к терминологии. Кроме того, здесь же и ссылки на страницы документации, в которых описывается структура папок шаблонов.

How to use the Template Manager
Как использовать менеджер шаблонов
Layout Overrides in Joomla -
How to override the output from the Joomla! core
Understanding Output Overrides -то, что в документации именуется "теоретическими основами" - понятие "override" основано на... It stands for Model-View-Controller and the concepts behind MVC are responsible for the extra flexibility that is now afforded to the designer
Chrome - это конечная обработка html-кода модуля перед его вставкой в главный шаблон сайта. Существуют несколько предопределенных Chrome-стилей (table, horz, xhtml, rounded, outline), но не всегда то что есть подходит для решения текущих задач.

Adding your own CSS rules to a template
Add a custom stylesheet to the Protostar template
Customize Your Joomla Templates by Learning Overrides

Менеджер

На странице админки "Templates: Customise" я кликнул по ссылке "content" в правом столбце (Layouts)

In [2]:
from IPython.display import Image
In [3]:
Image('/home/kiss/Desktop/Joomla_template_override.png')
Out[3]:
In [ ]:
 

Message

Override created in /templates/protostar/html/layouts/joomla/content

Successfully created the override.

In [4]:
!cd /var/www/jm_34_2/templates/protostar
In [7]:
!ls -h /var/www/jm_34_2/templates/protostar
component.php  html   js         template_preview.png
css        images   language        template_thumbnail.png
error.php      img   less
favicon.ico    index.php  templateDetails.xml
In [9]:
Image('/var/www/jm_34_2/templates/protostar/template_preview.png')
Out[9]:
In [10]:
!ls -h /var/www/jm_34_2/templates/protostar/html
layouts  modules.php  pagination.php
In [12]:
!ls -R /var/www/jm_34_2/templates/protostar/html/layouts
/var/www/jm_34_2/templates/protostar/html/layouts:
joomla

/var/www/jm_34_2/templates/protostar/html/layouts/joomla:
content  system

/var/www/jm_34_2/templates/protostar/html/layouts/joomla/content:
associations-20151101-072029.php
associations.php
blog_style_default_item_title-20151101-072029.php
blog_style_default_item_title.php
blog_style_default_links-20151101-072029.php
blog_style_default_links.php
categories_default-20151101-072029.php
categories_default_items-20151101-072029.php
categories_default_items.php
categories_default.php
category_default-20151101-072029.php
category_default.php
icons-20151101-072029.php
icons.php
info_block
intro_image-20151101-072029.php
intro_image.php
options_default-20151101-072029.php
options_default.php
readmore-20151101-072029.php
readmore.php
tags-20151101-072029.php
tags.php

/var/www/jm_34_2/templates/protostar/html/layouts/joomla/content/info_block:
author-20151101-072029.php  hits-20151101-072029.php
author.php    hits.php
block-20151101-072029.php  modify_date-20151101-072029.php
block.php    modify_date.php
category-20151101-072029.php  parent_category-20151101-072029.php
category.php    parent_category.php
create_date-20151101-072029.php  publish_date-20151101-072029.php
create_date.php    publish_date.php

/var/www/jm_34_2/templates/protostar/html/layouts/joomla/system:
message.php

А теперь кликнем по "com_content" во втором столбце Components (см. картинку выше)

И ничего не создается, надо уточнить выбор. Кликаем в раскрывшемся списке по "article" и получаем

Message

Override created in /templates/protostar/html/com_content/article

Successfully created the override.

Снова распечатываем содержание папки

In [13]:
!ls -h /var/www/jm_34_2/templates/protostar/html
com_content  layouts  modules.php  pagination.php

Здесь система создала новую подпапку com_content (сравните с In [10])

До появления опций override в админке надо было это проделывать вручную..., а там некоторы подпаки исключались при копировании и вставке... Теперь все намного проще... Подробности о путях к компонентам и модулям можно посмотреть в документации Understanding Output Overrides (список в начале поста)

In [ ]:
    1 Introduction
    2 MVC 101
        2.1 Template versus Layout
        2.2 Ancillary Customisation
        2.3 Ancillary Customisation:Chrome
        2.4 Ancillary Customisation:Pagination
    3 Component Output Types and Layout Overrides
        3.1 Output Types
        3.2 Layouts
        3.3 Copying or Creating Layout Files
        3.4 Overriding Sub-Layouts
    4 Module Layout Overrides
        4.1 Copying or Creating Layout Files
    5 Module Chrome
    6 Pagination Links Overrides
    7 Media Files Override
        7.1 Supporting Media Files Override
    8 Cheat Sheet
        8.1 Customise the Component Output
        8.2 Customise the Module Output
        8.3 Add New Module Styles
        8.4 Customise the Pagination Links
    9 Conclusion

Одно важное замечание: Стобы реализовать концепцию MVK достаточно создать подпапку tmpl и поместить туда все фалы, формирующие вид html страницы. TEMplate Layout - TMPL - может быть здесь исток терминологической путаницы и ключ для понимания дурацкого термина "Стиль-слой шаблона" и неточного, но более правильного "Макет шаблона"

The structure for component overrides is quite simple: /html/com_component_name/view_name/layout_file_name.php. Let's look at a few examples.

The rhuk_milkyway template does not have any layout overrides for any components. If we want to override the default layout for an article, first we need to copy this file:

In [ ]:
#                   /components/com_content/views/article/tmpl/default.php

to this location, creating the appropriate directories in the event they don't already exist:

In [ ]:
# /templates/rhuk_milkyway/html/com_content/article/default.php


Посты чуть ниже также могут вас заинтересовать

1 комментарий:

PoL комментирует...

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