La compréhension getChildHtml dans Magento
De la ligne suivante dans 2columns-droit.phtml
<div class="col-main">
<?php echo $this->getChildHtml('global_messages') ?>
<?php echo $this->getChildHtml('content') ?>
</div>
Je ne suis pas capable de comprendre que, à partir de là que le contenu de <?php echo $this->getChildHtml('content') ?>
est à venir.
sorcière .phtml fichier est appelée pour afficher les données par <?php echo $this->getChildHtml('content') ?>
- Personne ne peut vous dire que de ces 2 lignes de code. Sûrement venir à partir du code PHP qui ne sont pas présentés ici, mais inclus dans la page
- Hanky - quelqu'un qui est familier avec Magento peut.
- getChildHtml() retourne le rendu html de CHAQUE enfant du bloc courant.
- Lire ce stackoverflow.com/questions/16032973/... cela peut vous aider
Vous devez vous connecter pour publier un commentaire.
Si nous discutons de l'interface du site web, la ligne que vous avez demandé à propos....
est ajouté à la Magento mise en page XML dans app/design/frontend/base/default/layout/page.xml. Dans Magento version 1.8, vous trouverez qu'il est défini dans les lignes 92-94.
En regardant l'attribut "type" de ce bloc, étiquette, on peut savoir quelle classe d'objet de cette section de la mise en page est. Il s'agit de la "Base" du module, et est du type de bloc de Texte de la Liste. Le nom de la classe pour cette Mage_Core_Block_Text_List. (app/code/core/Mage/Core/Block/Text/List.php). Les Listes de texte sont tout simplement bloquer les récipients dont le but est de stocker de l'enfant en plus de blocs à l'intérieur d'eux. Vous pouvez ajouter n'importe quel nombre d'enfants blocs de texte la liste et ils seront rendus, soit dans l'ordre où ils ont été ajoutés ou l'ordre qui leur a été donnée.
Donc, pour répondre à votre question, il n'est pas tenu de script (.phtml fichier) qui rend le contenu de $this->getChildHtml('contenu'). Les blocs qui ont été ajouté à ce bloc, peuvent avoir des scripts de vue qui leur sont associés. Pour savoir ce que les scripts de vue ceux qui sont, il faut trouver la mise en page XML, ce qui a ajouté le bloc.
Par exemple, si j'avais la disposition suivante fichier ajouté à l'interface de mon site web thème:
Le code ci-dessus, ajouter le bloc avec un objet de la classe de Mage_Core_Block_Template pour le bloc avec le nom "contenu" (qui se trouve être celui que vous avez demandé à ce sujet). Magento va ensuite chercher le script de vue dans les endroits suivants, dans cet ordre:
Premier, est celui qu'il utilisera. Si aucune vue n'script est trouvé Magento va se connecter une erreur dans
var/logs/system.log
(fichier journal par défaut paramètre indiquant que le script de vue n'a pas été trouvé. Pas de sortie dans le bloc va se produire.Noter qu'en fonction de vos paramètres Système -> Configuration -> (Général) de la Conception, il peut y avoir d'autres
package/theme
endroits Magento va regarder dans. Il y a également d'autres scénarios, comme si le "Thème Personnalisé" est le champ est modifié pour chaque CMS Pages, Catalogue de Catégories, ou un Catalogue de Produits, ces modèles individuels d'affichage de la page peut avoir une vue supplémentaire emplacement du script (qui correspond au thème sélectionné) qui prend le pas sur votre site, les paramètres par défaut.Magento va suivre cette même logique de repli lors de la recherche de fichiers de traduction ainsi que la mise en page des fichiers XML.
Veuillez noter qu'il est parfaitement acceptable de copier des scripts de vue (éviter de copier des répertoires entiers, de copier uniquement les scripts de vue vous avez réellement l'intention de modifier) à partir de
app/design/frontend/base/default/template/
de votre thème local, et de les personnaliser pour les besoins de votre site web thème. Cependant, afin d'avoir une mise à jour compatible site, des fichiers de mise en ne doivent pas être copiés à partir de la base de votre thème local. Ce faisant, ne pas suivre la mise à niveau compatible pratiques. Au lieu de cela, XML Mise en page des mises à jour de votre thème doit être contenue dansapp/design/frontend/PACKAGE_NAME/THEME_NAME/layout/local.xml
. Il n'y a pas de mise en page des instructions deapp/design/frontend/base/default/layout/*
, qui ne peut pas être supprimé/ajouté à/changé, qu'est-ce-avez-vous, avec les bonnes instructions XML dans local.xml.<?php echo $this->getChildHtml() ?>
puis tous les enfants de blocs de$this
sera rendu dans l'ordre. Même s'ils ont déjà été sortie supérieure dans le même script de vue.