Frage

Ich muss mehrsprachiger statischer Block erstellen. Bisher habe ich einen statischen Block mit id 'lieferung_returns' erstellt.

Ich nenne es in Catalog product view.phtml wie folgt:

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

Ich verstehe das, um diesen Block zu übersetzen:

  1. Ich sollte nur noch einen erstellen.
  2. Wählen Sie meine gewünschte Sprache aus dem Feld Store_view aus
  3. und behalten Sie den statischen Blockkennung wie original.

Diese Methode funktioniert mit 'footer_links' und auch mit einem anderen statischen Block, den ich hergestellt habe, der "Header_Links" genannt wird, aber anscheinend funktioniert sie nicht mit 'lieferung_returns' Block. Das Ändern der Geschäftssprache lädt nicht die entsprechende übersetzte "lieferung_returns" -Blocke nicht

Was vermisse ich? Gibt es einen besseren Weg, dies zu erreichen?

War es hilfreich?

Lösung

  1. Erstellen Sie für jede Sprache einen statischen Block, alle mit demselben Kennung.
  2. Den Block mit dem rendern cms/block Block. Die Store -ID wird automatisch hinzugefügt, um die richtige Version des Blocks zu laden.

Hier ist eine einfache Möglichkeit, den Block direkt in der Vorlagendatei zu laden und zu rendern:

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

Alternativ deklarieren Sie den Block in einer Layout -Datei und rendern Sie ihn mit <?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>

Andere Tipps

In der folgenden Antwort geht es darum, die Store -ID vor dem Laden des Modells festzulegen. Wie @Benmarks im Kommentar unten erwähnt, ist dies jedoch unnötig, da dies im _tohtml () des Blocks passiert.

Stellen Sie wie bei vielen anderen Magiermodellen die gewünschte Store -ID fest Vor Laden des Modells:

$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());

Ich habe dies auf ein paar Arten erreicht:

  1. Verwenden Sie einfach einen anderen statischen Blocknamen, kopieren Sie und übersetzen Sie ihn in Ihrem Thema separat.
  2. Sie können `{{übersetzt text =" text to übersetzt "}} auf einer beliebigen CMS -Seite, statische Blockseite, indem Sie die folgende Problemumgehung implementieren:

    • Kopieren app/code/core/mage/core/model/modell/semplate/filter.php an app/code/local/mage/core/model/modell/memeplate/filter.php und ändern Sie Folgendes:

--

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

Weitere Informationen/Quelle:

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

Sie können ein Modul herunterladen, das ich basierend auf dieser Antwort von hier erstellt habe: https://github.com/melauelbalparda/mb_translate/Es stellt den Inline -Übersetzer von Magento auf CMS/Blockseiten zur Verfügung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top