【问题标题】:How to set store id to cms block output如何将商店ID设置为cms块输出
【发布时间】: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();

标签: magento magento-1.8


【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 2014-09-26
      • 2019-09-03
      • 2020-09-11
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多