如何将商店ID设置为cms块输出
Posted
技术标签:
【中文标题】如何将商店ID设置为cms块输出【英文标题】:How to set store id to cms block output 【发布时间】:2017-12-08 23:52:30 【问题描述】:我使用下面的代码来显示静态块内容,但它每次只显示第一个存储块。我在管理员端加载这个 cms 块。 我有两个具有相同标识符的块,但将其分配给不同的商店,所以我想明智地显示它。
这是我正在使用的代码,但没有帮助。
Mage::app()->getLayout()->createBlock('cms/block')->setBlockId('pdf_page_of')->setStoreId($storeId)->tohtml()
【问题讨论】:
首先回显您的 $storeId 并检查它是否提供了正确的商店 ID。 是的,获取正确的商店 ID 可能是由于相同的块名称。创建这样的块 pdf_page_of_1 , pdf_page_of_2 然后使用你的代码或 $this->getLayout()->createBlock('cms/block')->setBlockId('pdf_page_of_'.$storeId)->toHtml(); 【参考方案1】:你可以试试下面的代码:
Mage::getModel('cms/block')
->setStoreId(Mage::app()->getStore()->getId())
->load('pdf_page_of')
;
【讨论】:
这样会加载,但是如果cms中有指令就不会加载了【参考方案2】:试试这个
/* set required store */
Mage::app()->setCurrentStore($storeId);
$addresBlock = Mage::app()->getLayout()->createBlock('cms/block')->setBlockId('pdfaddress')->toHtml();
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
/* reset admin store after wind up our purpose.*/
【讨论】:
【参考方案3】:请使用以下不同的 $storeId
$block = Mage::getModel('cms/block')->setStoreId($storeId)->load('newest_product');
echo $block->getTitle();
echo $block->getContent();
【讨论】:
不是这样@abhinavMage::app()->getLayout()->createBlock('cms/block')->setBlockId('pdf_page_of')->setStoreId($storeId)->toHtml()
我想以这种方式加载块【参考方案4】:
在这种情况下
$blockId = 'block_id';
$storeId = 5;
$block = Mage::getModel('cms/block')->setStoreId($storeId)->load($blockId);
请记住,如果您在商店 id 0 中已经有一个带有 $blockId 的块,那么无论您在 $storeId 中有什么值,都会为商店 0 加载 $block。发生这种情况是因为所有其他商店视图都存在商店 id 0。
我假设
Mage_Core_Model_App::ADMIN_STORE_ID
返回 0。
【讨论】:
以上是关于如何将商店ID设置为cms块输出的主要内容,如果未能解决你的问题,请参考以下文章
Django CMS:如何避免在设置中设置 SITE_ID?
如何使用当前页面 Pirnaha CMS 的所有块的列表创建 DataSelectField