Position bloc de contenu CMS Accueil
-
16-10-2019 - |
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
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é