Бортовой журнал Ктулху

Создание модуля Prestashop 1.6

Краткая инструкция по созданию простейшего модуля Prestashop 1.6, описание всех необходимых шагов, в конце получаем готовый рабочий модуль.

Для суровых прогеров все уже написано и расписано в официальной документации, если вы такой, можно не читать дальше, если нет - читать категорически рекомендуется.

 

1. Создать папку с именем модуля, например testmodule.

2. В папке создать файл testmodule.php.

3. Для шаблона фронтенда создать следующие папки: /views/templates/hook

4. Логотип logo.png

 

Файл testmodule.php

Проверка версии Prestashop

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

Класс модуля должен называться как папка модуля

<?php
if (!defined('_PS_VERSION_'))
exit;
class TestModule extends Module
{
}

Функция _construct

<?php
if (!defined('_PS_VERSION_'))
exit;
class TestModule extends Module
{
public function __construct()
{
$this->name = 'testmodule';
$this->tab = 'other';
$this->version = '1.0.0';
$this->author = 'Дарт Вейдер';
$this->need_instance = 0;
$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Test module2');
$this->description = $this->l('Description of my module.');
$this->confirmUninstall = $this->l('Are you sure you want to uninstall?');
if (!Configuration::get('MUMODULE_NAME'))
$this->warning = $this->l('No name provided');
}

 

Функция install

В этой функции наиболее интересна строка !$this->registerHook('aftertop'). Это значит, что модуль будет устанавливаться в хук aftertop. Там может быть указан любой из стандартных хуков.

public function install()
{
if (Shop::isFeatureActive())
Shop::setContext(Shop::CONTEXT_ALL);
if (!parent::install() ||
!$this->registerHook('aftertop') ||
!Configuration::updateValue('TESTMODULE_NAME', 'my friend')
)
return false;
return true;
}
 

Функция hookAfterTop($params)

Эта функция отвечает за вывод содержимого, например выборки из БД в массив.

Здесь можно написать обычный mysql запрос или использовать выборку с помощью API. Например, этот запрос выведет список категорий. Эта функция передаст массив в шаблон $this->context->smarty->assign('mess', $arr ).

$query = "SELECT * FROM ps_category_lang LIMIT 0, 20";
$res = Db::getInstance()->executeS($query);
$i = 0;
foreach ($res AS $row) {
$arr[] = '
'.$row['name'].'
';
++$i;
}
$this->context->smarty->assign('mess', $arr );

Шаблон модуля

Для вывода массива используем обычный foreach.

<div id="testmodule_block" class="block">
<h3>Название</h3>
{foreach from=$mess item=foo}
{$foo}
{/foreach}
</div>

 

Итого

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

Мой модуль prestashop 1.6

Устанавливаем...

Мой модуль Prestashop 1.6 установился

Установился!

Тестовый модуль Prestahop 1.6 вывод категорий

И выводит список категорий.

Теперь, когда сила прочитавшего статью возросла, можно попробовать написать свой запрос и свои стили.

Как всегда рабочий модуль во вложении.

 

Вложения:
ФайлОписаниеРазмер файла:
Скачать этот файл (testmodule.zip)testmodule.zipТестовый модуль3 Кб