如何过滤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了。 请帮忙。
答案 0 :(得分:5)
你对未经过滤的意思是什么?
addStoreFilter还有第二个参数来包含管理存储
addStoreFilter($store, $withAdmin = true)
因此,如果您有任何链接到所有商店的静态块,这些也将存在于您的收藏中。
这是你的问题吗?
答案 1 :(得分:4)
试试这段代码:
$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
和cms/block_store
- > cms/page_store
答案 2 :(得分:0)
好的,首先要感谢Mike和oleksii.scarychevskyi。 这两个答案都帮我搞定了。 使用它完美地工作,我更喜欢这个:
$collection = Mage::getModel('cms/block')->getCollection()->addStoreFilter(3, false);
oleksiis解决方案也有效,我不知道我们可以通过这种方式改变选择。
答案 3 :(得分:0)
这对我来说可以通过标识符获取静态块:
$storeId = 2;
$content = Mage::getModel('cms/block')->setStoreId($storeId)->load('aboutus')->getContent();
echo $content;