Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabe Tags

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausgabe Tags

    Hallo,

    wenn die mit <?php echo $entry->field('tag-name')->value(); ?> den Namen des Tags ausgeben möchte, erhalte ich lediglich die ID. Wie kann ich auf den Namen des Tags zugreifen?

    Gruß
    Manuel

  • #2
    Datenbank-Abfrage mit der Tags-ID
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Kannst du mir sagen wie so eine Abfrage aussieht oder einen Verweis geben, wo das beschrieben ist?

      Kommentar


      • #4
        bei genau einem Tag

        PHP-Code:
        $arrTags deserialize($entry->field('tag-name')->value()); // array (ids)
        $objTags =  \Database::getInstance()->prepare("SELECT * FROM tl_pct_customelement_tags WHERE id IN(".implode(',',$arrTags).")")
        ->
        limit(1)
        ->
        execute();

        echo 
        $objTags->title
        Zuletzt geändert von Tim; 02.09.2016, 13:19.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          kann es sein, dass dies in Kombination mit Inserttags in einem versteckten Formularfeld nicht funktioniert?

          PHP-Code:
          <?php $arrTags deserialize($this->replaceInsertTags('{{customcatalog::cc_reisedetail::autoitem::reise_altersgruppe}}'));
          liefert
          Code:
          array(1) { [0]=> string(3) "271" }
          sobald die Datenbankabfrage ergänzt wird:
          PHP-Code:
          $objTags =  \Database::getInstance()->prepare("SELECT * FROM tl_pct_customelement_tags WHERE id IN(".implode(',',$arrTags).")")->limit(1)->execute($entry->field('tag')->value());
              echo 
          $objTag->title
          erhalte ich keine Ausgabe mehr...


          Kommentar


          • #6
            Wozu das Inserttag? Du bist doch sicher eh in einem Leser. Da brauchts kein Inserttag, alle Felder kommen rein.

            Mit der aktuellen Tags Version kannst du auch so abfragen:

            $objTagsModel = \PCT_Tags::findById('meineTagId');

            Sag mal in Worten was Du vorhast.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Sag mal in Worten was Du vorhast.
              Der ist gut ;-)

              Ich habe ein Buchungsformular auf einer Leser-Seite. Bei Absenden werden über das Notification Center Benachrichtigungen an Kunde und Anbieter verschickt.
              Diese beinhalten neben den Formulardaten auch Infos zum Objekt (Reise) wie z.B. Reisenummer, Altergruppe (Tag-Feld) usw.
              Die Infos werden als versteckte Felder über Inserttag im Formular mit abgefragt damit sie dem Notification Center zur Verfügung stehen. Das funktioniert auch bei einfachen Textfeldern prima.

              Für Datumsfelder habe ich für die versteckten Felder jeweils ein eigenes umformatiertes Template genommen.
              Bei den Tag-Felder mags aber nicht so richtig klappen...



              Kommentar


              • #8
                Ich würde hier für das versteckte Feld auch nen eigenes Template nutzen und darin alles verpacken. Das sollte gut klappen.
                http://www.premium-contao-themes.com

                Kommentar


                • #9
                  Hab ich ja gemacht - siehe oben...#5

                  Kommentar


                  • #10
                    Zitat von eblick Beitrag anzeigen
                    Hab ich ja gemacht - siehe oben...#5
                    Eigenes Template ist gut. Vielleicht noch die Schreibweisen beachten . Das fehlt ein "s" bei $objTag(s)

                    echo $objTags->title;

                    (ps. bei mir war's auch falsch und keiner hat's gesehen . Alle Mann hier schön die copy & paste Falle gelaufen ) (änder ich gleich mal oben)
                    Zuletzt geändert von Tim; 02.09.2016, 13:29.
                    http://www.premium-contao-themes.com

                    Kommentar


                    • #11
                      Die Abfrage funktioniert ja auch bestens, wenn sie direkt im Leser Template verwendet wird.
                      Sobald der Code im Template des versteckten Felds eingesetzt wird, erscheint nur eine weiße Seite.

                      ---
                      Nachtrag: mit dem Inserttag funktioniert es nun aber -> der Schreibfehler $objTags war die Ursache.

                      Was nun nur noch fehlt, ist das nur das erste Tag ausgegeben wird.
                      Wie können denn alle zum Datensatz gehörigen Tags ausgegeben werden?

                      Konnte mir die Frage selbst beantworten...

                      PHP-Code:
                      <?php 
                      $arrTags 
                      deserialize($this->replaceInsertTags'{{customcatalog::cc_reisedetail::autoitem::reise_altersgruppe}}' )); // array (ids)
                      $ar count($arrTags);    
                      $i 0;
                      ?>

                      <input type="hidden" name="<?= $this->name ?>" value="<?php foreach ($arrTags as $arrTag => $tag):
                      $i++;
                      $objTags =  \Database::getInstance()->prepare("SELECT * FROM tl_pct_customelement_tags WHERE id=$tag")->execute();    
                      echo(
                      $objTags->title);
                      if (
                      $i<$ar): echo(", ");
                      endif;
                      endforeach;   
                      ?>">
                      Zuletzt geändert von eblick; 03.09.2016, 15:14.

                      Kommentar


                      • #12
                        Alle Datensätze bekommst du ohne Limit und z.B. in einer while Schleife oder mit dem Aufruf ->fetchAllAssoc() bzw. direkt für ein Feld: fetchEach();
                        Hier bitte selbstständig in Contaos core Codes schauen oder anderen Code als Referenz anschauen wie dort ähnliche Abfragen getätigt wurden.

                        Hier ein Beispiel, Ausgabe Tags id 1,2,3

                        PHP-Code:
                        $arrTags = array(1,2,3);

                        $objTags = \Database::getInstance()->prepare("SELECT * FROM tl_pct_customelement_tags WHERE id IN(".implode(',',$arrTags).")")->execute();
                        if(
                        $objTags->numRows 0)
                        {
                        echo 
                        implode(','$objTags->fetchEach('title');


                        Sobald der Code im Template des versteckten Felds eingesetzt wird, erscheint nur eine weiße Seite.
                        Anfangen php debugger zu nutzen und Fehlermeldungen anzeigen zu lassen. Weisse Seite = php Fehler
                        Unbedingt anfangen Arrays / Variablen zu prüfen, bevor man foreach Schleifen feuert.
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #13
                          Zitat von Tim Beitrag anzeigen
                          bei genau einem Tag

                          PHP-Code:
                          $arrTags deserialize($entry->field('tag-name')->value()); // array (ids)
                          $objTags = \Database::getInstance()->prepare("SELECT * FROM tl_pct_customelement_tags WHERE id IN(".implode(',',$arrTags).")")
                          ->
                          limit(1)
                          ->
                          execute();

                          echo 
                          $objTags->title
                          Ist es möglich das jeweilige Elternelement des Tags auszugeben?
                          Zuletzt geändert von Manuel; 24.10.2016, 10:02.

                          Kommentar


                          • #14
                            Die PID des Kindelements ist die ID des Elternelements. Damit z.B. eine weitere Abfrage je Kind durchführen oder per JOIN innerhalb einer Abfrage. Etwas leichter zu handeln ist es sicher mit einer zusätzlichen Abfrage je Kind.
                            Post #12 zeigt wie eine Schleife je Kind durchlaufen wird.
                            http://www.premium-contao-themes.com

                            Kommentar


                            • #15
                              Gibt es eigentlich die Möglichkeit den ganzen Baum der Tags im Frontend auszugeben.
                              Im Backend ist es ja möglich.
                              Wie kann man das rekursiv über die PID lösen?

                              Danke für Anregungen!
                              Zuletzt geändert von substance; 20.11.2017, 18:49.

                              Kommentar

                              Lädt...
                              X