簡體   English   中英

Magento CMS阻止集合,無法按商店ID進行過濾-addStoreFilter([storeid])不起作用

[英]Magento CMS Block Collection, can't filter by store id - addStoreFilter([storeid]) not working

如何過濾cms / block(靜態塊)集合?

這適用於cms頁面:

$model = Mage::getModel('cms/page');
$collection = $model->getCollection()->addStoreFilter(3);

這不起作用(返回未過濾的集合):

$model = Mage::getModel('cms/block');
$collection = $model->getCollection()->addStoreFilter(3);

我還嘗試使用資源模型“ cms / block”和“ cms / block_collection”,但沒有結果。

為什么Magento如此罕見?! 有時候我真的開始為此討厭Magento。 請幫忙。

您未過濾的確切含義是什么?

addStoreFilter具有第二個參數,還包括管理存儲

addStoreFilter($store, $withAdmin = true)

因此,如果您有任何鏈接到所有商店的靜態塊,這些也將在您的收藏夾中。

這是您的問題嗎?

試試這個代碼:

$collection = Mage::getModel('cms/block')->getCollection();
$select = $collection->getSelect()->join(
    array('block_store' => $collection->getTable('cms/block_store')),
    'main_table.block_id = block_store.block_id',
    array('store_id')
)->where('block_store.store_id IN (?)', array(8));
foreach ($collection as $block) {
   // here you can use $block 
}

您可以對cms/page執行相同的操作。 只是改變

cms/block cms/page_store > cms/pagecms/block_store > cms/page_store

好的,首先要感謝Mike和oleksii.scarychevskyi。 這兩個答案都幫助我使其正常運行。 使用此方法效果很好,我更喜歡以下方法:

$collection = Mage::getModel('cms/block')->getCollection()->addStoreFilter(3, false);

oleksiis解決方案也有效,我不知道我們可以用這種方式更改選擇。

這對我來說可以通過標識符獲取靜態塊:

$storeId = 2;
$content = Mage::getModel('cms/block')->setStoreId($storeId)->load('aboutus')->getContent();
echo  $content;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM