我需要创建多语言静态块。到目前为止,我已经创建了具有ID“ delivery_returns”的静态块。

我在Catalog Product view.phtml中称其为:

$deliveryBlock = Mage::getModel('cms/block')->load('delivery_returns');
echo $deliveryBlock->getTitle();
echo $deliveryBlock->getContent();

我知道要翻译这个块:

  1. 我应该创建另一个。
  2. 从Store_view字段中选择我所需的语言
  3. 并将静态块标识符保持与原始相同。

此方法可与“ footer_links”一起使用,还与我制作的另一个静态块一起使用,称为“ header_links”,但显然它不使用'velivery_returns'块。更改存储语言不会加载相应翻译的“ velivery_returns”块

我想念什么?有更好的方法可以实现这一目标吗?

有帮助吗?

解决方案

  1. 为每种语言创建一个具有相同标识符的静态块。
  2. cms/block 堵塞。它将自动添加存储ID,以加载块的正确版本。

这是一种直接在模板文件中加载和渲染块的简便方法:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('delivery_returns')->toHtml() ?>

或者,在布局文件中声明块并将其渲染 <?php echo $this->getChildHtml('delivery_returns') ?>:

<block type="cms/block" name="product.delivery_returns" as="delivery_returns">
    <action method="setBlockId"><block_id>delivery_returns</block_id></action>
</block>

其他提示

下面的答案是关于在加载模型之前设置商店ID的问题,但是,如下评论中所述,这是不必要的,因为这发生在块的_tohtml()中。

与许多其他法师模型一样,尝试设置所需的商店ID 加载模型:

$deliveryBlock = Mage::getModel('cms/block')
                     ->setStoreId(Mage::app()->getStore()->getId())
                     ->load('delivery_returns');

echo $deliveryBlock->getTitle();

/**
 * You shouldn't print the content directly (although I'm assuming it's for debugging purposes only).
 * Use the code below, so as the possible content directives (the "{{ }}" thingies) would be interpreted.
 * Check out Mage_Cms_Block_Block::_toHtml().
 */
echo Mage::helper('cms')->getBlockTemplateProcessor()
                        ->filter($deliveryBlock->getContent());

我以几种方式之一完成了这一点:

  1. 只需使用其他静态块名称,复制和翻译,然后在主题中分别参考它。
  2. 您可以使用`

    • 复制 App/Code/Core/Mage/Core/Model/Model/email/template/filtr.php 到App/code/local/mage/core/model/email/email/template/filter.php并修改以下内容:

--

public function translateDirective($construction)
{
    $params = $this->_getIncludeParameters($construction[2]);
    $text = $params['text'];
    return Mage::helper('page')->__($text);
} 

更多信息/来源:

http://jagdeepbanga.com/blog/magento_how_add_translation_ability_itabilation_into_cms_page_page_or_static_block.html

您可以从此处下载基于此答案创建的模块: https://github.com/miguelbalparda/mb_translate/它使CMS/块页面上的Magento的内联翻译器提供。

许可以下: CC-BY-SA归因
scroll top