![]() |
Ссылка на сообщение #1 | ||
Administrator
|
![]()
Добрый день.
Уважаемый пользователи, нас часто спрашивают как правильно создать страницу со своей логикой и контентом. Мы всем рекомендуем создать так называемый "плагин". В данной теме мы рассмотрим пример такого плагина: 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]); Если у Вас возникли вопросы или проблемы: обратитесь, пожалуйста, в нашу службу технической поддержки. Самые популярные вопросы мы будем публиковать в этой теме. Спасибо. |
||
|
|||
За это сообщение автора поблагодарили: BTC (1), Валерия (14), Виктория Логачева (6), Данияр (20), Анна Сердюкова (1). |
![]() |
Ссылка на сообщение #2 | ||
Administrator
|
Обратная сторона медали.
К сожалению, плагины не являются панацеей при кастомизации Вашего сайта. После обновлений редко, но могут возникать проблемы в работе плагинов. Важно отметить, что проблемы будут в работе плагинов, а не в работе сайта и это ключевое отличие от обычного копирования html шаблонов в папку templatescustom. Не смотря на то, что мы заявляем, что за поддержку и работоспособность плагинов отвечает только клиент - Вы можете обращаться в нашу службу технической поддержки за консультациями - мы будем всячески стараться помочь Вам в решении Ваших проблем. Спасибо за Ваше понимание. |
||
|
|||
За это сообщение автора поблагодарили: Валерия (14). |
![]() |
Ссылка на сообщение #3 | ||
Administrator
|
Примечания:
Если у Вас не включено ЧПУ (человеко понятные url), то на страницу, генерируемую плагином, можно попасть по адресу: http://site-name.ru/index.php?p=example-alias |
||
|
![]() |
Ссылка на сообщение #4 | ||
Кастомизация сайтов OT
|
Цитата:
Сообщение от Гончаров Игорь
![]() Добрый день.
Уважаемый пользователи, нас часто спрашивают как правильно создать страницу со своей логикой и контентом. Мы всем рекомендуем создать так называемый "плагин". В данной теме мы рассмотрим пример такого плагина: 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]); Если у Вас возникли вопросы или проблемы: обратитесь, пожалуйста, в нашу службу технической поддержки. Самые популярные вопросы мы будем публиковать в этой теме. Спасибо. |
||
|
![]() |
Ссылка на сообщение #5 | ||
Участник
|
Спасибо за пост. Все получилось!!!!
|
||
|
![]() |
Ссылка на сообщение #6 | ||
Administrator
|
Текущая тема про плагины устарела. Свежую информацию про плагины можно прочитать тут:
http://forum.otcommerce.com/forums/s...ad.php?t=49124
__________________
Руководитель отдела РНР-разработки. |
||
|
|
Теги |
кастомизация, кастомизация сайта, плагин |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Очередной пример нелогичности решения: отображение товара выше некоторой минимальной цены | anyproduct.ru | Рабочие вопросы | 3 | 12.07.2013 10:47 |
Пример создания доставки EMS. | Гончаров Игорь | База Знаний | 0 | 07.06.2013 11:46 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|