Краткое описание эха для родственных продуктов

Есть ли способ дать эхо краткое описание связанного продукта foreach?

Я попытался использовать этот код, но он не отображает описание каждого продукта:

<?php echo nl2br($this->getProduct()->getDescription()) ?>

также

<?php echo $_helper->productAttribute($_item, nl2br($_item->getShortDescription()), 'short_description') ?>

Есть ли способ сделать это для сопутствующих продуктов? Если кто-нибудь знает, пожалуйста, укажите мне в правильном направлении.

<?php if($this->getItems()->getSize()): ?>
<div class="block block-related">
    <div class="block-title">
        <?php echo $this->__('Related Products') ?>
    </div>
    <div class="block-content">
        

<?php echo $this->__('Check items to add to the cart or add to your wishlist') ?> 

<div class="form-horizontal"> <?php foreach($this->getItems() as $_item): ?> <div class="control-group"> <div class="controls"> </div> </div>
<?php endforeach ?> </div> </div>
0
nl ja de
У вас есть список продуктов? Если да, покажите нам код, в котором хранятся ваши продукты.
добавлено автор CE_REAL, источник
Я вижу много кода, который не делает его намного яснее. Связанные проекты в другом списке/массиве? Или они просто извлекаются с помощью функции продукта, например $ porduct-> getRelatedProduct ()?
добавлено автор CE_REAL, источник
@CE_REAL См. Код выше ^ - это список, отображающий связанные элементы на странице CMS. Мне просто нужно показать описание элемента foreach в списке ...
добавлено автор user1704524, источник

2 ответы

Have you tried nl2br($this->getProduct($_item)->getShortDescription()) ?

It might be that the value for short description isn't loaded for related products by default. You could try to do a $_item->load($_item->getId()) and then use $_item->getShortDescription().

1
добавлено
Сделано: <? PHP $ _item-> getShortDescription ()?> Спасибо, много чувак!
добавлено автор user1704524, источник

after TRYING $_item->load($_item->getId()) and echoing the shortDescription, you should look for the Collection where the related products are loaded. In this collection the attribute short_description is not loaded with.

Если вы загружаете каждый продукт, вы делаете много запросов к базе данных, что будет стоить большой производительности. Это не нужно. Альтернативой является:

$relatedProductCollection->addAttributeToSelect('short_description');

Вопрос заключается в том, чтобы найти $ relatedProductCollection .

ОБНОВИТЬ: Я вкопался в код (Reference is v. 1.7.0.2):

// app/code/core/Mage/Catalog/Block/Product/List/Related.php:61
$this->_addProductAttributesAndPrices($this->_itemCollection);

// app/code/core/Mage/Catalog/Block/Product/Abstract.php:410
$collection
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())

// app/code/core/Mage/Catalog/Model/Config.php:260
$this->getAttributesUsedInProductListing()

Это следует интерпретировать как: Когда загружаются «связанные продукты», загружаются все атрибуты, которые также используются в списке продуктов. Проблема может быть: short_desciption загружается по умолчанию. Поэтому удалите вызов load() и проверьте, что атрибут short_description "используется в списке продуктов". Если установлено значение «да», моя интерпретация неверна.

Тем не менее, решение по загрузке каждого продукта - это дерьмо.

РЕДАКТИРОВАТЬ: Я добавил следующую строку в Related.php

$this->_itemCollection = $product->getRelatedProductCollection()
->addAttributeToSelect('required_options') 
->addAttributeToSelect('short_description') 
->setPositionOrder() 
->addStoreFilter() 

And using this line does echo a descrtiption foreach product but it is the Same description getProduct()->getDescription()) ?>

You need to <?php echo ($this->getProduct()->getShortDescription()) ?>

But editing the core code is a bad way to change the magento behaviour as well. Here is described how to rewrite a block, but I don't think this is necessary. http://prattski.com/2010/06/24/magento-overriding-core-files-blocks-models-resources-controllers/

0
добавлено
У вас нет опыта с пурпуром, не так ли? Это был пример кода. Ваша задача - загрузить объект, описанный в описании @Lucasmus. Но проблема в том, что вы загружаете каждый объект как отдельный элемент и для каждого продукта, запускающего SQL-запрос. Это трата ресурсов. Когда это работает. Это означает, что коллекция, которая используется для загрузки продуктов, не загружает атрибут EAV short_description ... отредактировал ответ
добавлено автор Fabian Blechschmidt, источник
хорошо, вы знаете очень важный базис! :-) Проблема с перезаписью core-model/block этим методом заключается в том, что после обновления используется старый (локальный) код, а не новый. Поэтому лучшей альтернативой является переписать блок, поскольку я связан в ответ, поэтому только один метод перезаписывается, а остальное наследуется. Если вы обновите magento (и первый класс блока), будут использованы только ваши изменения, а не весь старый класс
добавлено автор Fabian Blechschmidt, источник
Да. Загрузка каждого продукта в цикл является плохой практикой. Вы можете получить это, просто добавив атрибут в select. Проблема в том, что вы должны найти нужное место, чтобы получить класс коллекции. Как я уже писал выше, я думаю, что связанные продукты загружаются с атрибутами, определенными для листинга продукта (aka category page), поэтому легко добавить краткое описание к коллекции в бэкэнд.
добавлено автор Fabian Blechschmidt, источник
@Fabial Blechschmidt Я получаю эту ошибку: Неустранимая ошибка: вызовите функцию-член addAttributeToSelect() для не-объекта в
добавлено автор user1704524, источник
Я переместил файл в локальную папку, да, я очень новичок в Magento, поэтому я попросил некоторую помощь. Я не уверен, правильный ли метод, который я использовал, или если я должен его изменить?
добавлено автор user1704524, источник
Я делаю все изменения файлов в локальном пуле кодов. Я знаю, что я никогда не должен редактировать основную файловую систему.
добавлено автор user1704524, источник
@FabianBlechscmidt Спасибо за вашу помощь и советы. Мои знания растут с каждой проблемой или настройкой. Не могли бы вы сказать, что использование фрагмента кода в ответе - плохая практика? Причина, по которой я спрашиваю, заключается в том, что я хочу только, чтобы short_description отображался на моих пользовательских страницах CMS.
добавлено автор user1704524, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp