Tab in Produktdetails hinzufügen (neuen Tab erstellen)

Thema wurde von Anonymous, 16. Juni 2020 erstellt.

  1. Anonymous

    Anonymous Mitglied

    Registriert seit:
    16. April 2019
    Beiträge:
    20
    Danke erhalten:
    2
    Danke vergeben:
    3
    Hallo Zusammen,
    ich versuche in der product_info_product_description.html ein zusätlichen Tab zu erstellen
    (technische Details) in welchem ich die Zusatzfelder die sonst in der Preisbox oben rechts angezeigt werden
    auflisten will.
    ich habe also den code für den "Beschreibungs"-Tab kopiert und dahinter angefügt und mit den mir wichtigen Variablen
    ausgefüllt.
    Dazu habe ich u.a, eine "products_additional.lang.inc.php erstellt und in das entsprechende Sprachenverzeichnis gepackt.

    Irgendwann habe ich dann gemerkt, dass ich die Sprachvariable ja auch einfach in der product_info.lang.inc.php einfügen könnte. (Also unter text_description => 'Beschreibung' hatte ich text_additional => 'Technische Details' angefügt.

    Danach hatte er mir weder "Beschreibung" noch "Technische Daten " angezeigt ???
    Wenn ich das jetzt wieder auf die alte datei umstelle (load_language_text section="products_additional)
    zeigt er mir die technischen Details an aber nicht mehr die Beschreibung? (Also die Überschrift "Beschreibung"
    Den Inhalt der Produktbeschreibung selbst zeigt er mir an.

    Allerdings bekomme ich das mit dem aktivieren auch nicht richtig hin. Also wenn ein Tab aktiv, dann ist die Überschrift dunkel eingefärbt und Unterstrichen. Rufe ich die Seite neu auf sind sowohl der Tab für die Beschreibung als auch für den "technischen Details" Tab aktiv und ich kann nicht zwischen beiden wählen!!! So als wäre es ein Tab.
    Wenn ich danach z.b. Zubehör ausgewählt habe, tauchen plötzlich die beiden Tabs auf und ich kann , wenn auch ohne
    Überschrift zwischen "Beschreibung" und "Details" wechseln.

    Es werden vorab einige if abfragen gestellt!
    Damit wird z.B. die variable "show description_tab" auf true oder false geschaltet.
    Aber die Bedingungen bzw. die enthaltenen Variablen sind mir nicht geläufig.
    Es wird gefragt ob eine Beschreibung vorhanden ist, ob ein oder mehrere customized Tab/s vorhanden ist/sind, ob show_rating (Kundenbwertung ) als Tab angezeigt werden soll und ob $tabs als Schleife durchlaufen werden soll.

    Wofür steht $GM_GPRINT ?
    Wofür gm_get_conf?
    und wo werden die gefüllt?

    Warum gibt es immer 2 Bedingungen z.b. ($showRating && 'SHOW_RATING_AS_TAB' | gm_get_conf === 'true')
    würde nicht eine Bedingung reichen oder geht es darum ob überhaupt eine Bewertung da ist und ob diese dann als Tab angezeigt werden soll wenn sie da ist.

    Ich hoffe das ist ok, wenn ich hier einen Link zur Seite poste?

    (Link nur für registrierte Nutzer sichtbar.)


    Kann mir u.U. jemand weiter helfen? Sitze da jetzt doch schon ganz schön lange dran ;(

    Vielen Dank auch
     
  2. Wilken (Gambio)

    Wilken (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    7. November 2012
    Beiträge:
    16.421
    Danke erhalten:
    6.197
    Danke vergeben:
    1.909
    Alles mit gprint ist der GX-Customizer.

    Eine Funktion um beliebige allgemeine Konfigurationen zu lesen.
     
  3. Anonymous

    Anonymous Mitglied

    Registriert seit:
    16. April 2019
    Beiträge:
    20
    Danke erhalten:
    2
    Danke vergeben:
    3
    Hm, ich versuche es nochmal nach kurzem Durchatmen.
    Verstehe das gesamte System nicht.

    der code in der product_info_product_description.html begint mit folgenden Zeilen:

    {load_language_text section="product_info"}
    {load_language_text section="reviews" name="reviews"}

    Erste Frage: Wieso wird einmal name= mitgefordert? in der section /lang/german.../reviews.lang.inc finde ich
    keinen name="reviews"
    also load_language_text holt doch einfach nur das array mit den Sprachplatzhaltern rein???
    da Steht dann z.B. $txt.text_description = 'Beschreibung'; wofür dann das name="reviews" in der zweiten Zeile.

    Nachdem ich die product_info_product_description.html zur "-USERMOD.html" erweitert habe greift Gambio auch darauf zu! Schön schonmal.
    Aber sobald ich 2 Textplatzhalter ausgeben will (oder besser seitdem) geht nichts mehr.
    $txt.text_description wird einfach nicht mehr angezeigt in der USERMOD???
    Wenn ich die lösche und auf die Originaldatei zurückgreife wird $txt.text_description wieder durch" Beschreibung" ersetzt.

    Die von mir angelegte Textvariable "$txt.heading_products_additional" holt er sich aus der Datei wenn ich zu beginn
    load_language_text section="products_additional" anfüge. (die natürlich unter lang von mir angelegt wurde.)

    Die $txt.text_description dann leider nicht mehr. Wenn ich da probeweise hardcodiert "Beschreibung" reinschreibe wird es auch angezeigt!!! Wo liegt mein Denkfehler??? ich habe die Originaldatei und die USERMOD nebeneinander liegen.
    Und bis auf den code für den zusätzlichen Tab unterscheidet sich nichts??? Wie kann ich mir $txt ausgeben lassen?

    @Wilken
    danke erstmal
    Ich interpretiere folgende Zeile:
    {if ($GM_GPRINT && 'CUSTOMIZER_POSITION'|gm_get_conf === '1') || $ARR_PRODUCTS_DESCRIPTION[0]|trim !== ''}
    {assign var="show_description_tab" value=true}

    WENN $GM_GPRINT und die "customer_position" oder der Wert für "gm_get_conf" = 1 ist
    ODER das erste Feld des Produktbeschreibungsarrays nicht leer ist
    soll er die Productbeschreibungstab anzeigen bzw. die Variable show_description_tab auf true setzen
    Ist das richtig?

    Also das ist ja eine html Datei keine PHP Datei über die wir hier reden?
    Wie habe ich die einfache Pipe | zu interpretieren? Als logisches ODER
    oder eher als Verknüpfung wie auf der shell? Also "Customizer_position in gm_get_conf",
    dann wäre es ja als array gm_get_conf[customizer_position]

    Oder einfach nur als Funktionsaufruf in Eurem Templatesystem im Sinne von
    if isset $Gm_GPRINT UND customizer_position =1 (Werte werden über die Funktion gm_get_conf geholt???

    Sorry, aber nach Stunden steh ich gerade echt auf dem Schlauch.

    Meine erstellte TAB wird angezeigt "technische Details" allerdings beim ersten Aufruf zusammen mit der Beschreibung.
    Sobald ich ein anderes TAB ausgewählt habe funktioniert (bis auf die Überschriftsanzeige) alles wie es soll...

    Die Datei ist in 2 Teile gegliedert : oben die Navtabs (Navigation) darunter die panes; Also der jeweilige Body mit der Überschrift wenn aktiv.

    Ich hätte jetzt echt nicht gedacht, dass es so schwer ist ein zusätzliches Tab anzulegen.
    Ja, vieles geht über das System aber das array der Zusatzfelder kann er nicht durch euer Template System schicken..?
    Also ich hatte versucht {$additional_fields} über den Artikel als Tab mit anzulegen. Das macht er aber nicht...

    Vielen Dank schonmal und schönen Abend
     
  4. barbara

    barbara G-WARD 2014/15/16

    Registriert seit:
    14. August 2011
    Beiträge:
    29.679
    Danke erhalten:
    8.947
    Danke vergeben:
    1.330
    Du benutzt doch ein Theme, da macht man das nicht mehr mit USERMOD-Dateien.
    Man legt sich ein Child-Theme an und speichert die Dateien dort.

    Und man nimmt auch nicht mehr die ganze Datei, sondern nur noch den Block, den man braucht.

    Hier findest Du eine Anleitung für das Theme:
    https://developers.gambio.de/tutorials.html?v=3.13.1.0&p=theme-system

    und wie man mit Smarty-Blöcken arbeitet:
    https://developers.gambio.de/tutorials.html?v=3.13.1.0&p=smarty-blocks

    Das ist dann später bei Updates nicht so anfällig.

    Wenn ich etwas hinzufüge, und es für die Datei schon eine Sprachdatei gibt, würde ich die erweitern.
    dazu in lang/SPRACHE/user_section/
    (gegebenenfalls noch die weitere Ordnerstruktur einhalten)
    eine Datei mit dem selben Namen anlegen.

    Der Inhalt sieht dann z.B. so aus:

    PHP:
    <?php
    /* --------------------------------------------------------------
        product_info.lang.inc.php 
        
       --------------------------------------------------------------
    */

    $t_language_text_section_content_array = array(
        
    // products_extrafield
        
    'text_inhalt'         => 'Inhalt:',
        
    'text_groesse'     => 'Größe:',
        
    'text_rest'        => 'RESTPOSTEN:',
        
    'text_sonder'         => 'SONDERPOSTEN:',
          
    // products_extrafield ende
    );
    Nach dem Hochladen einer Textdatei dann den Cache für Texte, Module und Seiten (von unten nach oben) leeren.
     
  5. Anonymous

    Anonymous Mitglied

    Registriert seit:
    16. April 2019
    Beiträge:
    20
    Danke erhalten:
    2
    Danke vergeben:
    3
    Guten Morgen Barbara,
    vielen lieben Dank mal wieder!
    Ich bin hier sicherlich nicht der EInzige der sagen kann:" Wenn ich Dich nicht hätte..."

    Also ich habe mir das mit den Blöcken(smarty) angesehen. Im Beispiel wird die Struktur für singlesignon so angegeben:
    Gambio->SSO->Shop->Template->Honeygrid
    Ich gehe mal davon aus dass ich das für themes dann in
    Gambio->AdditionalTab->Shop->Themes->Honeygrid usw. umschreiben muss, was ich so gemacht habe.
    In das Endverzeichnis dann die html Datei rein, die ich anpassen will.
    Jetzt redest Du aber davon "nur" den Block zu nehmen der sich ändert ???

    Die product_info_product_description.html ist voll von ineinander verschachtelten Blöcken !
    Ich bearbeite aber doch nach wie vor die .html Datei??? Oder gibt es irgendwo noch einzelne Dateien für die Blöcke?

    Es gibt den "großen" Block name="product_description-tabs" (eine ungeordnete liste) in welcher dann
    alle weiteren aufgeführt werden. u.a. der Block für die Produktbeschreibung.
    Dahinter wollte ich jetzt andocken; den Teil kopieren und "append" anhängen.
    Mal schauen ob es klappt. Ich melde mich dann wieder.

    Alles in allem empfinde ich die Umstellung auf die Themes allerdings erstmal als "Verschlimmbesserung", sorry.
    Vorher an die Datei ein -USERMOD dran und fertig fand ich wesentlich kompfortabler.
    Alles zusammen und klar gekennzeichnet.
    Bis ich jetzt per FTP aus dem Verzeichnis /Themes/Honeygrid/html/system nach
    GXModules/Gambio/AdditionalTab/Shop/Themes/html/system
    gewechselt bin hab ich schon jede Menge Zeit verloren.
    Wenn ich mir dann den Pfad nicht genau gemerkt oder notiert habe muss ich wieder zurück.
    Aber vielleicht erkenne ich die Vorteile später noch ;)

    Jedenfalls mächtig viel Aufwand um 15 Zeilen Code unterzubringen und den auf der Seite schon vorhandenen Inhalt einer Variablen einfach nur an einer anderen Stelle anzeigen zu lassen...

    frohes Schaffen
    und Danke nochmals
     
  6. barbara

    barbara G-WARD 2014/15/16

    Registriert seit:
    14. August 2011
    Beiträge:
    29.679
    Danke erhalten:
    8.947
    Danke vergeben:
    1.330
    Beim Erstellen ja, aber wenn Du z.B. 10 USERMOD-Dateien hast, musst Du die bei jedem Update überprüfen und gegebenenfalls neu erstellen.

    Mit dem Anhängen an die Blöcke musst Du nur etwas neu machen, wenn sich der Blockname ändert.
    Das ist im ersten Moment etwas mehr, aber bei einem Update viel weniger Aufwand.

    Der Pfad ist falsch, richtig ist:
    GXModules/Gambio/AdditionalTab/Shop/Themes/All/

    Dann ist die Änderung für alle Themes.

    Tipp 1: Lade Dir den Ordner "system" aus dem Theme runter, dann kannst Du da in die Dateien gehen und bleibst im FTP-Programm in GXModules.

    Tipp 2:
    Wenn du ein Childtheme (z.B. eine Kopie von Malibu) hast, kannst Du auch dort eine Datei anlegen.
    Das geht dann unter
    themes/MalibuDATUM/html/custom/
    Die Datei kannst Du z.B.
    product_tab.html
    nennen und dort dann den Smarrty-Block (oder die Blöcke) mit der Änderung eintragen.

    Das hat den vorteil, dass man z.B. Smarty-Blöcke aus verschiedenen Dateien in einer Datei anlegen kann.
    Hast Du z.B. eine Änderung, die in der Liste, im Artikel und im WK sein soll, musst Du nicht 3 Dateien erstellen, sondern nur eine.
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    30. Oktober 2015
    Beiträge:
    2.018
    Danke erhalten:
    330
    Danke vergeben:
    311
    Das sagen viele ...