Domanda

Ho bisogno di creare blocco statico multilingue. Finora ho creato blocco statico con 'delivery_returns' id.

sto chiamando nel catalogo \ prodotto \ view.phtml in questo modo:

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

capisco che a tradurre questo blocco:

  1. dovrei creare un altro.
  2. Scegli la mia lingua desiderata dal campo store_view
  3. e mantenere il blocco statico identificatore come l'originale.

Questo metodo funziona con 'footer_links' e anche con un altro blocco statico che ho fatto, chiamato 'header_links', ma a quanto pare non sta funzionando con il blocco 'delivery_returns'. Modifica della lingua deposito non carica corrispondente blocco '' delivery_returns tradotti

Che cosa mi manca? C'è un modo migliore per raggiungere questo obiettivo?

È stato utile?

Soluzione

  1. Creare un blocco statico per ogni lingua, tutti con lo stesso identificatore.
  2. Render il blocco con il blocco cms/block. Lo farà aggiungere automaticamente l'ID del negozio per caricare la versione corretta del blocco.

Ecco un modo semplice per caricare e rendere il blocco direttamente nel file di modello:

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

In alternativa, dichiarare il blocco in un file di layout e rendono con <?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>

Altri suggerimenti

La risposta qui sotto parla di impostazione del Codice del negozio prima di caricare il modello, ma, come @benmarks notato nel commento qui sotto, ciò non è necessario, come succede nella _toHtml del blocco ().

Come per molti altri modelli di Mage, provare a impostare l'id negozio desiderato prima il caricamento del modello:

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

ho compiuto questo in uno dei pochi modi:

  1. Basta usare un diverso nome blocco statico, copiare e tradurre, e si riferiscono ad esso nel vostro tema a parte.
  2. È possibile utilizzare `{{tradurre il testo = "il testo da tradurre"}} in qualsiasi CMS, pagina blocco statico implementando la seguente soluzione:

    • copia app / code / core / Mage / core / Modello / email / template / Filter.php per app / code / local / Mage / core / Modello / email / template / Filter.php e modificare il seguente:

-

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

Maggiori informazioni / origine:

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

È possibile scaricare un modulo ho creato sulla base di questa risposta da qui: https://github.com/miguelbalparda / MB_Translate / Esso mette a disposizione il traduttore in linea di Magento in pagine CMS / blocchi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top