Question

J'allais mettre en place une petite extension à activer conseils de modèle sous portée mondiale, mais est resté coincé en essayant de réécrire core/template.

Classe récrit seulement le travail pour les classes instanciées par l'une des méthodes de Magento pour le faire (helper, getModel, getSingleton). Pour abstraite et fortement prolongée des classes que vous semblez être laissé avec l'option de remplacements de local/Mage.

Deux questions:

  1. Est-il un moyen intelligent pour éviter les remplacements de local/Mage en tout temps?
  2. S'il n'y a pas, comment allez-vous, y compris dans les extensions telles substitutions communautaires?
Était-ce utile?

La solution

1) Toute extension que vous offrez à la communauté devrait être sous la piscine de code communautaire.

2) Vous ne devriez pas, mais vous pouvez, et parfois vous devez parce que Demeter a été ignoré beaucoup dans Magento 1.

Il y a presque toujours un moyen de contourner la nécessité de remplacement, y compris l'utilisation de la réflexion comme mentionné par Vinai quelque temps en arrière .

S'il y a trop inconvénient des solutions de contournement, vous devez simplement prendre possession de la définition de classe. Vous pouvez faire un des éléments suivants, à condition que les utilisateurs soient informés:

  1. Dans la piscine de code communautaire, fournir la définition modifiée sous Mage | Varien | espace de noms Zend selon le cas. préoccupation possible serait que l'utilisateur final aurait pu faire la même chose.
  2. Comme ci-dessus, mais dans un nouveau pool de code: précédez le nouveau codepool aux bootstrap comprennent chemins à l'aide set_include_path(). Inconvénient:. Plus stat()ing causé par le chargeur automatique, et votre inclure la manipulation de chemin sera non évidente car il est en dehors du bootstrap
  3. Si possible, la définition même avant qu'il ne soit chargé à partir de son emplacement normal, par exemple par include()ing explicitement à partir d'un emplacement non standard dans votre espace de noms.

Son votre cas par cas a besoin ici - quelqu'un aura une idée. En ce qui concerne les conseils de chemin de modèle dans le champ d'administration, voir ma réponse qui n'a même pas besoin de PHP.

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