En effet, moins PHP est dans votre .phtmlmieux, car:
- le mélange du PHP et du HTML est beaucoup plus difficile à déchiffrer que chacun d'eux individuellement, en particulier pour ceux qui sont à l'aise avec un seul d'entre eux (par exemple les concepteurs frontaux)
- il est logique de placer l'interaction avec le code du serveur dans le bloc, loin de ce qui doit être présenté dans le navigateur - c'est l'ancien mantra de la «séparation des préoccupations».
Le fichier core de Magento en     /app/design/frontend/base/default/template/catalog/product/price.phtml
    est un exemple douloureux. Ce code HTML de «présentation» affiche un prix. Il fait 471 lignes! Principalement à cause de la logique PHP.
Pour rendre votre .phtmlmaigre et plus propre:
- éviter les séquences inutiles de - <?php … ?>, les regrouper en morceaux avec un seul- <?php … ?>
 
- pousser autant de PHP que possible dans le Block, plutôt que dans le .phtml  
- pour aider avec ce qui précède, dans le bloc, utilisez - assign(‘myvar’,
[expression])pour créer des variables $ auxquelles vous pouvez vous référer sans- $this->...dans le .phtml, afin que vous puissiez avoir vraiment concis- <?php echo $myvar; ?>
 
- souhaite que Magento adopte Twig à l'avenir pour un look encore plus propre 
Appliquons ce qui précède sur un extrait du code d'origine de l'exemple donné ci-dessus: /app/design/frontend/base/default/template/catalog/product/price.phtml
<?php if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()): ?>
    <?php $_minimalPriceDisplayValue = $_minimalPrice; ?>
    <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, array(0, 1, 4))): ?>
        <?php $_minimalPriceDisplayValue = $_minimalPrice+$_weeeTaxAmount; ?>
    <?php endif; ?>
    ….
             <?php echo $_coreHelper->currencyByStore($_minimalPriceDisplayValue, $_storeId, true, false) ?>
- Première étape: supprimez la répétition de - <?php … ?>pour arriver à quelque chose comme ceci:
 - if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()) {
   $_minimalPriceDisplayValue = $_minimalPrice;
   if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, array(0, 1, 4))) {
        $_minimalPriceDisplayValue = $_minimalPrice+$_weeeTaxAmount; 
   }
  …
 echo $_coreHelper->currencyByStore($_minimalPriceDisplayValue, $_storeId, true, false) 
?>
Ce qui précède met tout PHP dans un seul blob de code. 
2 + 3. Évoluant vers quelque chose de mieux encore, déplacez ce code dans son bloc:
protected function _prepareLayout() {
    $this->assign(‘minPrice’, $this->calculateMinPrice(…));
}
protected function calculateMinPrice(…) {
    if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()) {
       // etc...
    }
}
Notez l'utilisation du _prepareLayout()et les assign()fonctions pour cela.
Maintenant, cette section alambiquée du .phtml peut être réduite à cette simple ligne:
<?php echo $minPrice; ?>
Je pense que nous pouvons tous vivre avec ça!