Детальный анализ модуля Prestashop 1.5 (часть 3)

modules prestashopСегодня мы закончим создавать наш первый модуль.В прошлой статье я упомянул о переменной my_module_link эта переменная указывает на ссылку для внедрения модуля
в шаблон магазина, то есть на страницу модуля. getModuleLink(‘mymodule’, ‘display’) где mymodule-название модуля, а display-контроллер модуля. Имя
контроллера должно быть понятно для пользователей, так как будет отображаться в строке браузера при включенном ЧПУ и вы должны будете придумать для своих
модулей свои названия. Создаем файл display.php и открыв его редактором впишем простое предложение, например

“Добро пожаловать!” Затем поместим этот файл согласно структуры модулей в версии 1.5 в директорию модуля mymodule/controllers/front/. Перейдем на главную станицу нашего сайта и кликнем по ссылке Click me нашего модуля. И если ЧПУ магазина не включено то в браузере вы увидите строку:

ваш сайт/index.php?fc=module&module=mymodule&controller=display&id_lang=1.

Обратите внимание на строки module=mymodul и controller=display это как раз то ,о чем я говорил выше. Теперь включим ЧПУ сайта и посмотрите на строк в браузере при переходе по ссылке click me она будет выглядеть следующим образом:

ваш сайт/en/module/mymodule/display

На самом деле мы можем создать ссылку для контроллера и в таком варианте

 

Но в таком варианте при включении ЧПУ наша строка в браузере не измениться. Но зато появиться возможность добавлять для модуля мета теги.  Зайдите в бэк- офисе в настройки->SEO и URL . Нажмите на кнопку добавить новый Выберите страницу модуля mymodule-dislay и заполните все поля. Теперь при переходе на страницу с включенным ЧПУ и первым вариантом ссылки мы попадем на страницу ошибки 404.  Со вторым вариантом ссылки этого не будет и для модуля будут созданы мета теги, которые можно будет увидеть, если просмотрите код страницы. С чем все это связано пока информации не нашел.

Ну да ладно, вернемся к основной теме. Создадим правильный контроллер display.php

 
Он содержит класс mymoduledisplayModuleFrontController, который расширяет класс ModuleFrontController. initContent() метод вызывает родительский класс parent::initContent(), который в свою очередь вызывает setTemplate () метод с шаблоном контроллера display.tpl. Размещается этот файл в директории

mymodule/views/templates/front/

Теперь мы можем в файле display.tpl разместить код который будет выводиться на странице модуля. Если нам нужно будет добавлять какие то изменения в шаблоне, то необходимо будет создать в основном файле модуля переменную ‘my_module_message’ => $this->l(‘This is a simple text message’) и включить эту переменную в шаблон контроллера

Добро пожаловать!{$my_module_message}

Для того чтобы изменять значение переменной my_module_message сделайте изменения в файле mymodule. php для этой переменной по аналогии с переменной my_module_name.

Немного о переводе модулей.

Лично я не использую эту функцию во всех модулях, а пишу все по русски,за что меня обвинил один из моих клиентов в русофобстве.  Ну это его право.  Итак для возможности перевода модуля необходимо все константы шаблона смарти заключать в {Ls = ‘XXX’ Mod = ‘YYY’}.  Например в файле mymodule. tpl слово Welcome заключенное в теги

Welcome!

необходимо записать так

 

Запись в таком формате вызовет в prestashop определенный метод, который позволяет регистрировать строки для перевода в панели модуля.

Готовый модуль выкладываю на сайт , в качестве бонуса в архив добавляю еще один модуль Sceleton, который был написан не мной(об авторе узнаете в настройках
модуля) и который можно использовать в качестве скелета для создания своих модулей для prestashop версии 1.5. Он имеет больше настроек и подойдет начинающим.
Не все так сложно как кажется, главное в этом деле-терпение и желание.

До встречи на страницах webnewbie.ru

Leave a Reply