2010-07-26 9 views
5

Vous vous demandez si quelqu'un a utilisé les instructions ou dans la mise en page XML de magento pour un module personnalisé? Je me rends compte que je pourrais vérifier les valeurs dans le contrôleur de module ou se bloquer, mais cela semble être un endroit logique pour la logique de vivre.en utilisant les conditions dans la mise en page magento xml

Mage_Core les utilise dans catalog.xml pour tester javascript. <!--<params/><if/><condition>can_load_calendar_js</condition>-->

Merci, JD

Répondre

8

je avoir peur d'utiliser ceux-ci. Vous remarquerez qu'ils sont commentés dans l'édition de la communauté distribuée par défaut, ce qui signifie probablement que l'équipe de base s'éloigne de leur utilisation. Si vous êtes intéressé par ce qu'ils font, ils sont strictement des paramètres de la méthode addItem du bloc page/head.

File: code/core/Mage/Page/Block/Html/Head.php 
public function addItem($type, $name, $params=null, $if=null, $cond=null) 
{ 
    if ($type==='skin_css' && empty($params)) { 
     $params = 'media="all"'; 
    } 
    $this->_data['items'][$type.'/'.$name] = array(
     'type' => $type, 
     'name' => $name, 
     'params' => $params, 
     'if'  => $if, 
     'cond' => $cond, 
    ); 
    return $this; 
} 

La méthode Ajouter un élément stocke ces conditions, puis ils sont utilisés plus tard dans la méthode getCssJsHtml pour sauter l'ajout d'un élément.

public function getCssJsHtml() 
{ 
    // separate items by types 
    $lines = array(); 
    foreach ($this->_data['items'] as $item) { 
     if (!is_null($item['cond']) && !$this->getData($item['cond']) || !isset($item['name'])) { 
      continue; 
     } 

Je pense qu'ils étaient une première tentative d'ajouter méta-programmation au système de modèle, ce qui a fini par aller sur la tête de ses utilisateurs visés.

+2

Merci Alan, réponse complète et d'information comme toujours. Je suppose que je vais m'en tenir à utiliser le bloc pour la logique conditionnelle. JD –

+0

J'ai depuis creusé un peu plus en profondeur dans ce domaine, et maintenant je crois que si les paramètres/cond sont pour ajouter des feuilles de style spécifiques à Internet Explorer via des commentaires conditionnels. –