Хорошо, сначала причина, по которой ваши атрибуты не будут загружаться. Magento использует модель EAV для хранения данных каталога. Это означает, что (в основном) каждый фрагмент данных в массиве getData поступает из объединения таблиц. Это означает, что Magento скуп на то, как он запрашивает данные из базы данных. Если вам не нужно ваше поле, оно не потрудится включить его (и сэкономит время на запрос).
Таким образом, при загрузке страницы категории каталога Magento использует Mage_Catalog_CategoryController
и действие просмотра. Через магию Magento это впоследствии вызывает Mage_Catalog_Model_Layer::getProductCollection
, который загружает все необходимые атрибуты. Как вы выбираете, какие атрибуты включить? Он получает их из конфигурации в Mage_Catalog_Model_Config::getProductCollectionAttributes
конечно! Итак, если мы хотим включить ваш новый атрибут, нам нужно изменить конфигурацию.
Глядя на файл конфигурации, путь, по которому обрабатываются загружаемые столбцы, равен frontend/product/collection/attributes
, поэтому вам необходимо добавить следующее в файл config.xml расширения:
<frontend>
<product>
<collection>
<attributes>
<display_price />
</attributes>
</collection>
</product>
</frontend>
Это добавит атрибут display_price
в список атрибутов для загрузки в коллекцию продуктов по умолчанию, и теперь вы сможете вызывать $_product->getDisplayPrice()
и получать данные, которые вы ищете.
Обязательно очистите кэш, прежде чем ожидать каких-либо изменений!
Надеюсь, это поможет.
Спасибо,
Джо