質問

多言語の静的ブロックを作成する必要があります。これまでに、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」と呼ばれる別の静的ブロックでも機能しますが、明らかに「dexileper_returns」ブロックでは動作していません。ストア言語の変更は、対応する翻訳された「配信_ 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を設定することについて説明していますが、@benmarksが以下のコメントに記載しているように、これはブロックの_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. 次の回避策を実装することにより、「{{{translate text = "text"}}を任意のCMSで、静的ブロックページで使用できます。

    • コピー app/code/core/mage/core/model/email/template/filter.php app/code/code/local/mage/core/model/model/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_into_cms_page_or_static_block.html

ここからこの回答に基づいて作成したモジュールをダウンロードできます。 https://github.com/miguelbalparda/mb_translate/CMS/ブロックページでMagentoのインライン翻訳者を利用可能にします。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top