Question

Je dois créer bloc statique multilingue. Jusqu'à présent, j'ai créé bloc statique avec id « delivery_returns ».

Je vous appelle dans catalogue \ produit \ view.phtml comme ceci:

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

Je comprends que pour traduire ce bloc:

  1. Je devrais créer un autre.
  2. Choisir ma langue souhaitée à partir du champ de store_view
  3. et maintenir l'identifiant de bloc statique même que l'original.

Cette méthode fonctionne avec « footer_links » et aussi avec un autre bloc statique que j'ai fait, appelé « header_links », mais apparemment il ne fonctionne pas avec le bloc 'delivery_returns de. Modification de la langue du magasin ne se charge pas correspondante traduit bloc 'delivery_returns de

Qu'est-ce que je manque? Y at-il une meilleure façon d'y parvenir?

Était-ce utile?

La solution

  1. Créer un bloc statique pour chaque langue, tous avec le même identifiant.
  2. Rendu le bloc avec le bloc cms/block. Ce sera ajouter automatiquement l'ID de magasin pour charger la version correcte du bloc.

Voici un moyen facile de charger et de rendre le bloc directement dans le fichier de modèle:

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

Vous pouvez également déclarer le bloc dans un fichier de mise en page et la rendre avec <?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>

Autres conseils

La réponse ci-dessous parle de réglage de l'identifiant du magasin avant le chargement du modèle, mais, comme @benmarks indique le commentaire ci-dessous, cela est inutile, comme cela se produit dans _toHtml () du bloc.

Comme beaucoup d'autres modèles de mage, essayez de régler l'ID du magasin désiré avant chargement du modèle:

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

Je l'ai accompli cela dans l'une des quelques façons:

  1. Il suffit d'utiliser un nom de bloc statique différent, copier et traduire et y faire référence dans votre thème séparément.
  2. Vous pouvez utiliser `{{traduire text = "texte à traduire"}} en tout cms, page bloc statique en mettant en œuvre la solution suivante:

    • Copier app / code / core / Mage / Core / Modèle / Courriel / Modèle / filter.php app / code / local / Mage / Core / Modèle / Courriel / Modèle / filter.php et modifier le texte suivant:

-

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

Plus d'informations / source:

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

Vous pouvez télécharger un module i créé sur la base de cette réponse d'ici: https://github.com/miguelbalparda / MB_Translate / Il met à disposition le traducteur en ligne de Magento dans les pages CMS / bloc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top