40 votes

Magento : obtenir un bloc statique au format html dans un fichier phtml

J'ai un bloc statique appelé newest_product (avec contenu) et je voudrais l'afficher sur un fichier .phtml en html.

J'ai essayé ce code :

echo $this->getLayout()->createBlock('cms/block')->setBlockId('newest_product')->toHtml(); 

Mais rien n'est affiché.

Est-ce que j'utilise le mauvais code ?

78voto

Suman-PHP4U Points 533

Si vous avez créé un bloc CMS nommé 'block_identifier' à partir du panneau d'administration. Ensuite, le code suivant sera utilisé pour les appeler en .phtml

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

50voto

Max Pronko Points 1369

Dans la mise en page (app/design/frontend/your_theme/layout/default.xml) :

<default>
    <cms_page> <!-- need to be redefined for your needs -->
        <reference name="content">
            <block type="cms/block" name="cms_newest_product" as="cms_newest_product">
                <action method="setBlockId"><block_id>newest_product</block_id></action>
            </block>
        </reference>
    </cms_page>
</default>

Dans votre modèle phtml :

<?php echo $this->getChildHtml('newest_product'); ?>

N'oubliez pas le nettoyage des caches.

Je pense que ça aide.

21voto

Ayush Sugandhi Points 21
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('my_static_block_name')->toHtml() ?>

et utilisez ce lien pour en savoir plus http://www.justwebdevelopment.com/blog/how-to-call-static-block-in-magento/

14voto

Jeroen Points 159

Si vous souhaitez charger un cmsblock dans votre template/blockfile/model etc. Vous pouvez le faire comme suit. Cela rendra toutes les positions de variables dans le cmsblock

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

$var = array('variable' => 'value', 'other_variable' => 'other value');
/* This will be {{var variable}} and {{var other_variable}} in your CMS block */

$filterModel = Mage::getModel('cms/template_filter');
$filterModel->setVariables($var);

echo $filterModel->filter($block->getContent());

8voto

Kanak Vaghela Points 1302

Je pense que cela fonctionnera pour vous

$block = Mage::getModel('cms/block')->setStoreId(Mage::app()->getStore()->getId())->load('newest_product');
echo $block->getTitle();
echo $block->getContent();

Cela fonctionne, mais maintenant les variables dans le bloc CMS ne sont plus analysées :(

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X