Модуль Prestashop — Вывод атрибутов в списке товаров

Как сделать модуль для Prestashop? Разберем на примере создания модуля Attribute Wizard Regular. Который разрешает пользователям выбирать атрибуты для продукта на странице категорий. В дальнейшем этот модуль можно будет расширить до того, чтобы покупатели могли выбрать свойства (атрибуты) товара на на главной, в блоке новинок, в блоке популярных товаров и т.д.

Это одно из достоинств Prestashop — расширяемость. Когда с помощью дополнительных модулей можно добавить новые функции для интернет-магазина, не изменяя функций системы.

Модуль Prestashop Product list attributes

 

В итоге должно получиться так.

 

 

Общие шаги при создании модуля Prestashop, это создание архитектуры модуля, создание класса, создание шаблона и т.д.

Модули Prestashop

 

Все модули расположенны в паке /modules/

 

Структура модуля Prestashop.

Все модули используют ту же базовую структуру, что облегчает их создание.

Первое, с чего начинается создание модуля — это название.  Будем называть наш модуль «Attribute Wizard Regular».

Создание первого файла модуля. Он должен иметь такое же имя, что и модуль, без пробелов, и только буквенно-цифровые символы, тире «-» и знак подчеркивания «_», в нижнем регистре:

/modules/attributewizardregular/attributewizardregular.php

Этот файл PHP, который содержит большинство методов, с помощью которых можно выполнить нашу задачу — вывод атрибутов в списке товаров.

Формат (шаблон) вывода данных определяется в файле TPL. Который так-же разместим в корневой папке модуля. Для шаблона TPL можно выбрать любое имя, хорошая практика, чтобы дать то же имя, что и основная папка и файл PHP.

attributewizardregular.tpl

Файл

attributewizardregular.php

должен начинаться со следующего :

if (!defined('_PS_VERSION_'))  exit;

Цель — запретить доступ к файлам напрямую минуя систему.

Также этот файл должен содержать описание класса модуля. PrestaShop использует методы объектно-ориентированное программирования. Этот класс должен иметь то же имя, что и модуль, и папки. Формат названия — CamelCase. Кроме того, этот класс должен расширять общий класс Module и наследовать все его методы и атрибуты. Он так-же может породить любой класс, производный от класса Module: PaymentModule, ModuleGridEngine, ModuleGraph

attributewizardregular.php 
<?php
  if (!defined('_PS_VERSION_'))
    exit; 

  class AttributeWizardRegular extends Module
  {
    public function __construct()
    {
      $this->name = 'attributewizardregular';
      $this->tab = 'front_office_features';
      $this->version = 1.0;
      $this->author = 'SeoMan';
      $this->need_instance = 0;

      parent::__construct();
      $this->displayName = $this->l('Attribute Wizard Regular');
      $this->description = $this->l('Displays product attributes.');
    }

    public function install()
    {
      if (parent::install() == false)
    return false;
      return true;
    }
  }
?>

Так должен выглядеть этот файл на данном этапе. Продолжение …