Как я могу установить фактический магазин в блоке 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; ?>
2 answers
Я не уверен, что вы пытаетесь сделать с идентификатором магазина. Но если у вас есть идентификатор магазина, вы можете отфильтровать коллекцию товаров по идентификатору магазина таким образом.
$collection = Mage::getResourceModel('catalog/product_collection')
->addStoreFilter($storeId)
->addAttributeToSelect('*');
Вы можете установить эту коллекцию продуктов в файл блока и использовать ее в шаблоне. Таким образом, вы можете ускорить время загрузки страницы. В вашем случае я вижу, что вы загружаете один и тот же продукт несколько раз в цикле, и это не будет хорошей идеей.
Здесь я пытаюсь указать на проблему в вашем коде. Однако я знаю, что ваш вопрос об актауле отличается.
$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);