Ergebnis 1 bis 16 von 16

Thema: Globale Variable in Bedingung verwenden / oder related Modul mehrere Gruppen Problem

  1. #1
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard Globale Variable in Bedingung verwenden / oder related Modul mehrere Gruppen Problem

    Hallo

    Ich habe eine Seite, die Detail Seite zu einem Produkt "produkt_1" aus dem Katalog. Ganz am Ende gibt es "weitere Produkte", mit Infos zu jedem einzelnen weiteren Produkt.
    Im Produktkatalog gibt es eine Spalte weitere Produkte die dann so aussieht "produkt_2,produkt_6".

    $cross_ids = explode(",", $entry['data']['cross_selling']['value']);
    foreach ($cross_ids as $cross_id){
    $GLOBALS["cross_id"] = utf8_decode(trim($cross_id));
    echo $this->replaceInsertTags('{{insert_module::11}}');
    }

    Modul 11 ist dann eine Katalog-Liste.
    Hier müsste ich in der Bedingung dann sagen

    artikelbezeichnung = $GLOBALS["cross_id"]

    Oder sowas in der Art.
    Kann mir jemand helfen oder gibt es eine andere Möglichkeit? Also die einzelnen Artikelbezeichnungen habe ich ja, muss diese nur noch auflisten über den Kataog.

    Bin für jeden Tipp dankbar
    LG
    meone

    ################################################## ###############################

    // EDIT:
    Falls sich jemand mit dem catalog related Modul auskennt:

    Damit läuft es ja - nur noch nicht rund. Ich habe ein neues Feld im Katalog "cross_neu"... bei dem ich 5 Produkten den gleichen Wert "Adapter" zugewiesen habe. Bin ich auf dem ersten Adapter werden die anderen 4 angezeigt.

    Nun gibt es aber auch verschiedene "Gruppen". Also die 5 gehören zur Gruppe "Adapter"... 2 davon aber auch zur Gruppe "Zentrale".
    Die 3 anderen davon dürfen aber nicht mit in die Gruppe Zentrale und dort angezeigt werden.

    Und wenn ich nun "Adapter,Zentrale" den 2 Produkten zuweise, dann werden diese komplett ignoriert, wenn ich auf einer Adapter Seite bin
    Und es kann auch pro Produkt noch mehr Gruppen geben.

    Wie bekomme ich dies gelöst?
    Noch lieber wäre mir es gibt eine Lösung für mein Variablen Problem und ich nutze die alte Variante
    Geändert von meone (05.09.2012 um 16:15 Uhr)

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Innerhalb der Moduleinstellungen kannst du mit der Globalen leider nichts anfangen, weil wahrscheinlich kein PHP unterstützt wird.
    Kannst aber mal probieren, wenn dann eher so, weil ja das Feld Bedinungen als kompletter String weitergegeben wird:
    Code:
    artikelbezeichnung = ' . $GLOBALS["cross_id"] . '
    (event. noch ein Punkt am Ende, siehste ja ob ein SQL Fehler kommt, oder nicht)

    Du könnst aber auch mit GET Parametern und der Erweiterung inputvar arbeiten.

    Wenn es um das Manipulieren der Katalogliste-Ausgabe geht, würde ich das eher über den generateCatalog Hook machen.
    Geändert von Tim G (05.09.2012 um 12:34 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard

    Ein Fehler kam nicht, aber leider kam auch kein Eintrag an. Nur wenn ich halt direkt die Artikelbezeichnung reinschreibe, nur habe ich dann ja zb 5mal das gleiche

    Das mit dem get plugin verstehe ich nicht... kann ich denn {‎{get::var}} unter Bedingungen verwenden? Und wie gebe ich dem Aufruf dann überhaupt vorher die Variable mit per insert modul?

  4. #4
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Mhh, ja schwierig.
    Die Seite müsste ja bereits mit einem GET Parameter aufgerufen werden bzw. einmal neugeladen werden nachdem du den GET gesetzt hast.

    klappt denn sowas:

    artikelbezeichnung = ' . "produkt_2" . '

    bzw.

    mit einem LIKE, weil es ja um Strings geht.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  5. #5
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard

    Ne, da kommt auch kein Fehler und kein Inhalt.

    Und like muss es nicht, weil unter Artikelbezeichnung ist ja nichts mit komma etc sondern direkt produkt_2 was auch nur so in der globalen Variable ausgegeben wird.

    Seltsamerweise ging es vor einigen Tagen noch... allerdings stand dort artikelbezeichnung = crosselling

    Jetzt führte es aber zu einem Fehler obwohl dort nie was geändert wurde und kein Plan wieso es so überhaupt ging. Da es nirgends eine Varibale / Spalte oder sonst was von "crosselling" gab. Nur die Spalte cross_selling existiert in der alle mit Komma getrennt aufgelistet werden (wurde auch nie umbenannt)... wenn ich von crosselling in cross_selling äbander macht dies aber auch kein uterschied.

    Die Seite neu aufzurufen macht leider kein Sinn. Es soll ja direkt unter dem Produkt welches schon aufgerufen wurde angezeigt werden.

    Es muss dafür doch eine Lösung geben ohne das ich direkt auf die Datenbank zugreife und es ohne Katalog löse.
    Denn an sich ist alles mit dem Katalog schon umgesetzt, gestalterisch und mit den benötigen Infos und allem.

  6. #6
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    So richtig habe ich das Anliegen noch nicht verstanden.
    Mach das Katalog related Modul nicht genau das? -> Verwandte Einträge auflisten.

    Egal:
    Hier erstmal noch Hinweise:

    Die globale solltest du vorher entsprechend registrieren z.b. in der initconfig.php für verschachtelte Arrays ist das besonders gut.

    $GLOBALS["cross_id"] = "";


    ps.
    foreach ($cross_ids as $cross_id){
    $GLOBALS["cross_id"] = utf8_decode(trim($cross_id)); // ich bin am Ende der letzte Eintrag der gesamten Liste
    echo $this->replaceInsertTags('{{insert_module::11}}');
    }

    Da ist noch ein kleiner Schnitzer drin, weil du ja nur den letzten Eintrag merkst.

    Um per SQL eine Vorauswahl zu machen wäre auch einfacher
    Code:
    FIND_IN_SET(MEINE_KOMMALISTE,artikelbezeichnung)
    oder jede andere kommaliste mit den Werten

    Aber wenn das artikelbezeichnung = ' . "produkt_2" . ' nicht klappt, dann hakts noch woanders. Zumindest diesen Eintrag solltest du kriegen, vorrausgesetzt es gibt einen Eintrag dessen Feld "artikelbezeichnung" exakt "produkt_2" enthält
    Geändert von Tim G (05.09.2012 um 14:58 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  7. #7
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard

    Erstmal großen Dank das du mir versuchst zu helfen.

    Die globale Variable hab ich mal noch nicht "angemeldet"... weil es ja auch so noch nicht klappt:

    artikelbezeichnung = ' . "produkt_2" . '

    Kommt nichts an. Es steht exakt so in der Tabelle, kein Leerzeichen oder sonst eine Abweichung.

    Den "Schnitzer" sehe ich nicht bei:
    $cross_ids = explode(",", $entry['data']['cross_selling']['value']);
    foreach ($cross_ids as $cross_id){
    $GLOBALS["cross_id"] = utf8_decode(trim($cross_id));
    echo $GLOBALS["cross_id"] . "<br />";
    echo $this->replaceInsertTags('{{insert_module::11}}');
    }

    So bekommt er ja bei jedem Durchlauf einen neuen Eintrag.
    Die Auflistung klappt auch super. Und wenn es 4 Einträge geben soll und ich artikelbezeichnung = produkt_2 in die Bedingung reinschreibe, dann wird das ganze auch 4mal korrekt ausgeführt .. nur halt dann 4x mit produkt_2... hier müsste er natürlich immer die Variable haben - mein Problem

    ####

    "So richtig habe ich das Anliegen noch nicht verstanden.
    Mach das Katalog related Modul nicht genau das? -> Verwandte Einträge auflisten."

    Related Modul... hm... klingt ja an sich gut, ehrlich gesagt habe ich es noch nie bentuzt oder wahr genommen... vllt. auch Dummheit.
    ich werde es mir mal anschauen und mich dann melden.

  8. #8
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard

    Es funktioniert... SO HALB ... . Danke. Ich depp... wieso so umständlich wenn es was integriertes gibt, Bäume, Wald und so

    Verstehe noch nicht wie er die verknüpft.

    Betroffene Felder die übereinstimmen müssen... wenn ich dort Artikelbezeichnung und Cross Selling anklicke kommt kein Ergebnis.
    Wenn ich dort nur Cross Selling Ergebnis anklicke kommen 2 Ergebnisse.
    Aber keins der beiden Ergebnisse gehört eigentlich dazu.
    5 Stück sollten es in diesem Fall auch eigentlich sein.

    Ich nehme mal an dafür bräuchte ich ein extra Feld.
    Und jede Gruppe die zusammen gehört benötigt den gleichen Wert? Und das aktive Produkt wird dann automatisch weggelassen?
    Aber wieso soll ich dann Felder verküpfen?

    Oder funktioniert es doch anders? Und ich hatte zu wenig schlaf!?

    Aktuell sind 158 Produkte vorhanden, ist natürlich viel extra Arbeit.

  9. #9
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Ahja, verstehe.
    Dann stimmt die Schleife.

    probier mal:

    In der initconfig:
    $GLOBALS['test'] = array();


    Im Bedingungsfeld im Modul:

    FIND_IN_SET('.$GLOBALS['test']['cross_ids'].',artikelbezeichnung)


    und im code:

    $GLOBALS['test']['cross_ids'] = $entry['data']['cross_selling']['value'];
    echo $this->replaceInsertTags('{{insert_module::11}}');
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  10. #10
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard

    Fehler. Funktioniert nicht


    // Aber das related habe ich immerhin richtig verstanden. Sonst muss der Kunde zur Not alle Produkte durchgehen und es ändern... .
    Geändert von meone (05.09.2012 um 15:51 Uhr)

  11. #11
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    SQL Fehler? Poste mal.


    Ich kanns leider nicht lokal nachbauen, weil sie mir während meines Urlaubs mein Büro bei einem Einbruch ausgeräumt haben und meine Macs gestohlen haben.
    Bin hier so zu sagen auf Reserve unterwegs...
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  12. #12
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard

    Klingt übel... was dir da passiert ist.

    Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : StartTag: invalid element name in /...../www/system/modules/catalogmultitextwizardfield/CatalogMultiTextWizardField.php on line 56

  13. #13
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von meone Beitrag anzeigen
    Klingt übel... was dir da passiert ist.

    Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : StartTag: invalid element name in /...../www/system/modules/catalogmultitextwizardfield/CatalogMultiTextWizardField.php on line 56
    Ja, nervt total.

    Seltsamer Fehler. Ich hab mit einem SQL Fehler gerechnet. Das ist strange.

    Ich muss erstmal los...
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  14. #14
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard

    Falls sich jemand mit dem catalog related Modul auskennt:

    Damit läuft es ja - nur noch nicht rund. Ich habe ein neues Feld im Katalog "cross_neu"... bei dem ich 5 Produkten den gleichen Wert "Adapter" zugewiesen habe. Bin ich auf dem ersten Adapter werden die anderen 4 angezeigt.

    Nun gibt es aber auch verschiedene "Gruppen". Also die 5 gehören zur Gruppe "Adapter"... 2 davon aber auch zur Gruppe "Zentrale".
    Die 3 anderen davon dürfen aber nicht mit in die Gruppe Zentrale und dort angezeigt werden.

    Und wenn ich nun "Adapter,Zentrale" den 2 Produkten zuweise, dann werden diese komplett ignoriert, wenn ich auf einer Adapter Seite bin
    Und es kann auch pro Produkt noch mehr Gruppen geben.

    Wie bekomme ich dies gelöst?
    Noch lieber wäre mir es gibt eine Lösung für mein Variablen Problem und ich nutze die alte Variante

  15. #15
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Filter deine Einträge im Template deiner zweiten Katalogliste.
    Da existiert auch deine Globale.
    Ist bissel mehr Arbeit, weil zwei Templates aber das sollte verkraftbar sein.


    Sent from my iphone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  16. #16
    Contao-Nutzer
    Registriert seit
    08.12.2011.
    Beiträge
    73

    Standard

    Wenn ich das im Template filter... ist das dann nicht ziemlich Datenbank lastig etc... weil vom Katalog ja alle Ergebnisse ankommen, ich dann manuell nochmal Filter und so nur 1-4 von 150 anzeige... . Ich werde mir sonst glaube ich die Mühe machen und es ohne Katalog machen, direkt mit einer MySQL Abfrage... auch wenn ich dann einiges neu anpassen muss.


    // EDIT:

    Habe es nun eigenständig direkt mit einer MySQL Abfrage gemacht.
    Geht nun.

    Falls jemand aber eine Lösung kennt, ist für die Zukunft sicherlich auch praktisch :-)

    Und danke dir Tim, dass du dir die Mühe gemacht hast! Super.
    Geändert von meone (06.09.2012 um 10:07 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •