Автор Тема: Override контроллеров prestashop из модуля  (Прочитано 124 раз)

25 Август 2019, 18:34:37
  • Пользователь
  • **
  • Сообщений: 86
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый вечер!
Нужно из модуля сделать override контроллера prestashop.

Видел некоторые модули содержат в себе папку override с override классами контроллеров.

Создал в папке Модуля папку /override/controllers/front/listing , создал в нем override контроллер CategoryController.php c содержимым:

<?php
/**
 * override Category Controller
 */

class CategoryController extends CategoryControllerCore
{
    protected function 
getImage($object$id_image)
    {
        
$retriever = new ImageCustomRetriever(
            
$this->context->link
        
);
        
        return 
$retriever->getImage($object$id_image);
    }

}

Но из модуля это измененный метод не подцепляется.

А если перенести CategoryController.php  в системный override prestashop (т.е. в папку /override/ которая в корне сайт) , то изменение метода подцепляется.

Неужели нельзя подключит overrride прямо из модуля и все модули копируют override в системный override prestashop?

Также не удобно, а если у меня и так есть override контроллера, то модуль может скопировать свой override и перетереть мой?
26 Август 2019, 09:58:36
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22676
  • Репутация: +17133/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В /override/controllers/front/ нет папки listing, создайте ее в модуле и устанивите разрешение на редактирование.
$listing = _PS_OVERRIDE_DIR_.'controllers/front/listing/';
if (!file_exists($listing)) {
    mkdir($listing, 0777);
}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
26 Август 2019, 12:31:48
Ответ #2
  • Пользователь
  • **
  • Сообщений: 86
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В /override/controllers/front/ нет папки listing, создайте ее в модуле и устанивите разрешение на редактирование.
$listing = _PS_OVERRIDE_DIR_.'controllers/front/listing/';
if (!file_exists($listing)) {
    mkdir($listing, 0777);
}

Когда я написал, что создал в папке модуля   "/override/controllers/front/listing" , я имел ввиду что полный путь такой: /modules/module_name/override/controllers/front/listing/ .
Но все равно из папки модуля не работает override.
26 Август 2019, 21:00:36
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22676
  • Репутация: +17133/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В /override/controllers/front/ нет папки listing, создайте ее в модуле и устанивите разрешение на редактирование.
$listing = _PS_OVERRIDE_DIR_.'controllers/front/listing/';
if (!file_exists($listing)) {
    mkdir($listing, 0777);
}
В конструктор модуля добавьте или в install
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
27 Август 2019, 14:40:45
Ответ #4
  • Пользователь
  • **
  • Сообщений: 86
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
спасибо.
Но я не совсем понимаю зачем добавлять этот код.
У меня есть папка listing по путям:

/override/controllers/front/listing/

/controllers/front/listing/

/modules/ps_image_category_map/override/controllers/front/listing/
27 Август 2019, 15:14:38
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22676
  • Репутация: +17133/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Если в модуле есть папка mymodule/override/class/... или mymodule/override/controllers/..., Prestashop автоматически определяет функции переопределения.
Исключения бывают когда не создана папка в /override/controllers/... или нет прав на создание и изменение папки и файлов.
Поэтому в конструкторе модуля проверяю есть ли папка, разрешена ли запись ...
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.