Ergebnis 1 bis 18 von 18

Thema: Schlagworte für Catalog

  1. #1
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard Schlagworte für Catalog

    Ahoi zusammen,

    ich habe mir die Erweiterung "catalog_tagsfield" installiert. Im Backend habe ich ein neues Feld "Schlagworte" angelegt und dieses im Katalog-Leser aktiviert.

    Dann noch im Template die entsprechende Zeile eingefügt:

    PHP-Code:
    <?php echo $entry['data']['schlagworte']['value']; ?>
    Problem:
    Die Schlagworte werden nicht angezeigt! Die Anzeige per
    PHP-Code:
    <?php print_r($this->entries); ?>
    Gibt mir aus:
    HTML-Code:
    Array ( [label] => Tags [type] => tagsmodul_field [raw] => 0
    Das Array scheint also leer zu sein. Ich hab' das jetzt drei mal gecheckt: im entsprechenden Katalog-Eintrag sind die Schlagworte da (4 Stück übrigens)...

    Ich steh' auf dem Schlauch!
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  2. #2
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo mike_mcfly,
    ich hab keine Ahnung von der Erweiterung.. deswegen kann ich da nur raten...
    1. Alle Module installiert die du dafür brauchst?
    2. Welcher Catalog ist es? Aus dem ER oder aus dem SVN? Kann sein, das nur einer davon damit zusammenspielt, wenn sich schon wieder einiges geändert hat an den Stellen wo diese Erweiterung ansetzt...
    3. Eventuell funktioniert die da auch gar nicht, da bei der Beschreibung steht, das die bisher nur im Backend getestet wurde ;-)

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  3. #3
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard Schlagworte für Catalog

    Hi,

    also bei mir ist der Catalog 2.0.0 beta2 installiert, ebenso die tags Erweiterung.

    Edit: ich habe jetzt mal den Entwickler angeschrieben, vielleicht hat er einen Rat!
    Geändert von mike_mcfly (31.12.2012 um 09:37 Uhr)
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  4. #4
    Contao-Nutzer Avatar von sr-tag
    Registriert seit
    13.12.2010.
    Ort
    nördliches Brandenburg
    Beiträge
    74

    Standard die Lösung ist eine manuelle Anpassung des Templates

    Hi mike_mcfly,

    Da die Werte des tags-Moduls nicht in den Katalog-Tabellen sondern in der tags-Tabelle abgelegt werden, benötigt man/frau für die Ausgabe der vergebenen Tags eine SQL-Abfrage direkt im jeweiligen Template.

    Im folgenden aus einem Projekt. Das ist ein zusätzlicher Filter von einem catalog-list-Template. Dieser Code wird ausgeführt wenn ein tag(Schlagwort) per GET-Parameter übergeben wurde.

    Code:
    <?php
    
    $Table = 'cat_hints'; //Tabelle an die eigene catalog-Tabelle anpassen
    $idArr = array();
    
    if($this->Input->get('tag'))
    {
        $this->import('Database');
        $hintsByTagsObj = $this->Database->prepare('SELECT `'.$Table.'`.`id` FROM `'.$Table.'` LEFT JOIN `tl_tag` USING(`id`) WHERE `tl_tag`.`from_table`=? AND `tl_tag`.`tag`=?')
    				     ->execute($Table,$this->Input->get('tag'));
        
        $hintsByTagsArr = $hintsByTagsObj->fetchAllAssoc();
    
        foreach($hintsByTagsArr as $col => $val) $idArr[] = $val['id'];
    }
    
    ?>
    dann musst du noch in der foreach-Schleife vor dem HTML folgendes einfügen, damit alle Einträge übersprungen werden, die nicht mit diesem Tag übereinstimmen.

    Code:
    if(count($idArr) > 0 && !in_array($entry['id'],$idArr)) continue;
    -----------------------------------------
    Ich hab eben gesehen das du seit zwei Wochen bereits auf Antwort wartest. Da ich so selten hier ins Forum schaue, am besten mich immer gleich per Mail anschreiben. Das geht wesentlich schneller
    Geändert von sr-tag (31.12.2012 um 16:05 Uhr)

  5. #5
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard catalog tags

    Danke erst mal für Deine Hilfe!

    Beziehen sich Deine Angaben auf die Erweiterung "catalog_tagsfield"?

    Also mein Template sieht jetzt so aus (kurze Vorwarnung: ich bin in PHP ein Nulpe):

    PHP-Code:
    <?php if (count($this->entries)): ?>
    <div class="layout_full">
    <?php foreach ($this->entries as $entry): ?>
    <?php 
    if(count($idArr) > && !in_array($entry['id'],$idArr)) continue; ?>
    <?php $GLOBALS
    ['kunde_css_klasse'] = $entry['data']['kunde']['value']; ?>
    <div class="Design-Projekt-Detail">
    <h2 itemprop="name"><?php echo $entry['data']['kunde']['value']; ?> <span><?php echo $entry['data']['kategorie']['value']; ?></span></h2>
    <?php endforeach; ?>

    <!-- Slideshow darstellen falls angegeben -->
    <?php if($entry['data']['slideshow']['value']) : ?>
    <div class="flexslider">
        <ul class="slides">  
            <?php  
            
    foreach($this->entries as $entry) :    
                foreach(
    $entry['data']['slideshow']['meta'] as $picture) {  
                    echo 
    "<li><img src=\"{$picture['src']}\" width=\"880\"/></li>\n";  
                }   
            endforeach; 
    ?>      
        </ul>
    </div>
    <?php endif; ?>

    <?php if($entry['data']['kurzbeschreibung']['value']) : ?>
    <!-- Kurzbeschreibung darstellen falls eingegeben -->
    <h3 itemprop="description" class="kurzbeschreibung"><?php echo $entry['data']['kurzbeschreibung']['value']; ?></h3>
    <?php endif; ?>

    <?php if($entry['data']['beschreibung']['value']) : ?>
    <!-- Beschreibung darstellen falls eingegeben -->
    <p class="beschreibung"><?php echo $entry['data']['beschreibung']['value']; ?></p>
    <?php endif; ?>    

    <?php if($entry['data']['bigpicture']['value']) : ?>
    <!-- Grosse Bilder darstellen falls eingegeben -->
    <p class="bigpicture"><?php echo $entry['data']['bigpicture']['value']; ?></p>
    <?php endif; ?>    

    <?php if($entry['data']['popup_bilder']['value']) : ?>
    <!-- Projektbilder -->
        <div id="lightbox_bilder"><?php echo $entry['data']['popup_bilder']['value']; ?></div>
    <?php endif; ?>    

    <!-- Tags -->
    <?php
        $Table 
    'schlagworte'//Tabelle an die eigene catalog-Tabelle anpassen
        
    $idArr = array();
        if(
    $this->Input->get('tag'))
        {
        
    $this->import('Database');
        
    $hintsByTagsObj $this->Database->prepare('SELECT `'.$Table.'`.`id` FROM `'.$Table.'` LEFT JOIN `tl_tag` USING(`id`) WHERE `tl_tag`.`from_table`=? AND `tl_tag`.`tag`=?') ->execute($Table,$this->Input->get('tag'));
        
    $hintsByTagsArr $hintsByTagsObj->fetchAllAssoc();
        foreach(
    $hintsByTagsArr as $col => $val$idArr[] = $val['id'];
        }
    ?>
        
    </div> <!-- Ende Design-Projekt-Detail -->

    </div>
    <?php else: ?>
    <p class="info"><?php echo $this->noItemsMsg?></p>
    <?php endif; ?>
    In Zeile 4 und ab dem <!-- Tags --> Kommentar habe ich Deine Zeilen eingefügt. Das Tabellenfeld lautet "Schlagworte"...

    ...so funktioniert's leider noch nicht !
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  6. #6
    Contao-Nutzer Avatar von sr-tag
    Registriert seit
    13.12.2010.
    Ort
    nördliches Brandenburg
    Beiträge
    74

    Standard

    nein, vergiss dort mal wie dein tag-Feld in deinem Katalog heißt. Das brauchen wir nicht. Die Tabelle, also wie heißt deine Katalog-Tabelle? Die muss du dort eintragen. Denn die Begriffe werden nicht in der Katalog-Tabelle gespeichert sondern in der Tabelle vom tags-Modul. Dort wird sie mit der ID und dem Tabellen-Namen pro Begriff-Zuordnung abgelegt. Also muss man die Zuordnungen dort auch wieder rausholen.

    Mein PHP-Schnipsel pack mal ganz an den Anfang deines Templates.

    Das in Zeile 4 kann so stehn bleiben, nur muss eben der PHP-Code noch vor der foreach-Schleife ausgeführt werden.

    dann sollte es funktionieren
    Geändert von sr-tag (01.01.2013 um 21:05 Uhr)

  7. #7
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard

    Hab' ich gemacht, leider gibt es keine Ausgabe.

    Die Catalog-Tabelle heißt "referenzen"

    PHP-Code:
    <?php
        $Table 
    'referenzen'//Tabelle an die eigene catalog-Tabelle anpassen
        
    $idArr = array();
        if(
    $this->Input->get('tag'))
        {
        
    $this->import('Database');
        
    $hintsByTagsObj $this->Database->prepare('SELECT `'.$Table.'`.`id` FROM `'.$Table.'` LEFT JOIN `tl_tag` USING(`id`) WHERE `tl_tag`.`from_table`=? AND `tl_tag`.`tag`=?') ->execute($Table,$this->Input->get('tag'));
        
    $hintsByTagsArr $hintsByTagsObj->fetchAllAssoc();
        foreach(
    $hintsByTagsArr as $col => $val$idArr[] = $val['id'];
        }
    ?>

    <?php if (count($this->entries)): ?>
    <div class="layout_full">
    <?php foreach ($this->entries as $entry): if(count($idArr) > && !in_array($entry['id'],$idArr)) continue; ?>

    <?php $GLOBALS['kunde_css_klasse'] = $entry['data']['kunde']['value']; ?>
    <div class="Design-Projekt-Detail">
    <h2 itemprop="name"><?php echo $entry['data']['kunde']['value']; ?> <span><?php echo $entry['data']['kategorie']['value']; ?></span></h2>
    <?php endforeach; ?>

    <!-- Slideshow darstellen falls angegeben -->
    <?php if($entry['data']['slideshow']['value']) : ?>
    <div class="flexslider">
        <ul class="slides">  
            <?php  
            
    foreach($this->entries as $entry) :    
                foreach(
    $entry['data']['slideshow']['meta'] as $picture) {  
                    echo 
    "<li><img src=\"{$picture['src']}\" width=\"880\"/></li>\n";  
                }   
            endforeach; 
    ?>      
        </ul>
    </div>
    <?php endif; ?>

    <?php if($entry['data']['kurzbeschreibung']['value']) : ?>
    <!-- Kurzbeschreibung darstellen falls eingegeben -->
    <h3 itemprop="description" class="kurzbeschreibung"><?php echo $entry['data']['kurzbeschreibung']['value']; ?></h3>
    <?php endif; ?>

    <?php if($entry['data']['beschreibung']['value']) : ?>
    <!-- Beschreibung darstellen falls eingegeben -->
    <p class="beschreibung"><?php echo $entry['data']['beschreibung']['value']; ?></p>
    <?php endif; ?>    

    <?php if($entry['data']['bigpicture']['value']) : ?>
    <!-- Grosse Bilder darstellen falls eingegeben -->
    <p class="bigpicture"><?php echo $entry['data']['bigpicture']['value']; ?></p>
    <?php endif; ?>    

    <?php if($entry['data']['popup_bilder']['value']) : ?>
    <!-- Projektbilder -->
        <div id="lightbox_bilder"><?php echo $entry['data']['popup_bilder']['value']; ?></div>
    <?php endif; ?>    

    <!-- Tags -->

        
    </div> <!-- Ende Design-Projekt-Detail -->

    </div>
    <?php else: ?>
    <p class="info"><?php echo $this->noItemsMsg?></p>
    <?php endif; ?>

    Fehlt da nicht noch ein echo, damit das Tag auch angezeigt wird, bisher haben wir ja nur eine Abfrage der Datenbanktabelle, oder?
    Geändert von mike_mcfly (01.01.2013 um 21:08 Uhr)
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  8. #8
    Contao-Nutzer Avatar von sr-tag
    Registriert seit
    13.12.2010.
    Ort
    nördliches Brandenburg
    Beiträge
    74

    Standard

    jenachdem worauf du hinauswillst.

    mein gezeigter Code filtert die Liste nach den übergebenen Schlagwort. Wenn du eine Tagwolke haben willst dann nimmst du die aus dem Tag--Modul mit den Begriffen deiner Catalog-Tabelle.
    Wenn du alle zugeordneten Begriffen pro Eintrag direkt im Eintrag ausgegeben haben willst muss man da noch was anderes machen.

    Beschreib mal genauer was genau du haben willst.

  9. #9
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard Aufzählung der Tags

    Verstehe.

    Also ich wollte dass eigentlich so haben, dass in der Catalog-Full-Ansicht unterhalb des Katalogeintrages eine Tagliste steht, die ich zuvor mit der "catalog_tagsfield" Erweiterung im Backend in dem jeweiligen Katalog-Eintrag angegeben habe.

    Ungefähr so:

    Tags: schlagwort1, schlagwort2, schlagwort3

    Das hätte ich dann einfach innerhalb der foreach-Schleife per unsortierter Liste ausgegeben:
    HTML-Code:
    <ul id="tagliste">
    	<li><?php echo $entry['data']['tag']['value']; ?></li>
    </ul>
    ...funktioniert aber so nicht. Habe auch schon alle möglichen Array-Values ausprobiert, leider ohne Erfolg es wird nichts angezeigt.
    Geändert von mike_mcfly (01.01.2013 um 21:50 Uhr)
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  10. #10
    Contao-Nutzer Avatar von sr-tag
    Registriert seit
    13.12.2010.
    Ort
    nördliches Brandenburg
    Beiträge
    74

    Standard

    aha,

    wie schon paar mal geschrieben, die Schlagwörter(tags) werden nicht in deiner Catalog-Tabelle abgelegt sondern in der Tabelle des tag-Moduls.

    also must du innerhalb deiner foreach-Schleife eine Datenbankabfrage machen.

    De folgenden Code hab ich hier direkt reingeschrieben und noch nicht selbst getestet:

    PHP-Code:
    <?php
        $Table 
    'referenzen'//Tabelle an die eigene catalog-Tabelle anpassen
        
    $tagsList '';
        
    $this->import('Database');
        
    $tagsObj $this->Database->prepare('SELECT * FROM `tl_tag`  WHERE `from_table`=? AND `id`=?') ->execute($Table$entry['id'] );

        if(
    $tagsObj->numRows >0)
        {
            while(
    $tagsObj->next()) $tagsList '<li>'.$tagsObj->tag.'</li>';
            
    $tagsList '<ul>'.$tagsList.'</ul>';
        }
    ?>
    und dann kannst du danach an einem Platz im Template deiner Wahl diese Begriffe als String so ausgeben.
    PHP-Code:
    <?php echo $tagsList?>
    Geändert von sr-tag (01.01.2013 um 22:14 Uhr)

  11. #11
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard

    klappt zwar noch nicht so... aber ich will Dich jetzt nicht weiter mit meinen Fragen nerven.

    Daher sage ich an der Stelle jetzt mal vielen herzlichen Dank

    ...und probiere es weiter.

    Wenn ich's rausgefunden habe poste ich es dann hier für die Nachwelt!


    EDIT: ---------------

    Wer lesen kann ist klar im Vorteil!

    So klappt's! Mit dem Codeschnipsel, wie von Dir beschrieben, INNERHALB der Schleife !

    Super
    Geändert von mike_mcfly (01.01.2013 um 22:15 Uhr) Grund: erledigt
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  12. #12
    Contao-Nutzer Avatar von sr-tag
    Registriert seit
    13.12.2010.
    Ort
    nördliches Brandenburg
    Beiträge
    74

    Standard

    hab grad meinen letzten Post nochmal überarbeitet. probier den mal.

    Also Code innerhalb der foreach-Schleife und Ausgabe da wo du es haben willst aber unterhalb des Codes

  13. #13
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard

    Zitat Zitat von sr-tag Beitrag anzeigen
    hab grad meinen letzten Post nochmal überarbeitet. probier den mal.

    Also Code innerhalb der foreach-Schleife und Ausgabe da wo du es haben willst aber unterhalb des Codes
    Super!

    Allerdings wird jetzt nur noch das letzte Tag ausgegeben!
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  14. #14
    Contao-Nutzer Avatar von sr-tag
    Registriert seit
    13.12.2010.
    Ort
    nördliches Brandenburg
    Beiträge
    74

    Standard

    ah ok ich seh das Problem,

    tausch mal die Zeile:
    PHP-Code:
    while($tagsObj->next()) $tagsList '<li>'.$tagsObj->tag.'</li>'
    mit:
    PHP-Code:
    while($tagsObj->next()) $tagsList .= '<li>'.$tagsObj->tag.'</li>'
    Der fehlende Punkt bei .= war da Problem

  15. #15
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard

    Suuuuuper

    Genau dass war's !

    Vielen Dank für Deine Hilfe. Ich hoffe ich kann's mal wieder "in Sachen CSS" gut machen, darin bin ich ganz gut
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  16. #16
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard Funktioniert plötzlich nicht mehr

    Hi,

    wie ich gerade feststelle wird die Abfrage des Autors nicht mehr richtig ausgewertet:

    PHP-Code:
    <ul class="meta_infos">
        <li class="zurueck"><p class="back btn">{{link_open::5}}&laquo; Alle Referenzen</a></p></li>
        <li class="autoren">
            <?php if($entry['data']['autor']['value']['Mike']) : ?>
            <p class="autor">Designer: <a href="https://plus.google.com/118298993110516122415/" rel="author" target="_blank">Mike</a> // <a href="https://plus.google.com/b/102712863393939042928/102712863393939042928/">fi Design</a></p>
            <?php else: ?>
            <p class="autor">Chefdesigner: <a href="https://www.facebook.com/andrea.daloia.9/" rel="author" target="_blank">Andrea</a> // <a href="https://plus.google.com/b/102712863393939042928/102712863393939042928/">fi Design</a></p>
            <?php endif; ?>
        </li>
    </ul>
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

  17. #17
    Contao-Nutzer Avatar von sr-tag
    Registriert seit
    13.12.2010.
    Ort
    nördliches Brandenburg
    Beiträge
    74

    Standard liegt aber nicht an catalog_tagsfield

    Hi mike_mcfly,

    das liegt aber nicht an meiner Erweiterung.

    Aber ich glaube, das ich deinen Fehler sehe:

    Du fragst da das ab:
    PHP-Code:
    <?php if($entry['data']['autor']['value']['Mike']) : ?>
    ich denke aber das du das meinst:
    PHP-Code:
    <?php if($entry['data']['autor']['value'] == 'Mike') : ?>

  18. #18
    Contao-Fan Avatar von mike_mcfly
    Registriert seit
    29.11.2009.
    Ort
    Waiblingen
    Beiträge
    462

    Standard

    Danke. Diese Abfrage hatte ich auch schon versucht, leider ohne Erfolg. Dabei wurde mir immer der Wert "Array" ausgegeben.

    Mit der "Unser-ID" hat es dann geklappt:

    PHP-Code:
    <?php if($entry['data']['autorx']['raw'] == '1') : ?>
    .................................................. ...............................
    Warum der Marine beitreten, wenn man Pirat sein kann?
    - Steve Jobs

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
  •