Как устранить конфликт Df_Catalog_Block_Product_List_Related и CommerceStack_Recommender_Block_Product_List_Related

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

20.11.2014 02:59

Описание проблемы:
  • Предупреждение администратору:
    Системный класс «catalog/product_list_related» типа «block» перекрывают конфликтующие между собой классы:
        Df_Catalog_Block_Product_List_Related [используется]	
        CommerceStack_Recommender_Block_Product_List_Related

  • Источник предупреждения: модуль «Рекомендации администратору»

Описание способа устранения проблемы:
Классы CommerceStack_Recommender_Block_Product_List_Related и Df_Catalog_Block_Product_List_Related не перекрывают один и те же метод родительского системного класса Mage_Catalog_Block_Product_List_Related.
Это позволяет решить конфликт стандартным способом: изменив иерархию наследования.
Если один из конфликтующих классов — класс Российской сборки Magento (имя начинается с «Df_»), то, как правило, именно его рекомендуется делать родительским классом: при таком подходе правки делаются вне Российской сборки Magento и не перетираются при обновлении Российской сборки Magento.

При этом обратите внимание, что класс CommerceStack_Recommender_Block_Product_List_Related расположен в области кода community, а класс Df_Catalog_Block_Product_List_Related — в области кода local.
По умолчанию система загружает сначала кулассы из области кода community, и только потом классы из области кода local и использует последний по порядку загрузки из конфликтующих классов.


По этой причине по умолчанию система использует класс Df_Catalog_Block_Product_List_Related, а не класс CommerceStack_Recommender_Block_Product_List_Related.
При назначении класса Df_Catalog_Block_Product_List_Related родительским надо также изменить порядок загузки классов, чтобы система использовала именно класс
CommerceStack_Recommender_Block_Product_List_Related, который, в свою очеред, станет потомком класса Df_Catalog_Block_Product_List_Related и будет наследовать его реализацию.

Конкретная инструкция по устранению проблемы:
  • Изменить иерархию наследования:
    • Файл: app/code/community/CommerceStack/Recommender/Block/Product/List/Related.php
    • Строка: 3
    • Что найти:
      class CommerceStack_Recommender_Block_Product_List_Related extends Mage_Catalog_Block_Product_List_Related

    • На что заметить:
      class CommerceStack_Recommender_Block_Product_List_Related extends Df_Catalog_Block_Product_List_Related

  • Изменить порядок загрузки конфликтующих классов:
    • Файл: app/etc/modules/CommerceStack_Recommender.xml
    • Строка: 4
    • Что найти:
      <CommerceStack_Recommender>
          <active>true</active>
          <codePool>community</codePool>
      </CommerceStack_Recommender>

    • На что заметить:
      <CommerceStack_Recommender>
          <active>true</active>
          <codePool>community</codePool>
          <depends>
              <Df_Catalog/>
          </depends>	
      </CommerceStack_Recommender>

  • Удалить кэш.


Поделиться темой: