Я изучаю основы разработки модулей в Prestashop (1.7.4.3). У меня проблема с установкой нового модуля в систему.
Это мой файл для нового модуля, расположенный по адресу: modules/mymodule/mymodule.php:
<?php
if (!defined('_PS_VERSION_'))
exit;
class MyModule extends Module
{
public function __construct()
{
$this->name = 'mymodule';
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'Firstname Lastname';
$this->need_instance = 0;
$this->ps_versions_compliancy = [
'min' => '1.6',
'max' => _PS_VERSION_
];
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('My module');
$this->description = $this->l('Description of my module.');
$this->confirmUninstall = $this->l('Are you sure you want to uninstall?');
// parent::install();
// this code is executed
if (!Configuration::get('MYMODULE_NAME')) {
$this->warning = $this->l('No name provided');
}
}
public function install()
{
// die('install method');
// this code is never executed
return parent::install();
}
}
Стандартный шаблон модуля, как видите. Когда я захожу на вкладку модулей в BackOffice, я не вижу свой модуль в списке доступных модулей.
Во время отладки я попытался поместить вызов функции установки в тело __constructor (), и это сработало. Я не вижу причин, по которым __construct () выполняется, а install () - нет.
Разрешения для папки модулей установлены на 777. Prestashop устанавливается в общую папку Virtual Box хоста Windows / гостя Ubuntu.
Редактировать: Я установил Prestashop 1.6.1.22 (в той же среде, что и PS 1.7), и вышеупомянутый модуль с самого начала работал как шарм. Похоже, проблема с PS 1.7
Чтобы доказать себе, что я не делаю какой-то основной ошибки, я установил новый экземпляр Prestashop на локальном хосте XAMPP. Затем я поместил вышеупомянутый файл на modules/mymodule/mymodule.php. Затем я пошел в Backoofice -> Modules -> Modules & Services. Я должен видеть «Мой модуль» в разделе «Установленные модули», верно? Ну, его там нет.
Какую версию php вы используете? Потому что короткий массив, используемый в ps_versions_compliancy, доступен с php 5.4+
Я пробовал: php-5.6 на xampp и php-7.0 на ubuntu
Ваш модуль должен быть указан на вкладке «Модули» -> «Модули и службы» -> «Выбор», пока вы его не установили, и только затем на вкладке «Установленные модули». Так что проверьте это, наверное, это единственная проблема






Я скопировал именно то, что ты наклеил, и отлично заработало!