Извлеките подробную информацию из каталога продукт плоский 1 таблица


В таблице catalog_product_flat_1 мы создали пользовательский столбец custom_uid и сохранение идентификаторов клиентов

Предположим, что приведенное ниже изображение является таблицей catalog_product_flat_1. Вы можете видеть, что столбцы содержат название продукта и идентификатор клиента.

enter image description here

Мы пытаемся получить информацию о продукте из таблицы catalog_product_flat_1 и пытаемся отобразить ее в разделе Моя учетная запись . но это не привлекательно.

Означает в клиенте с идентификатором 101' учетная запись s, мы попытка отобразить Продукт 1 и продукт 2. & в идентификаторе клиента 102' с учетной записью, мы пытаемся отобразить Продукт 3

Приложение/код/локальный/Удобный/Пример/Блок - List.php

class Amasty_Example_Block_List extends Mage_Core_Block_Template
{
 public function __construct() {
        parent::__construct();
        $idc = Mage::getSingleton('customer/session')->getId();
     $customerSavedProductArray = array();
     $customerSavedProductArray = Mage::getModel('catalog/product')->getCollection()->addFieldToFilter('custom_uid',$idc)->getColumnValues("name");
//  $customerSavedProductArray = Mage::getResourceModel('catalog/product_collection')->addFieldToFilter('custom_uid',$idc)->getColumnValues("name");
    $collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*')->addAttributeToFilter('entity_id', array("in"=>$customerSavedProductArray));

    $collection->load();
    $this->setCollection($collection);
    }

Пхтмл

<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
<?php $collections = $this->getCollection(); ?>
<?php $_product = $this->getProduct(); ?>


<?php foreach ($collections as $key => $product) {

    echo $product->getName().' <br><br>';
    echo $product->getId().'<br><br>';  
    $_product = Mage::getModel('catalog/product')->load($product->getId());  

?>

Обновление

В config.xml, я использовал имя таблицы : catalog_product_flat_1

<?xml version="1.0"?>
<config>
    <modules>
        <Amasty_Example>
            <version>0.1.0</version>
        </Amasty_Example>
    </modules>
    <frontend>
        <routers>
            <example>
                <use>standard</use>
                <args>
                    <module>Amasty_Example</module>
                    <frontName>example</frontName>
                </args>
            </example>
        </routers>
        <layout>
            <updates>
                <example>
                    <file>example.xml</file>
                </example>
            </updates>
        </layout>
        <events>

        <controller_action_predispatch>
            <observers>
                <Amasty_Example>
                    <class>example/observer</class>
                    <method>onControllerActionPredispatch</method>
                </Amasty_Example>
            </observers>
        </controller_action_predispatch>
        </events>       
    </frontend>


    <global>
        <models>
            <example>
                <class>Amasty_Example_Model</class>
                <resourceModel>example_mysql4</resourceModel>
            </example>
            <example_mysql4>
                <class>Amasty_Example_Model_Mysql4</class>
                <entities>
                    <example>
                        <table>example</table>
                    </example>
                     <mydesign>
                        <table>catalog_product_flat_1</table>
                    </mydesign>
                </entities>
            </example_mysql4>
        </models>
        <resources>
            <example_setup>
                <setup>
                    <module>Amasty_Example</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </example_setup>
            <example_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </example_write>
            <example_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </example_read>
        </resources>

    </global>
</config>       
Author: Marius, 2017-06-07

1 answers

Во-первых, вы делаете это неправильно.
Вы никогда не должны вручную добавлять столбцы в любую таблицу catalog_product_flat_*.
Эти таблицы являются просто индексом активных товаров для каждого представления магазина.
При перестроении индексов эти таблицы создаются заново. Если вы добавите к нему столбец, вы потеряете его при следующем переиндексации.
Вы должны добавить атрибут продукта с именем custom_uid с флагом used in product listing, установленным в yes.
Затем все переиндексируйте.
После этого вы можете получить коллекцию продуктов для конкретный клиент, подобный этому:

$customerId = 8; //your customer id here - it can come from session
$collection = Mage::getModel('catalog/product')->
    ->addAttributeToSelect('*') // instead of * you can put an array with only the attributes you need
    ->getCollection()->addAttributeToFilter('custom_uid', $customerId);

Затем вы можете просто просмотреть коллекцию и что-то сделать с каждым продуктом, но не используйте load в цикле foreach.

foreach ($collection as $product) {
    //do something with $product
}
 2
Author: Marius, 2017-06-08 05:56:48