GX-Modules - Probleme

Thema wurde von barbara, 21. März 2019 erstellt.

  1. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Hallo Gambio,

    ich bin eigentlich ein großer Fan der GXModules, nur leider funktionieren die nicht immer.
    Dadurch wird man immer wieder "gezwungen" doch auf USERMOD-Dateien auszuweichen.

    Wann funktioniert es nicht:
    Man kann an einen Smarty-Block mit prepend oder append etwas anhängen - das geht gut, außer wenn....
    der Block in einem anderen Modul unter GXModules geändert wurde.
    Dann wird das anhängen schlicht unterbunden.

    Das würde aber bedeuten, dass ein Modulhersteller der einen Block ändern muss, im Ordner "Templates" eine USERMOD erstellen müsste, damit andere Entwickler sich weiterhin anhängen können.

    Will man gar nicht den Inhalt der Blöcke ändern, sondern nur die Reihenfolge , geht das auch nicht - bzw auch nur in einer USERMDO.

    Das Problem ist, wenn ein Entwicker die halbe Datei in seinem Modul in GXModules speichert - so wie es ja sein soll, damit man alles für das Modul an einem Ort hat - ist man am suchen, warum ein Anhängen nicht geht, bzw. wo die Datei liegt, die da blockiert.

    Das beste Beispiel:
    Versucht mal etwas mit "prepend" an den Block
    {block name="snippets_gift_card_content_gv_amount"}
    zu hängen.
    Pfad: templates/Honeygrid(snippets/gift_cart_content.html

    Das geht nur vernünftig als -USERMOD.html

    Besonders übel ist es, wenn größere Bereiche (wie z.B. die Details-Box im Artikel) durch ein Modul blockiert werden, da hier alle Blöcke in dem Bereich nicht mehr nutzbar sind.

    Ein Problem, das hierbei auch nicht bedacht wurde ist, wenn 2 Entwickler den selben Block ändern wollen.
    Logischer weise wird nur eine Änderung übernommen.

    In einer USERMOD war das kein Problem, da hat Entwickler 2 einfach seinen Text dazu geschrieben., aber jetzt sieht 2 die Änderung von 1 gar nicht.....

    Mein Wunsch:
    an Blöcke mit geändertem Inhalt sollten weiterhin auch Sachen angehängt werden können.
    Änderungen innerhalb eines Blockes müssten nach anders funktionieren. - wobei ich im Moment auch keine Idee hätte wie.....
     
  2. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.656
    Danke erhalten:
    1.261
    Danke vergeben:
    300
    @barbara Das ist eigentlich so vorgesehen und sollte auch funktionieren. Hier mal ein Auszug aus der Doku von Smarty selbst. Schau mal ob du damit dein Problem lösen kannst:

    (Link nur für registrierte Nutzer sichtbar.)

    Schau dir auch mal die Bereiche (Link nur für registrierte Nutzer sichtbar.), (Link nur für registrierte Nutzer sichtbar.), an.

    Die Entwickler müssen natürlich dafür sorgen, dass die Blöcke die sie nicht ändern, entweder weglassen werden oder aus dem Parent oder Child mit (Link nur für registrierte Nutzer sichtbar.), (Link nur für registrierte Nutzer sichtbar.)übernommen werden und nicht komplett kopiert werden, da sonst die Vererbung nicht mehr funktioniert.
     
  3. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.656
    Danke erhalten:
    1.261
    Danke vergeben:
    300
    Wie Moritz schon im anderen Thread geschrieben hat, kann man die Snippets im GXModules anpassen, wenn man den Smarty Block aus dem Snippet in die übergeordnete Datei setzt und die in GXModules nutzt, sodass der Block durch das Snippet dann eingebunden wird und korrekt ergänzt wird.

    Beispiel:

    Neue Datei im Ordner /GXModules/MeineFirma/MeinModul/Templates/Honeygrid/module/gift_cart.html mit folgendem Inhalt anlegen:

    HTML:
    {block name="snippets_gift_card_content_gv_amount" append}
            Dies ist ein Test den Block snippets_gift_card_content_gv_amount anzupassen
        {/block}
    Dann sollte der Block der nur im Snippet existiert korrekt erkannt und beim include aus der Vaterdatei den Block ergänzen.
     
  4. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Ahhh, das wird getestet.

    Ist zwar irgendwie nicht ganz logisch.... aber wenn es funktioniert :)
     
  5. #5 postel, 2. April 2019
    Zuletzt von einem Moderator bearbeitet: 2. April 2019
    Funktioniert bestens.
    Habe mehrere Module von xycons, habe dabei meine Anpassungen aus htmls bzw Blöcke die wir beide nutzen mit prepend oder append
    aus über- oder untergeordneten Blocks angepasst, es wird alles perfekt geladen.
     
  6. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    aber Du bist in der Snippets-Datei und nicht bei Papi, wo die Snippets eingebunden sind, oder?
     
  7. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Papi = Vater-Datei :D
    Da kommt der Snippets Block nicht in die
    GXModules/..../Honeygrid/Snippest/product_listing/product.html
    sondern in die
    GXModules/..../Honeygrid/Modules/product_listing/product_listing_v1.html

    Das Problem oben habe ich z.B. bei einer Kundin.
    Da ist in der Detailsbox (im Artikel) ein Modul eingefügt, wodurch fast die ganze Snippets-Datei überladen wird (der Hauptblock wurde an 3 Stellen geändert).
    Das hat aber zur Folge, das man nichts mehr anhängen kann.
    Das ging nur in dem Bereichen außerhalb des Blocks, oder über eine USERMOD.
     
  8. Jetzt verstehe ich dich und kann da zustimmen:
    Ist auch sehr interessant und neu für mich, was Till da geschrieben hat.
    Funktioniert das in deinem Fall?
     
  9. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Ich habe es noch nicht getestet.
     
  10. Anonymous

    Anonymous Beta-Held

    Registriert seit:
    22. März 2015
    Beiträge:
    2.381
    Danke erhalten:
    640
    Danke vergeben:
    414
    Ich habe ein ähnliches Problem.

    In der Datei Honeygrid\snippets\product_listing\product.html möchte ich folgenden Block:

    HTML:
    {block name="snippets_product_listing_product_description_title"}
           <div class="title">
                 <a href="{$p_url}"{if $p_meta} title="{$p_meta}"{/if} class="product-url {if 'ENABLE_JS_HYPHENATION'|gm_get_conf == 'true'}hyphenate{/if}">
                        {$p_headline}
                 </a>
           </div>
    {/block}
    durch folgenden ersetzen:

    HTML:
    {block name="snippets_product_listing_product_description_title"}
        <div class="title">
            <a href="{$p_url}"{if $p_meta} title="{$p_meta}"{/if} class="product-url {if 'ENABLE_JS_HYPHENATION'|gm_get_conf == 'true'}hyphenate{/if}">
                <span>{$module_data.PRODUCTS_NAME_BILD}</span> <!-- Mitsch Produktname-->
            </a>
            <!-- Mitsch Sortierung ebooks -->
            <span class="hidden">{$module_data.PRODUCTS_BILD}</span><!-- Mitsch Ende-->
        </div>
    ersetzen.

    Seit 3.12.x.x gibt es im Ordner GXModules\Gambio\GoogleECommerce\Shop\Templates\Honeygrid\snippets\product_listing auch eine product.html die an den Block {snippets_product_listing_product_description_title} etwas anhängt.

    Leider hat das zur Folge das jetzt meine Änderung den Original nicht mehr ersetzt sondern auch mit angehängt wird.

    Wenn ich Till richtig verstanden habe muss ich meinen Block in die Datei GXModules/mitsch/template/Shop/Templates/Honeygrid/module/product_listing/product_listing_v1.html packen. Leider funktioniert das nicht.

    Hat jemand einen Tipp wie ich das lösen kann?
     
  11. Anonymous

    Anonymous Beta-Held

    Registriert seit:
    22. März 2015
    Beiträge:
    2.381
    Danke erhalten:
    640
    Danke vergeben:
    414
    Habe gerade meinen Testshop auf 3.13.1.0 upgedatet und dort habt ihr in der GXModules/Gambio/GoogleECommerce/Shop/Templates/Honeygrid/snippets/product_listing/product.html
    eure Änderung mit {$smarty.block.parent} angehängt. Damit greift meine Änderung zwar wieder hebelt eure aber aus.
     
  12. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Wenn du selbst auch mit parent arbeitest in deinem müsste es vermutlichst gehen. Ich bin da aber auch kein schrecklicher Experte und hab Till gebeten dir da mal ein Beispiel zu formulieren wenn er heute irgendwann Luft hat, ich hoffe das schafft er noch :)
     
  13. Anonymous

    Anonymous Beta-Held

    Registriert seit:
    22. März 2015
    Beiträge:
    2.381
    Danke erhalten:
    640
    Danke vergeben:
    414
    Wenn ich bei mir mit parent arbeite läd er auch das orginal. Wenn ich meine Änderung so lasse wie beschrieben und bei eurer Datei GXModules/Gambio/GoogleECommerce/Shop/Templates/Honeygrid/snippets/product_listing/product.html aus dem parent ein child mache läuft es wie gewollt.
     
  14. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.656
    Danke erhalten:
    1.261
    Danke vergeben:
    300
    @Michael-77 Danke, wir schauen uns das mal genauer an.
     
  15. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Hallo Michael,

    wenn du komplett ersetzen willst, hat das bei mir so geklappt:
    GXModules/mitsch/template/Shop/Templates/Honeygrid/snippets/product_listing/product.html
    Code:
    {block name="snippets_product_listing_product_description_title"}
    <div class="title">
        <a href="{$p_url}"{if $p_meta} title="{$p_meta}"{/if} class="product-url {if 'ENABLE_JS_HYPHENATION'|gm_get_conf == 'true'}hyphenate{/if}">
        <span>{$module_data.PRODUCTS_NAME_BILD}</span> <!-- Mitsch Produktname-->
        </a>
        <!-- Mitsch Sortierung ebooks -->
        <span class="hidden">{$module_data.PRODUCTS_BILD}</span><!-- Mitsch Ende-->
    </div>
    {/block}
    Es ist dann nur dein Code zu sehen.
     
  16. Anonymous

    Anonymous Beta-Held

    Registriert seit:
    22. März 2015
    Beiträge:
    2.381
    Danke erhalten:
    640
    Danke vergeben:
    414
    Hallo Moritz,

    das klappt bei mir auch nur wird dann eure Änderung aus der Datei GXModules/Gambio/GoogleECommerce/Shop/Templates/Honeygrid/snippets/product_listing/product.html nich mehr geladen.
     
  17. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Das stimmt, aber das halte ich für das richtige Verhalten. Wenn du sagst, ersetze alles, dann sollte das auch passieren und nicht wieder ausgehebelt werden. Natürlich gibt es Fälle, wo man sich nicht am Ende der Kette einklinken möchte, aber dann wirds schwieriger, weil man dann vermutlich einen anderen Namen des Ordners im GXModules braucht, um früher eingebunden zu werden.
     
  18. Anonymous

    Anonymous Beta-Held

    Registriert seit:
    22. März 2015
    Beiträge:
    2.381
    Danke erhalten:
    640
    Danke vergeben:
    414
    Das Problem ist dann allerdings wenn mehrere Personen den selben Block ersetzen bzw. etwas anhängen wollen. Wie wird dann entschieden was gilt? Wird der Ordner GXModules einfach von A bis Z abgearbeitet und Z gewinnt dann?
     
  19. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Anhängen geht immer, nur die Reihenfolge ist nicht perfekt vorraussehbar. Ersetzen ist viel schwieriger. Smarty kennt ab Haus keine Proritäten. Das kann man zum Teil umschiffen, bleibt aber bei Konkurrenz von Anpassungen immer etwas da.