Автор Тема: Не устанавливается копия модуля ps_categorytree  (Прочитано 363 раз)

14 Октябрь 2019, 16:40:43
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день!
Создал копию модуля ps_categorytree.

Переименовал класс модуля, переименовал имена конфигурационных полей в которых хранятся настройки модуля.

Вот часть класса модуля с методом install() :

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

use PrestaShop\PrestaShop\Core\Module\WidgetInterface;

class Ps_CategoryTreeCatalogue extends Module implements WidgetInterface
{
    public function __construct()
    {
        $this->name = 'ps_categorytree_catalogue';
        $this->tab = 'front_office_features';
        $this->version = '2.0.0';
        $this->author = 'PrestaShop';

        $this->bootstrap = true;
        parent::__construct();

        $this->displayName = $this->getTranslator()->trans('Category tree links FOR PAGE CATALOGUE', array(), 'Modules.Categorytree.Admin');
        $this->description = $this->getTranslator()->trans('Adds a block featuring product categories. FOR PAGE CATALOGUE', array(), 'Modules.Categorytree.Admin');
        $this->ps_versions_compliancy = array('min' => '1.7.1.0', 'max' => _PS_VERSION_);
    }

    public function install()
    {
        return parent::install()
            && Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH_CATALOGUE', 4)
            && Configuration::updateValue('BLOCK_CATEG_ROOT_CATEGORY_CATALOGUE', 1)
            && $this->registerHook('displayLeftColumn');
    }
...

Переименовал Ps_CategoryTree на Ps_CategoryTreeCatalogue, а также 'BLOCK_CATEG_MAX_DEPTH' на 'BLOCK_CATEG_MAX_DEPTH_CATALOGUE' и 'BLOCK_CATEG_ROOT_CATEGORY' на 'BLOCK_CATEG_ROOT_CATEGORY_CATALOGUE' .

При установке пишет , что модуль не может быть ДЕИНСТАЛЛИРОВАН.
То есть видимо при установке модуля  метод install() возвращает false и модуль кидает на деинсталляцию.

Пробовал делать так:

    public function install()
    {
        return parent::install()
            && Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH_CATALOGUE', 4)
            && Configuration::updateValue('BLOCK_CATEG_ROOT_CATEGORY_CATALOGUE', 1);
            //&& $this->registerHook('displayLeftColumn');
    }

но та же ошибка.

А в логах сервера никаких ошибок нет.
Вроде все нормально должно быть, но уже 3 день вожусь
14 Октябрь 2019, 17:49:30
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Чтобы сделать клон модуля.
1. Переменовать папку модуля ps_categorytreemod
2. Изменить название файла в папке модуля - ps_categorytreemod.php
3. Поменять название класса
class Ps_CategoryTreeMod extends Module implements WidgetInterface
{
    public function __construct()
    {
        $this->name = 'ps_categorytreemod';
4. Поменять название констант
BLOCK_CATEGMOD_MAX_DEPTH
BLOCK_CATEGMOD_ROOT_CATEGORY
BLOCK_CATEGMOD_SORT_WAY
BLOCK_CATEGMOD_SORT
5. Изменить путь к шаблону
return $this->fetch('module:ps_categorytreemod/views/templates/hook/ps_categorytree.tpl');
Cоздание интернет сайтов Webstudio UwK
14 Октябрь 2019, 18:07:01
Ответ #2
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
извиняюсь забыл написать, что папка модуля  уже была переименована в ps_categorytree_catalogue , основной php файл модуля уже был переименован в ps_categorytree_catalogue.php и шаблон в ps_categorytree_catalogue.tpl

Константы :
BLOCK_CATEGMOD_MAX_DEPTH
BLOCK_CATEGMOD_ROOT_CATEGORY
BLOCK_CATEGMOD_SORT_WAY
BLOCK_CATEGMOD_SORT

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

Копия модуля ps_categorytree  нужна чтобы вывести дерево категорий, но в абсолютно другой верстке и другой странице
14 Октябрь 2019, 20:08:53
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Название класса и модуля должны совпадать, а у вас они разные.
15 Октябрь 2019, 10:56:16
Ответ #4
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Название класса и модуля должны совпадать, а у вас они разные.
Спасибо огромное!   :)

Совсем забыл об этом требовании