Ankündigung

Einklappen
Keine Ankündigung bisher.

Warum ein Add-on besser ist als eine manuelle Anlage im AdminCP

Einklappen
X
Einklappen
Momentan aktive Benutzer in diesem Thema: 1 (0 Benutzer und 1 Gäste)

  • Warum ein Add-on besser ist als eine manuelle Anlage im AdminCP

    Möchtet Ihr über einen Hook verschiedene Funktionen, oder einfach nur ein paar Zeilen HTML-einfügen, ist in vielen Anleitung die Rede von "Template erstellen und über einen HOOK an der entsprechenden Stelle einblenden."

    Warum dies zwar sehr gut funktioniert, aber meiner Meinung nach nicht die beste Art der Erweiterung ist, hier kurz erläutert.
    Als Beispiel nehme ich die Erweiterung der Breadcrumbs, welche ich bereits als kleines Modul (.XML) erstellt habe.
    Dieses könnt Ihr euch hier herunterladen:
    https://vbulletin-forum.de/forum/anp...footer-bereich

    Als erstes erkläre ich noch mal anhand der Anleitung welche auch auf vB.com verfügbar gestellt wurde, wie dies einfach im AdminCP erledigt werden kann ohne ein Modul:
    Schritt 1:
    • Im AdminCP -> Styles -> Styles verwalten -> Neues Template hinzufügen (In dem Dropdown neben dem gewünschten Style auswählen)
    • Title: breadcrumbs_footer
    • Im Template den folgenden code einfügen:


    Code:
    <vb:if condition="$page['crumbs']">
            {vb:set breadcrumbSchema.itemprop, breadcrumb}
            <ul id="breadcrumbs" class="h-clearfix" {vb:schema {vb:raw breadcrumbSchema}}>
                <li class="crumb ellipsis"><a class="crumb-link" href="{vb:raw baseurl}/">{vb:phrase home}</a></li>
                <vb:each from="page.crumbs" value="crumb">
                    <vb:if condition="isset($crumb['phrase']) AND !empty($crumb['phrase'])">
                        {vb:set crumbTitle, {vb:rawphrase {vb:raw crumb.phrase}}}
                    <vb:elseif condition="isset($crumb['title'])" />
                        {vb:set crumbTitle, {vb:raw crumb.title}}
                    <vb:else />
                        {vb:set crumbTitle, ''}
                    </vb:if>
                    <li class="vb-icon separator"></li>
                    <li class="crumb ellipsis"><vb:if condition="$crumb['url']"><a class="crumb-link" href="{vb:raw baseurl}{vb:raw crumb.url}">{vb:raw crumbTitle}</a><vb:else />{vb:raw crumbTitle}</vb:if></li>
                </vb:each>
            </ul>
        <vb:else />
            <div id="breadcrumbs"></div>
        </vb:if>
    • Klicke Speichern.


    Schrift 2:
    • In Add-ons & Hooks -> Hooks verwalten -> Neuen Hook hinzufügen (https://DEINE-DOMAIN/admincp/hook.php?do=add)
    • Wähle als Einstiegspunkt (Hook): footer_start
    • Beispieltitel: Breadcrumbs Footer
    • In Hook Arguments folgendes einfügen: page=page
    • Klicke Speichern


    Fertig, nun werden die Breadcrumbs in dem entsprechenden Style auch im Footer dargestellt.

    Der enorme Nachteil dieser Variante ist, dass das neue Template in allen Styles erstellt, bearbeitet und gelöscht werden muss (wenn es mal nicht mehr benötigt würde).
    Gehen wir also mal davon aus vB ändert irgendetwas an den Breadcrumbs und diese stellen sich nun im Header ganz anders dar.
    Nun müssten alle erstellten Templates aller Styles angepasst werden.
    Setzt man also mehr als nur einen Style ein, ist dies sehr aufwendig und Zeit welche man sich sparen kann.

    Ein weiterer Vorteil ist die Darstellung der HOOKs. Diese sind nach Modulen sortiert. Hinterlegt man ein Template also hinter mehr als einem Hook, werden diese alle im Bereich des entsprechenden Moduls dargestellt.
    Eine Änderung kann ganz einfach durch überschreiben des Add-ons erledigt werden.

    Möchte man das Template irgendwann löschen, kann dies ganz einfach über die Add-on-Deinstallation in allen Styles erledigt werden.

    Fazit: Auch kleinste Template-Anpassungen bzw. neue Templates sollten meiner Einschätzung nach immer via Add-on/ Modul erstellt werden.



    • shining
      #1
      shining kommentierte
      Kommentar bearbeiten
      Muss man das Template dann im jeden Style hinzufügen (falls man welche zum wechseln hat)?
      Und dann auch jedes Hook mehrfach für jeden Style anlegen?

    • delicjous
      #2
      delicjous kommentierte
      Kommentar bearbeiten
      Der hook ist einmalig für alle Styles, aber Du müsstest für jeden Style ein eigenes Template mit dem gleichen Namen (= den in dem Hook) anlegen, damit dieser das Template auch laden könnte. Legst Du ein Addon an, kannst Du dieses bei einem neuen Style einfach überschreiben und die Templates werden alle aktualisiert (außer Du hast das Template manuell angepasst). Musst Du das Template anpassen welches Du über den Hook lädst, kannst Du dies auch wieder in dem Add-on anpassen und dann überschreiben. Dann werden gleich wieder alle Templates angepasst.
    Das Verfassen von Kommentare wurde deaktiviert.

Neuste Tutorials

Einklappen

  • PHP Template-Syntax
    von delicjous
    In den Templates können gewisse PHP-Funktionen abgerufen werden. Hierzu könnt Ihr die Methode vb:php anwenden.
    Im folgenden ein paar Beispiele:

    Erzeugt ein Array:
    Code:
    {vb:set Array, {vb:php array}}
    Hier kommt raus: alles klein geschrieben
    Code:
    {vb:php strtolower, 'ALLES KLEIN GESCHRIEBEN'}
    Unter den Funktionen noch ein vollständiges Beispiel mit erläterungen!


    Erlaubte Funktionen:
    • implode() - Verbindet Array-Elemente zu einem
    ...
    25.12.2017, 15:41
  • Template-Bedingungen (conditionals)
    von delicjous
    Durch Templatebedingungen können je Nach Variablen-Zustand verschiedene Ausgaben generiert werden. Dies ist zum Beispiel nützlich um eine Seite für Gäste anders als für die angemeldeten Benutzer darzustellen, oder zum Beispiel Teile des Templates nur für bestimmte Benutzergruppen darzustellen.

    Hier ein paar Beispiele wie Template-Bedingungen verwendet werden können:

    Benutzer angemeldet/ nicht angemeldet/ gehört zu Benutzergruppe:
    HTML-Code:
    <vb:if condition="!$user
    ...
    18.11.2017, 18:51
  • Warum ein Add-on besser ist als eine manuelle Anlage im AdminCP
    von delicjous
    Möchtet Ihr über einen Hook verschiedene Funktionen, oder einfach nur ein paar Zeilen HTML-einfügen, ist in vielen Anleitung die Rede von "Template erstellen und über einen HOOK an der entsprechenden Stelle einblenden."

    Warum dies zwar sehr gut funktioniert, aber meiner Meinung nach nicht die beste Art der Erweiterung ist, hier kurz erläutert.
    Als Beispiel nehme ich die Erweiterung der Breadcrumbs, welche ich bereits als kleines Modul (.XML) erstellt habe.
    ...
    25.10.2017, 15:42
Lädt...
X