Eigene Komponenten

Hallo,

wie ist es möglich eigene components zu registrieren ohne die oxubase direkt zu verändern - eine Ableitung der oxubase (und ein damit verbundenes Überschreiben der $_aUserComponentNames) scheint mir keine Auswirkungen zu zeigen.

Hallo,

was genau hast Du vor, wie soll das Ergebnis aussehen? Welche Revision benutzt Du?

Gruß


Marco Steinhäuser
Community Guide
OXID eSales AG

Hallo nochmal :slight_smile: ,

also ich habe vor, eine eigene komponente einzubinden, sprich, einen bestimmten Programmteil bei jedem Seitenaufruf aufzurufen und dort u.a. dynamische Inhalte für das Template bereitzustellen. (Ich hoffe das deckt so im allgemeinen die Definition einer Komponente ab :wink: )

Diese Komponente hat nichts mit den bisherigen oxcmps zu tun - demnach scheidet eine Ableitung dieser aus logischen Gründen aus.

In der oxUBase werden ja alle Komponenten in den Eigenschaften

$_aComponentNames [für OXID ™ Komponenten]

sowie

$_aUserComponentNames [für meine ™ Komponenten]

definiert, bzw. für den rendering-Prozess “registriert”.

Um nun meine Komponente zu registrieren, sehe ich im Moment leider keine andere Möglichkeit, als diese direkt in der

$_aUserComponentNames

in der oxUBase-Klasse einzutragen.

(Eine Ableitung der oxUBase und ein Überschreiben der $_aUserComponentNames hatte keine Auswirkung gezeigt)

Ich benutze im Moment die aktuelle PE 4.0.1 build 15990.

Wenn Du eine eigene Komponente registrieren möchtest führt im Moment kein Weg daran vorbei die oxUBase in der einen Zeile zu verändern.

Es gibt jedoch noch die Möglichkeit die oxViewConfig zu erweitern (als normales Modul). Auch diese steht in allen Templates zur Verfügung ($oxViewConf) und könnte damit von Dir verwendet werden. In wie weit das sinnvoll ist hängt natürlich davon ab was Du genau machen möchtest.

Viele Grüße

Mathias

Hallo,

die Komponenten im OXID Shop werden nach dem Prinzip des “Decorators” an die jeweils instantiierte View-Klasse “angehängt”. Da dies zu einem ziemlich frühen Zeitpunkt innerhalb des Controller-Prozesses erfolgt, müssen die Komponenten im Rahmen einer Klasse eingebunden werden, die selbst nicht per Modul erweiterbar ist.

Daher bleibt in der Tat nur der Weg, die oxubase selbst zu editieren.

Möglich wäre aber, die eigenen Komponenten ähnlich wie die Module mit in die Grundkonfiguration der Tabelle oxconfig aufzunehmen und von dort auszulesen. So müsste überhaupt keine Datei für die Registrierung der Komponenten angefasst werden. Ich habe das bereits vor einiger Zeit an OXID als Anregung weitergereicht.

Speziell zum Thema “Komponenten” bieten wir übrigens einen 1-tägigen Workshop an:Workshop “OXID eShop Komponenten” in der anzido Akademie

mfgurban


Andreas Ziethen - Geschäftsführeranzido GmbH - ecommerce in guten händen!NEU: anzido Akademie

Hallo,

ich krame diesen alten Thread nochmal raus. Sehe ich das richtig, dass es bisher immer noch der korrekte Weg ist, eine Komponente durch anpassen der oxUbase.php zu registrieren?

Gruß Joscha