Как я могу установить фактический магазин в блоке cms


В моем файле phtml есть следующий код:

$store = Mage::app()->setStore($storeId);
/*$store = Mage::app()->getStore();*/
$_helper = $this->helper('catalog/output');
$code  = $store->getCode();
$enable = Mage::getStoreConfig('filterproducts/config6/active',$code);

И хотели бы показать последние товары, которые мы импортировали, в этом представлении магазина (мультистор).

Но это не отображается на этой конкретной странице cms. Это мой блок, который я использую:

{{block type="filterproducts/latest_home_list" product_count="20" products_column="6" template="smartwave/filterproducts/home_latest.phtml"}}

И вот мой phtml:

<?php
$store = Mage::app()->setStore($storeId);
/*$store = Mage::app()->getStore();*/
$_helper = $this->helper('catalog/output');
$code  = $store->getCode();
$enable = Mage::getStoreConfig('filterproducts/config6/active',$code);
?>
<?php if($enable == 1 && $this->getItems()->getSize()): ?>
<div class="slider-latest-container">
    <div class="more-title">
        <h2 class="title"><span><?php echo Mage::getStoreConfig('filterproducts/config6/title',$code); ?></span></h2>
        <a href="<?php echo $this->getUrl('filterproducts/index/latest'); ?>" class="show-more-link"><?php echo $this->__('View More Products') ?></a>
    </div>
    <div class="products-slider items-slider latest-slider column<?php echo $this->get_product_column(); ?>">
        <ul class="products-grid">
            <?php foreach($this->getItems() as $_item): ?>
                <li class="item">
                    <div class="item-area">
                        <div class="product-image-wrapper <?php if (Mage::getStoreConfig('legenda_setting/category/effect_img', $code)): ?>hover-effect-slider"<?php endif; ?>>
                        <?php 
                            // Get the Special Price
                            $specialprice = Mage::getModel('catalog/product')->load($_item->getId())->getSpecialPrice(); 
                            // Get the Special Price FROM date
                            $specialPriceFromDate = Mage::getModel('catalog/product')->load($_item->getId())->getSpecialFromDate();
                            // Get the Special Price TO date
                            $specialPriceToDate = Mage::getModel('catalog/product')->load($_item->getId())->getSpecialToDate();
                            // Get Current date
                            $today =  time();

                            if ($specialprice){
                                if($today >= strtotime( $specialPriceFromDate) && $today <= strtotime($specialPriceToDate) || $today >= strtotime( $specialPriceFromDate) && is_null($specialPriceToDate)){
                                    if(Mage::getStoreConfig("legenda_setting/product_label/sale", $code)){
                        ?>
                                    <span class="label-icon sale-label">Sale!</span>
                        <?php       
                                    }
                                }
                            }
                        ?>
                        <?php
                            $now = date("Y-m-d");
                            $newsFrom= substr($_item->getData('news_from_date'),0,10);
                            $newsTo=  substr($_item->getData('news_to_date'),0,10);
                            if ($newsTo != '' || $newsFrom != ''){
                                if (($newsTo != '' && $newsFrom != '' && $now>=$newsFrom && $now<=$newsTo) || ($newsTo == '' && $now >=$newsFrom) || ($newsFrom == '' && $now<=$newsTo))
                                {
                                    if(Mage::getStoreConfig("legenda_setting/product_label/new", $code)){
                            ?> 
                                    <span class="label-icon new-label second-label">New!</span>
                            <?php 
                                    }
                                }
                            }
                        ?>
                        <?php 
                            $imgList = ''; 
                            if (Mage::getStoreConfig('legenda_setting/category/effect_img', $code)) {
                                $product = Mage::getModel('catalog/product')->load($_item->getId());
                                foreach ($product->getMediaGalleryImages() as $image) {
                                    // If no image, skip 
                                    if ($image->getFile() == NULL)
                                        continue;
                                    if (Mage::getStoreConfig('legenda_setting/category/aspect_ratio', $code)) {
        //                                $imgList .= Mage::helper('catalog/image')->init($_item, 'thumbnail', $image->getFile()).',';
                                        $imgList .= Mage::helper('catalog/image')->init($_item,'thumbnail',$image->getFile())->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(350).',';   
                                    } else {
                                        $imgWidth = Mage::getStoreConfig('legenda_setting/category/ratio_width', $code);
                                        $imgHeight = Mage::getStoreConfig('legenda_setting/category/ratio_height', $code);
                                        $imgList .= Mage::helper('catalog/image')->init($_item,'thumbnail',$image->getFile())->resize($imgWidth, $imgHeight).',';
                                    }
                                }
                                $imgList = substr($imgList, 0, strlen($imgList) - 1);
                            }
                        ?>
                        <?php if(!$_item->isSaleable()): ?>
                            <span class="out-of-stock"><?php echo $this->__('Out of stock') ?></span>
                        <?php endif; ?>
                        <a href="<?php echo $_item->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_item, 'small_image'), null, true) ?>" class="product-image" data-images-list="<?php echo $imgList; ?>">
                            <img src="<?php if(Mage::getStoreConfig('legenda_setting/category/aspect_ratio', $code)):?><?php echo $this->helper('catalog/image')->init($_item, 'small_image')->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(350); ?><?php else: ?><?php echo $this->helper('catalog/image')->init($_item, 'small_image')->resize(Mage::getStoreConfig('legenda_setting/category/ratio_width', $code), Mage::getStoreConfig('legenda_setting/category/ratio_height', $code)); ?><?php endif; ?>" alt="<?php echo $this->stripTags($this->getImageLabel($_item, 'small_image'), null, true) ?>" />
                        </a>
                        <?php if (Mage::getStoreConfig('quickview/general/enableview', $code)): ?>
                            <a href="<?php echo $_item->getId() ?>" class="sw-product-quickview"><?php echo $this->__('Quick View') ?></a>
                        <?php endif; ?>
                        </div>
                        <div class="description-wrapper">
                            <h3 class="product-name"><a href="<?php echo $_item->getProductUrl() ?>" title="<?php echo $this->stripTags($_item->getName(), null, true) ?>"><?php echo $_helper->productAttribute($_item, $_item->getName(), 'name') ?></a></h3>
                            <?php if($_item->getRatingSummary()): ?>
                            <?php echo $this->getReviewsSummaryHtml($_item, 'short') ?>
                            <?php endif; ?>
                            <?php echo $this->getPriceHtml($_item, true) ?>
                            <div class="actions">
                            <?php if(Mage::getStoreConfig('ajaxcart/addtocart/enablecategory')): ?>
                                <?php if($_item->isSaleable()): ?>
                                    <?php  if ( !($_item->getData('has_options') || $_item->isGrouped()) ) :  ?>
                                        <button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart btn-cart-<?php echo $_item->getId()?>" onclick="setLocationAjax('<?php echo $this->getAddToCartUrl($_item) ?>','<?php echo $_item->getId()?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
                                    <?php else: ?>
                                        <button type="button" title="<?php echo $this->__('Select Option') ?>" class="button btn-cart btn-cart-<?php echo $_item->getId()?>" onclick="showOptions('<?php echo $_item->getId()?>')"><span><span><?php echo $this->__('Select Option') ?></span></span></button>
                                        <a href='<?php echo $this->getUrl('ajaxcart/index/options',array('product_id'=>$_item->getId()));?>' class='fancybox' id='fancybox<?php echo $_item->getId()?>' style='display:none'>Options</a>
                                    <?php endif; ?>
                                <?php else: ?>
                                    <a href="<?php echo $_item->getProductUrl() ?>" class="button"><?php echo $this->__('Read More') ?></a>
                                <?php endif; ?>
                            <?php else: ?>
                                <?php if($_item->isSaleable()): ?>
                                    <button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_item) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
                                <?php endif; ?>
                            <?php endif; ?>

                            <?php if(Mage::getStoreConfig('ajaxcart/addtolinks/enablecategory')): ?>
                                <ul class="add-to-links">
                                    <?php if ($this->helper('wishlist')->isAllow()) : ?>
                                        <li><a href="#" onclick='ajaxWishlist("<?php echo $this->helper('wishlist')->getAddUrl($_item) ?>","<?php echo $_item->getId()?>");return false;' class="link-wishlist link-wishlist-<?php echo $_item->getId()?>"><?php echo $this->__('Add to Wishlist') ?></a></li>
                                    <?php endif; ?>
                                    <?php if($_compareUrl=$this->getAddToCompareUrl($_item)): ?>
                                        <li><span class="separator">|</span> <a href="#" onclick='ajaxCompare("<?php echo $_compareUrl ?>","<?php echo $_item->getId()?>");return false;' class="link-compare link-compare-<?php echo $_item->getId()?>"><?php echo $this->__('Add to Compare') ?></a></li>
                                    <?php endif; ?>                        
                                </ul>
                            <?php else: ?>
                                <ul class="add-to-links">
                                    <?php if ($this->helper('wishlist')->isAllow()) : ?>
                                        <li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_item) ?>" class="link-wishlist button"></a></li>
                                    <?php endif; ?>
                                    <?php if($_compareUrl=$this->getAddToCompareUrl($_item)): ?>
                                        <li><a href="<?php echo $_compareUrl ?>" class="link-compare button"></a></li>
                                    <?php endif; ?>
                                </ul>
                            <?php endif; ?>
                            </div>
                        </div>
                    </div>
                </li>
            <?php endforeach; ?>
        </ul>
    </div>
</div>
<script type="text/javascript">
//<![CDATA[
    jQuery('.latest-slider .products-grid').owlCarousel({
        items: <?php echo $this->get_product_column() ?>,
        itemsDesktop: [1199, 3],
        itemsDesktopSmall: [991, 3],
        itemsTablet: [768, 2],
        itemsMobile: [479, 1],
        lazyLoad: true,
        pagination: false,
        navigation: true
    });
//]]>
</script>
<?php else: ?>
<div class="content-element">
    <div class="note-msg"><span class="msg-content"><?php echo $this->__('There are no products matching the selection.') ?></span></div>
</div>
<?php endif; ?>
Author: Simon Vetterli, 2015-09-30

2 answers

Я не уверен, что вы пытаетесь сделать с идентификатором магазина. Но если у вас есть идентификатор магазина, вы можете отфильтровать коллекцию товаров по идентификатору магазина таким образом.

$collection = Mage::getResourceModel('catalog/product_collection')
    ->addStoreFilter($storeId)
    ->addAttributeToSelect('*');

Вы можете установить эту коллекцию продуктов в файл блока и использовать ее в шаблоне. Таким образом, вы можете ускорить время загрузки страницы. В вашем случае я вижу, что вы загружаете один и тот же продукт несколько раз в цикле, и это не будет хорошей идеей.

 0
Author: Akhilesh Patel, 2015-09-30 05:14:55

Здесь я пытаюсь указать на проблему в вашем коде. Однако я знаю, что ваш вопрос об актауле отличается.

$store = Mage::app()->setStore($storeId);
$code  = $store->getCode();

Это происходит потому, что Mage::app() возвращает значение Mage_Core_Model_App. Этот класс не содержит метода setStore(), и класс не наследуется от каких-либо других классов. Вы можете использовать любой из двух вариантов ниже

1. Использование getStoreConfig()

$storeId = 3; //put your store id here.
$store   = Mage::app()->getStore($storeId);
$code    = $store->getCode();
$enable  = (bool)Mage::getStoreConfig('filterproducts/config6/active',$code);

2. Использование getStoreConfigFlag()

$storeId = 3; //put your store id here.
$store   = Mage::app()->getStore($storeId);
$code    = $store->getCode();
$enable  = Mage::getStoreConfigFlag('filterproducts/config6/active',$code);

Мы захватываем нужный магазин, используя getStore() сам метод. Видишь Mage_Core_Model_App:getStore() метод для справки. Еще одно отличие заключается в том, что вы можете использовать getStoreConfigFlag() метод в app\Mage.php чтобы получить логические значения. Вы можете либо использовать его, либо продолжить с первым подходом, который я показал.

РЕДАКТИРОВАТЬ

Я вижу, что вы используете метод getItems(), чтобы захватить свою коллекцию. Если этот метод возвращает одну и ту же коллекцию для каждого магазина, то вам нужно включить фильтрацию магазинов в этот метод.

Так что открой свой заблокируйте класс [Namespace]_Filterproducts_Latest_Home_List и отредактируйте свой метод getItems() и поместите туда файл хранилища. Для примера

Mage::getModel('catalog/product')->getCollection()
    ->setStore($store);
 3
Author: Rajeev K Tomy, 2015-09-30 06:10:27