如何将商店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();

【讨论】:

不是这样@abhinav Mage::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块输出的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CMS 页面的内容拉入静态块?

Django CMS:如何避免在设置中设置 SITE_ID?

如何使用当前页面 Pirnaha CMS 的所有块的列表创建 DataSelectField

如何禁止win10系统应用商店自动更新

如何在 Magnolia CMS Marketing Tag 中登录用户 ID

如何在 Magento 2 的 CMS 页面中显示分组产品