Question

J'ai une situation intéressante où sur une page CMS, je suis en train de définir de nouveaux blocs dans la section update_layout_xml - qui doivent être référencé à partir du contenu CMS lui-même en utilisant la syntaxe shortcode {{block ...}}

Je sais qu'il est possible de définir de nouveaux blocs à instancié d'un textarea CMS -. Mais est-il possible de faire référence à un bloc existant pour définir la position exacte qu'il doit être inséré

L'utilisation update_layout_xml ne permet que le positionnement à l'aide before= ou after= - alors que je besoin d'un contrôle plus granulaire pour positionner l'élément dans le bloc de content lui-même. Si cela devait être fait via un fichier phtml - ce serait juste un cas d'utilisation getChildHtml -. Mais il ne semble pas être un équivalent pour CMS

Je sais que je peux étendre Mage_Widget_Model_Template_Filter et ajouter une nouvelle fonction - mais est-il déjà une méthode de base pour ce faire

?
Était-ce utile?

La solution

J'étendu Mage_Widget_Model_Template_Filter d'ajouter cette fonction et le tour est joué, mais je me demandais s'il y avait un natif façon de le faire.

public function getchildDirective($construction)
{
    $layout = Mage::app()->getLayout();
    $blockParameters = $this->_getIncludeParameters($construction[2]);

    return $layout->getBlock('root')->getChildHtml($blockParameters['id']);

}

Autres conseils

En fonction de vos méthodes d'action, vous devriez être en mesure d'ajouter des fonctionnalités à la méthode _construct de votre bloc (tel que défini par le type de bloc)

Mais si vos méthodes d'action sont définissant simplement une variable comme

<action method="setCategoryId"><category_id>17</category_id></action>

vous pouvez ajouter ces params à votre syntaxe smiley comme ceci:

{{block type="cms/block" block_id="your_block_id" category_id="17"}}

Je sais que vous pouvez inclure des blocs statiques dans un contenu CMS en utilisant quelque chose comme ceci:

{{block type="cms/block" block_id="your_block_id"}}

Je ne vois pas pourquoi cette méthode ne fonctionnerait pas pour les blocs personnalisés. Avez-vous essayé au moins?

Il ne fixe pas lorsque le shortcode est dans une variable d'un module.

Exemple: J'ai un module de curseur, et quand je rentre {{store direct_url="customer-service"}} comme attribut de lien, il ne soit pas remplacé

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