Frage

Ich wollte eine winzige Erweiterung zusammenstellen, um es zu aktivieren Vorlage Hinweise unter globalem Umfang, aber stecken stecken geblieben, um neu zu schreiben core/template.

Klassenumschreiben arbeiten nur für Klassen, die über eine der Methoden von Magento instanziiert sind (um dies zu tun (helper, getModel, getSingleton). Für abstrakt local/Mage überschreiben.

Zwei Fragen:

  1. Gibt es eine intelligente Möglichkeit zu vermeiden? local/Mage Zu jeder Zeit überschreiben?
  2. Wenn es nicht gibt, wie können Sie solche Überschreibungen in Community -Erweiterungen einbeziehen?
War es hilfreich?

Lösung

1) Jede Erweiterung, die Sie der Community anbieten, sollte unter dem Community Code Pool stehen.

2) Sie sollten es nicht, aber Sie können und manchmal müssen Sie weil Demeter wurde in Magento 1 viel ignoriert.

Es gibt fast immer einen Weg, um die Notwendigkeit zu überschreiben, einschließlich der Verwendung von Reflexion Wie von Vinai vor einiger Zeit erwähnt.

Wenn die Problemumgehungen zu viel Nachteil haben, müssen Sie einfach die Klassendefinition übernehmen. Sie können einen der folgenden Aussagen machen, vorausgesetzt, dass Benutzer darauf aufmerksam gemacht werden:

  1. Geben Sie im Community Code Pool die geänderte Definition unter Magier | VIERIEN | Zend Namespace gegebenenfalls. Mögliche Sorge wäre, dass Endbenutzer das gleiche getan haben könnte.
  2. Wie oben, aber in einem neuen Codepool: Vorbereiten Sie den neuen Codepool auf die Streetstapel -Pfade verwenden set_include_path(). Nachteil: Mehr stat()Der durch den Autoloader verursachte und Ihre Pfadmanipulation ist nicht offensichtlich, da sie außerhalb der Bootstrap liegt.
  3. Wenn möglich, geben Sie die Definition selbst an, bevor sie von seinem normalen Ort geladen wird, z. B. durch explizit include()von einem nicht standardmäßigen Standort unter Ihrem Namespace.

Klang hier draußen deine Fall-zu-Fall-Bedürfnisse-jemand hat eine Idee. Was den Vorlagenpfad betrifft, weist auf den Administratorbereich hin, Siehe meine Antwort Was nicht einmal PHP erfordert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top