Создание модуля своими руками

заставкаК сожалению у меня очень мало времени для занятия своим хобби. И все же не спеша, я буду  публиковать свои записи. Сегодня я расскажу вам как можно сделать свой  простой модуль для PrestaShop не имея знаний программирования.  Надеюсь эта статья поможет сэкономить средства на начальном этапе развития вашего магазина. А создавать мы будем модуль слайдер на главной странице.

Итак, нам понадобятся три вещи:

1. модуль DDLX_editor- редактор создания модулей, который сделает автоматически для нас файлы нашего нового модуля

2. Бесплатный урок по созданию  Слайдера на CSS3 (подобных ресурсов много в сети, но мне по душе этот)

3.Программа Notepad++  и немного смекалки, без нее никак.

Выбираем версию модуля ddlx_editor для вашей версии Prestashop. Закачиваем на ваш сайт в папку http:// ваш сайт/modules устанавливаем как обычный модуль и заходим в настройкиадминка эдитора

Теперь достаточно ввести название нашего нового модуля, назовем его proba_gallery и нажимаем сначала кнопку verify name и после подтверждения имени модуля нажимаем на Create module (создать модуль). Половина работы сделана. Находим вновь созданный модуль в папке modules нашего сайта, папка модуля так и будет называться proba_gallery. Открываем папку

файлы модуля

Как видим модуль состоит из пяти файлов, для работы нам понадобятся только два: proba_gallery.php и proba_gallery.tpl . По простому файл php предназначен для установки модуля и настройки, а файл tpl для будет отображать наш слайдер на сайте.

Займемся нашим фалом php. открываем его с помощью Notepad++, только не надо пугаться.

proba_gallery.php

[php]<?php
if (!defined(‘_PS_VERSION_’))
exit;

class proba_gallery extends Module{

function __construct(){

$this->name = ‘proba_gallery’;
$this->tab = ‘other’;
$this->version = 1.0 ;

parent::__construct();

$this->displayName = $this->l("proba_gallery");
$this->description = $this->l("proba_gallery");
}
function install(){

if(!parent::install()
OR !$this->registerHook(‘home’)
//OR !$this->registerHook(‘top’)
//OR !$this->registerHook(‘rightColumn’)
|| !Configuration::updateValue($this->name,”)){
return false;
}else{
return true;
}

}
/*###############*/
public function uninstall(){

if(!parent::uninstall()
|| !Configuration::deleteByName($this->name)){
return false;
}else{
return true;
}
}
/*################*/
public function getContent(){

$this->_html = ‘<h2>’.$this->displayName.’</h2>’;
return $this->_html.$this->_displayForm();
}
private function _displayForm()
{
$this->_displayFormConfig();

return $this->_html;
}
private function _displayFormConfig()
{
$this->_html = ‘
<fieldset class="width2">
<legend><img src="../img/admin/cog.gif" alt="" title="" />’.$this->l(‘Configuration’).’</legend>
<a href="http://shop.ddlx.org" target="_blank" ><img src="../modules/’.$this->name.’/ddlx_module.png" /></a><br />
<li><a href="http://seo.ddlx.org" target="_blank" ><strong>’.$this->l(‘Naturaly SEO’).’</strong></a></li>
<li><a href="http://agence.ddlx.org/nos-services/creation-de-site-e-commerce/" target="_blank" ><strong>’.$this->l(‘E-commerce Websites’).’</strong></a></li>
<li><a href="http://shop.ddlx.org" target="_blank" ><strong>’.$this->l(‘Prestashop\’s template’).’</strong></a></li>
<li><a href="http://agence.ddlx.org/nos-services/creations-graphiques/" target="_blank" ><strong>’.$this->l(‘website design’).’</strong></a></li>
</fieldset>
<br />
<fieldset class="width2">
<legend><img src="../img/admin/add.gif" alt="" title="" />’.$this->l(‘modified’).’</legend>
<li><a href="http://webnewbie.ru" target="_blank" ><img src="../modules/’.$this->name.’/logown.gif" /></a><br /></li>
<li><a href="http://http://webnewbie.ru/modules/blogwp/wordpress/" target="_blank" ><strong>’.$this->l(‘Modification module for Prestashop 1.5 from Dulko’).’</strong></a></li>
<li><a href="http://webnewbie.ru" target="_blank" ><strong>’.$this->l(‘Бесплатные модули на Webnewbie’).’</strong></a></li>
</fieldset>
‘;

$this->_html .= ‘</fieldset><br />’;
}

/*############################################*/

public function Encode($array){
$serial = serialize($array);
$encode = base64_encode($serial);
return $encode;
}

public function Decode($encode){
$decode = base64_decode($encode);
$unserialize = unserialize($decode);
return $unserialize;
}

public function hookhome($params){
global $smarty;

$smarty->assign(array(
‘name’=>$this->name

));
return $this->display(__FILE__, "proba_gallery.tpl");
}
}
[/php]

тут нам надо поправить немного в строке 22 убрать знаки //  а в строке 24 поставить эти же знаки // – в php строки за знаками не работают. И еще один штрих в строке 99 меняем hookrightColumn на hookhome. Таким образом мы привязываем модуль к хуку Home. Аналогичным способом вы сможете модуль к другим хукам, где вы хотите отобразить модуль. Например, попробуйте после с хуком top, модуль и в этом случае будет работать, но для корректного отображения следует подобрать картинки на всю ширину сайта.

Пора почитать урок по созданию слайдера и скачать  исходники

файлы примера

распакуем их в папку с нашим модулем. На этом пока закончим первую часть. Часть вторая

Comments (12)

stan
17.06.2013 - 23:06 / Ответить

а продолжение есть?

18.06.2013 - 12:49 / Ответить

Да, есть. Ссылку для второй части добавил.

Alexey
07.07.2013 - 14:31 / Ответить

А как сделать чтобы модуль был в правой колонке?

07.07.2013 - 17:10 / Ответить

Если на этом примере посмотрите в коде регистрацию модуля в хуке, строка 22 OR !$this->registerHook(‘home’) здесь хук указан home-то есть в центральная колонка на главной. А вам надо заменить ее на rightColumn. Либо раскоментировать 24 строку и закоментировать 22. Затем меняете публикацию шаблона в зарегистрированном хуке, для этого в строке 99 public function hookhome($params) меняете hookhome на hookrightColumn.

Camel Trophy
24.07.2013 - 10:45 / Ответить

Здравстуйте, Евгений!
Расскажите пожалуйста о хуках расположения модулей?
И по 99 строке из примера выше. Правильно ли я понял, что к hook прибавляем расположение модуля?

24.07.2013 - 13:14 / Ответить

Хукам будет посвящена отдельная статья, в двух словах не рассказать.
В строке 22 происходит регистрация модуля в хуке home, а в строке 99, Вы правы, указываем, что в хуке home модуль будет отображаться.

Camel Trophy
24.07.2013 - 13:27 / Ответить

Спасибо, Евгений!
Вы доходчиво объясняете! Буду с нетерпением ждать статьи про hook’и.
Подписался на рассылку, очень полезный сайт.
Так держать!

Tamara Rettig
13.11.2013 - 00:26 / Ответить

очень полезные советы

Дмитрий
14.03.2014 - 19:00 / Ответить

Модуль ddlx установился через загрузку архива, но почему то модули которые я им создаю и устанавливаю не появляются в папке modules. А так же модули не устанавливаються через копирование папки в modules. Пожалуйста помогите в моей затупке)

15.03.2014 - 05:05 / Ответить

Архив содержит два модуля для версий 1.4 и 1.5, его следует распаковать и залиль по ftp нужную версию на сайт

Алексей
04.08.2014 - 00:54 / Ответить

Вот бы такой же да для 1.6 :)

04.08.2014 - 04:22 / Ответить

Для 1.6 практически тоже самое за исключением некоторых нюансов. Почитайте официальную документацию doc.prestashop.com/display/PS16/Creating+a+PrestaShop+Module

Leave a Reply