Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

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

Темы дизайна. Описание.

Начиная с версии коробки 1.10.0 появилась возможность создавать свои темы дизайна. Это позволит локализовать свои правки и избежать больших проблем при обновлении.
Для добавления новой темы дизайна вам необходимо скопировать стандартную тему дизайна /themes/lite/ и назвать её, например, /themes/custom. После этих действий в админке в разделе Конфигурация › Система › Общие выберите тему custom как активную:

Image Added

Такая организация кода позволит при обновлении не затирать js и css файлы вашей уникальной темы.

Важно! Если вам необходимо изменить несколько шаблонов и нет необходимости полного изменения в дизайне, то лучше воспользоваться созданием папки /themes/lite/viewscustom/ .

Правила кастомизации

Все стандартные шаблоны расположены в папке templates/ или в папке views/ - для нового шаблона.     

...

Мы всем рекомендуем создать так называемый "плагин".

В данной теме мы рассмотрим пример такого плагина:
http://forum.opentao.net/files/plugin_example.zip

Данный архив необходимо распаковать в папку packages в корне сайта (если папки packages нет - создайте её).

Немного о структуре файлов в плагине.
Плагин должен располагаться в отдельной папке, в данном случае `example`.
В папке должен быть php файл ИмяКлассаPlugin.class.php содержащий php class ИмяКлассаPlugin, в нашем случае это ExamplePlugin.class.php и класс ExamplePlugin.
Так же обязательно должен быть файл config/events.xml - в нем описаны все события на которые реагирует класс. Синтаксис вызова события:
<event name="имяСобытия" pakage_path="имя_папки_плагина" class_name="ИмяКлассаPlugin" />

В нашем случае это:
<event name="onTopMenuRender" pakage_path="example" class_name="ExamplePlugin" />

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

Итак - что же делает наш плагин? Пока по файлу events.xml мы можем понять, что после того как на сайте появится верхнее меню - у нас должен выполниться php код:
ExamplePlugin:: onTopMenuRender()

Открыв файл ExamplePlugin.class.php мы увидим, что метод onTopMenuRender просто выводит еще один пункт меню в верхнее меню сайта, дополнительно проверяя не является ли он текущим.

Далее заглянем в файл config/script_controller.xml. В нем описана конфигурация нашего контроллера, который будет отвечать за всю логику которую мы желаем создать.
Наша цель - вывести страницу: шапка + наш контент (формирующийся по условию) + футер.

Посмотрим наш файл script_controller.xml
<controller>
<script name='example-alias'>
<template name='/../packages/example/templatescustom/example_template' />
<blocks>
<block name='HeaderNew' />
<block name='Example' path="example/blockscustom" />
<block name='FooterNew' />
</blocks>
</script>
</controller>

Строка <script name='example-alias'> означает что при переходе по url:
http://site-name.ru/example-alias у нас будет выведен шаблон: example_template.html (который находится по адресу packages/example/templatescustom/). Он содержит в себе вывод блоков HeaderNew, Example и FooterNew - поэтому подключаем их как показано в примере. Для блока Example - необходимо указать путь, в данном случае мы будем хранить наши блоки в папке blockscustom, находящейся в папке нашего плагина.

В блок Example нам осталось:
- указать название шаблона, на основе которого он будет создаваться:
protected $_template = 'post';
- указать в какой папке хранится данный шаблон:
protected $_template_path = '/../packages/example/templatescustom/views/';
- реализовать свою логику метода setVars()

В нашем случае мы получаем переменную из массива $_GET['id']:
$id = $this->request->getValue('id', 0);

и в наш шаблон post.html передаем переменную $post:
$this->tpl->assign('post', $post[$id]);

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

Правила обновления кастомизированных сайтов

...