Ergebnis 1 bis 36 von 36

Thema: Tag Cloud für Katalog

  1. #1
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard Tag Cloud für Katalog

    Hallo Community,

    wie kann man eine Tag Cloud für Katalogeinträge auf Basis von Taxonomy-Begriffen erzeugen? Gibt es dafür ein einfaches Vorgehen? Habt ihr Tipps und Ideen? Hat jemand schonmal sowas gemacht?

    Ich freue mich auf eure Antworten!

    Gruß
    globalcow

  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 globalcow,
    dem ganzen fehlt ein wenig von einer echten Tagcloud.. leider wird keine Gewichtung von den Items vorgenommen..
    Aber ansonsten sollte das relativ simpel sein. Ist im Grunde nix anderes als ein Filter ;-)

    Mehr kann ich dazu aktuell nicht wirklich sagen.
    Außer das im alten Forum mal jemand etwas entwickelt hatte (engl. Teil) und viel mit dem Entwickler getextet hatte dazu.

    Such einfach mal danach, vllt steht da noch das ein oder andere nützliche drinn.

    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-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Hi MacKP,
    danke für deine Antwort! Leider bin ich im alten Forum (sowohl in der deutschen als auch in der englischen Version) nicht wirklich fündig geworden

    Du hast aber natürlich recht, die Tags herauszubekommen und auch deren Häufigkeit zu bestimmen kann ich über eine simple SQL-Abfrage bewerkstelligen. Also z.B.:
    Code:
     SELECT COUNT(a.id), b.tagname FROM cat_quelle AS a INNER JOIN tl_taxonomy AS b ON a.tag = b.id GROUP BY b.tagname
    Kann man den eine solche Abfrage irgendwie mit Typolight bzw. Catalog Bordmitteln bewerkstelligen? Oder muss ich dafür gleich ein neues Modul schreiben? Wie geht man da vor? Ich gebe zu das ich in PHP Dingen nur wenig Erfahrung habe.

    Ich bin auch noch gerne für Vorschläge von anderen offen.

    Gruß
    globalcow

  4. #4
    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 globalcow,
    das könntest du im template direkt machen. Einfach das Filter-Template damit aufbohren ;-)

    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."

  5. #5
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Hi MacKP,
    habe das tatsächlich durch Abwandlung des Templates hinbekommen. Prima!

    So elegant wie das mit der sql GROUP BY Funktion geht habe ich das aber nicht hinbekommen. Die Abfrage selber kann man ja im Template nicht mehr beeinflussen, lediglich deren Auswertung.

    Gruß
    globalcow

  6. #6
    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

    Hmm an sich soltest das schon ein wenig beeinflussen können (zum Beispiel könntest in einer Schleife die ID setzten nach der gesucht werden soll in der DB um nicht für jedes Wort ne extra Abfrage machen zu müssen).
    Ich kann dir da nur im Moment keine Beispiel zusammen basteln, da ich nicht so gut in solchen Dingen bin und ich daher viel zu lange brauchen würde um da was zu basteln *g*
    Hab im Moment einfach etwas mehr zu tun ><

    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."

  7. #7
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Neeee, habe das schon automatisiert hinbekommen! Aber ich musste das GROUPing manuell machen, mit einem Array als Zwischenspeicher. Das Ergebnis der oben genannten SQL-Abfrage hätte mir das erspart.

    Für dich und vielleicht auch andere interessant: Hier ist der Inhalt meines Templates. Achso, ich habe keine Ahnung wie man "sauber" PHP programmiert, also keine Kritik am Code

    PHP-Code:
    <?php if (count($this->entries)): ?>
    <?php 
    // Für Debug ?>
    <?php 
    // print_r($this->entries); ?>
    <div class="cloud">
    <?php 
    $tags
    ;
    foreach (
    $this->entries as $entry) {
    // Feld mit Tag
    $currtag $entry['data']['tag']['value'];
    $maxi count($tags); 
    $found false;
    if (
    $maxi 0) { 
      
    $i '0'
      foreach (
    $tags as $tag => $counter) { 
        
    $i $i 1;  
        if (
    $tag == $currtag) {
          
    $tags[$currtag] = $tags[$currtag] + 1
          
    $found true;
        }
      } 

    if (!
    $found || $maxi == 0) { 
      
    $tags[$currtag] = '1';

    ?>
    <?php $summe 
    0?>
    <?php 
    foreach ($tags as $tag => $counter): ?>
    <?php $summe 
    $summe 1?>
    <?php 
    endforeach; ?>
    <?php 
    foreach ($tags as $tag => $counter): ?>
    <a href="/test/<?php echo $tag ?>.html" style="font-size:
    <?php echo $counter/$summe*100 ?>%">
    <?php echo $tag?></a>
    <?php endforeach; ?>
    <?php 
    endif; ?>
    PS: Der Code ist auf meinen Problemfall angepasst und NICHT ALLGEMEINGÜLTIG. Es müssen gegebenenfalls Namen angepasst werden
    Geändert von globalcow (14.10.2009 um 22:18 Uhr)

  8. #8
    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

    Vielen Dank fürs teilen auf jeden Fall ;-)
    Vllt hat ja jemand hier lust das ganze vllt etwas kürzer zu machen oder so ;-)

    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."

  9. #9
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Ich möchte auch sowas haben...
    könnte mir das evtl. einer genauer erklären?

    Bekomme es alleine einfach nicht angepasst, bzw weiß eigentlich nicht wirklich was ich anpassen muss/soll.

    Danke Gruß makrele
    vielleicht nur ein klizekleiner Tip zum weiterprobieren

  10. #10
    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 makrele,
    es könnte durchaus nützlich sein, zu wissen was du denn bisher schon gemacht hast ;-)

    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."

  11. #11
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Hi, gerne.

    Also mein Anliegen ist folgendes:
    Es sollen einzelne Projekte in einem Katalog gespeichert werden.
    Diese sind dann wiederum mit einigen Taxonomie-Begiffen verknüpft. (Projekt-X mit den Leistungen a,b,f)
    In der "Tag-Cloud" sollen dann die Leisungen angezeigt werden und als Link zum jeweiligen Projekt verweisen.

    Katalog mit Projekten etc. ist schon vorhanden, ich kann die Projekte auch schon schön im Frontend mit dem Listen-Modul auflisten und mit dem Lesen-Modul ansehen.
    Mit mehr kann ich leider noch nicht dienen.

    zur Baustelle

  12. #12
    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

    Wenn ich mir das so anschaue:
    Projekt-Kategorie soll ne Tagkloud werden?
    Da hast dann also Taxonomie hinter mit Tags als Feld wo man dann mehere Kreuze setzten kann.

    Soweit so gut.

    Als nächstes brauchst du also einen Filer, wo du dann dieses Feld als Filterkriterium auswählen kannst.
    Am besten schon mal als normale Liste dargestellt (spiel mal mit dem Filter rum um zu schauen was da am nettesten passt).

    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."

  13. #13
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Das hatte ich auch schon soweit hinbekommen auf der Seite Referenzen ist das Modul mit dem Filter eingebaut.

    Und als ich mit diesem filter "gespielt" habe kam mir die Idee mit der Wolke.

  14. #14
    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

    Na, dann bekomme ich so langsam mal alle Infos...
    Dann bau doch mal den Quellcode von oben in das Filter Template ein.
    Eventuell noch Schrägstiche da entfenren -> <?php // print_r($this->entries); ?>

    Dann bekommt man auch angezeigt was so bei dir ausgegeben wird.
    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."

  15. #15
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Hab ich gemacht. Und wie Sie sehen, sehen Sie Nix.
    bzw. Habe ich den Quellcode kopiert und als neues Temlate gespeichert

    Habe nur die // in "<?php // print_r($this->entries); ?> "entfernt.

    Nur "<div class="mod_catalogfilter block"> </div>" ist im Quelltext zu finden

  16. #16
    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

    Hast du auch das neue Template ausgewählt? Ich seh da nix.. noch nicht mal ne ausgabe im Quelltext von den entries oder sonst was.
    Kopier das einfach in das Original Template rein, ich schätz mal dir fehlt noch ein foreach drum herum oder so...

    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."

  17. #17
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Hab ich gemacht

    Code:
    <?php if (count($this->entries)): ?>
    <?php // Für Debug ?>
    <?php print_r($this->entries); ?>
    <div class="cloud">
    <?php 
    $tags;
    foreach ($this->entries as $entry) {
    // Feld mit Tag
    $currtag = $entry['data']['tag']['value'];
    $maxi = count($tags); 
    $found = false;
    if ($maxi > 0) { 
      $i = '0'; 
      foreach ($tags as $tag => $counter) { 
        $i = $i + 1;  
        if ($tag == $currtag) {
          $tags[$currtag] = $tags[$currtag] + 1; 
          $found = true;
        }
      } 
    } 
    if (!$found || $maxi == 0) { 
      $tags[$currtag] = '1';
    } 
    } ?>
    <?php $summe = 0; ?>
    <?php foreach ($tags as $tag => $counter): ?>
    <?php $summe = $summe + 1; ?>
    <?php endforeach; ?>
    <?php foreach ($tags as $tag => $counter): ?>
    <a href="/test/<?php echo $tag ?>.html" style="font-size:
    <?php echo $counter/$summe*100 ?>%">
    <?php echo $tag; ?></a>
    <?php endforeach; ?>
    <?php endif; ?> 
    
    <?php if ($this->filterOptions): ?>
    <div class="filter_group">
    
    <?php if ($this->filter_headline): ?>
    <<?php echo $this->filter_hl; ?>><?php echo $this->filter_headline; ?></<?php echo $this->filter_hl; ?>>
    <?php endif; ?>
    
    <?php foreach($this->filterOptions as $filterOption): ?>
    <?php echo $filterOption; ?>
    <?php endforeach; ?>
    
    </div>
    <?php endif; ?>
    
    
    <?php if ($this->rangeOptions): ?>
    <div class="range_group">
    
    <?php if ($this->range_headline): ?>
    <<?php echo $this->range_hl; ?>><?php echo $this->range_headline; ?></<?php echo $this->range_hl; ?>>
    <?php endif; ?>
    
    <form method="post" id="<?php echo $this->table; ?>_range" action="<?php echo $this->action; ?>">	
    <div class="range">
    <input type="hidden" name="FORM_SUBMIT" value="<?php echo $this->table; ?>" />
    <input type="hidden" name="FORM_DATA" value="range" />
    <?php foreach($this->rangeOptions as $rangeOption): ?>
    <?php echo $rangeOption; ?>
    <?php endforeach; ?>
    </div>
    </form>
    
    </div>
    <?php endif; ?>
    
    
    <?php if ($this->dateOptions): ?>
    <div class="date_group">
    
    <?php if ($this->date_headline): ?>
    <<?php echo $this->date_hl; ?>><?php echo $this->date_headline; ?></<?php echo $this->date_hl; ?>>
    <?php endif; ?>
    
    <form method="post" id="<?php echo $this->table; ?>_date" action="<?php echo $this->action; ?>">	
    <div class="date">
    <input type="hidden" name="FORM_SUBMIT" value="<?php echo $this->table; ?>" />
    <input type="hidden" name="FORM_DATA" value="date" />
    <?php foreach($this->dateOptions as $dateOption): ?>
    <?php echo $dateOption; ?>
    <?php endforeach; ?>
    </div>
    </form>
    
    </div>
    <?php endif; ?>
    
    
    <?php if ($this->searchOptions): ?>
    <div class="search_group">
    
    <?php if ($this->search_headline): ?>
    <<?php echo $this->search_hl; ?>><?php echo $this->search_headline; ?></<?php echo $this->search_hl; ?>>
    <?php endif; ?>
    
    <form method="post" id="<?php echo $this->table; ?>_search" action="<?php echo $this->action; ?>"> 
    <div class="search">
    <input type="hidden" name="FORM_SUBMIT" value="<?php echo $this->table; ?>" />
    <input type="hidden" name="FORM_DATA" value="search" />
    <?php echo $this->searchOptions; ?>
    </div>
    </form> 
    
    </div>
    <?php endif; ?>
    
    
    <?php if ($this->sortOptions): ?>
    <div class="sort_group">
    
    <?php if ($this->sort_headline): ?>
    <<?php echo $this->sort_hl; ?>><?php echo $this->sort_headline; ?></<?php echo $this->sort_hl; ?>>
    <?php endif; ?>
    
    <div class="sort">
    <?php echo $this->sortOptions; ?>
    </div>
    
    </div>
    <?php endif; ?>
    
    <div class="clearall">
    <a href="<?php echo $this->clearall; ?>" title="Clear all Filters">Clear all filters</a>
    </div>
    Geändert von makrele (14.02.2010 um 21:44 Uhr)

  18. #18
    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

    Und wo genau?
    Hast du Fehler Anzeigen eingeschaltet?
    Kannst du mal das Template so wie du es jetzt eingebunden hast pasten?
    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."

  19. #19
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Guten Abend Makrele und MacKP,

    Ich beschreibe nochmal kurz wie ich das Problem gelöst hatte:

    Makrele, du musst ein neues Catalog-Listen Modul anlegen. Darin nur das für die Tagcloud relevante Feld für die Ausgabe auswählen.
    Vorab noch das Template erstellen. Hier ist eine verbesserte allgemein gültige Version des Codes. D.h. wenn du tatsächlich nur ein Taxonomy Feld für die Ausgabe gewählt hast, sollte sofort etwas angezeigt werden.
    Das Template musst du bei Catalog Layout in den Moduleinstellungen auswählen.

    PHP-Code:
    <?php if (count($this->entries)): ?>
    <?php 
    // Für Debug ?>
    <?php 
    // print_r($this->entries); ?>
    <div class="cloud">
    <?php 
    $tags
    ;
    foreach (
    $this->entries as $entry) {
    foreach (
    $entry['data'] as $tagcat => $tagval) {
            
    $currtags $tagval['ref'];

        foreach (
    $currtags as $currtag) {
            
    $maxi count($tags); 
            
    $found false;
            if (
    $maxi 0) { 
                foreach (
    $tags as $tag => $counter) {  
                if (
    $tag == $currtag['name']) {
                  
    $tags[$currtag['name']] = $tags[$currtag['name']] + 1
                  
    $found true;
                }
              } 
            }
            if (!
    $found || $maxi == 0) { 
                  
    $tags[$currtag['name']] = '1';
            } 
        } 
    }}
    ?>
    <?php $summe 
    0?>
    <?php 
    foreach ($tags as $tag => $counter): ?> 
    <?php $summe $summe 1?> 
    <?php endforeach; ?> 
    <?php foreach ($tags as $tag => $counter): ?> 
    <a href="/test/<?php echo $tag ?>.html" style="font-size: 
    <?php echo $counter/$summe*100 ?>%"> 
    <?php echo $tag?></a> 
    <?php endforeach; ?>
    </div>
    <?php endif; ?>
    Viele Grüße
    globalcow

    PS: kleinen Fehler im Quellcode korrigiert
    Geändert von globalcow (14.02.2010 um 21:52 Uhr)

  20. #20
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Zitat Zitat von MacKP Beitrag anzeigen
    Hast du Fehler Anzeigen eingeschaltet?
    Da hab ich dann jetzt auch mal einen Haken gesetzt.

  21. #21
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Mit dem neuen Template bekomme ich eine Tabelle angezeigt. Und wirklich ein Listen-Modul kein Filter-Modul?

    sry doch keine Tabelle, hatte das Template nicht eingestellt. aber mit dem neuen template bekomme ich diese Fehlermeldung:

    Code:
    Parse error: syntax error, unexpected T_ENDIF in /www/.../catalog_ext/templates/catalog_test.tpl  on line 39
    Geändert von makrele (14.02.2010 um 21:58 Uhr)

  22. #22
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Ja, ein Catalog Listen Modul. Ist der Inhalt des Templates ausschließlich der von mir gezeigte Code? Und in den Moduleinstellungen, ist das Layout das neue Template und das eigentlich Template mod_cataloglist?

    Hast du meinen korrigierte Version genommen, hatte nochmal etwas geändert.



    @MacKP: wurde da in dem Bereich etwas geändert beim catalog 2.0? Ich benutze nämlich die Beta Version aus dem Google-Repository

  23. #23
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Aha, Geil... wir kommen der Sache auf den Grund.
    Wie schön das es eine Gemeinschaft gibt. Super.

  24. #24
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Prima, klappt schon ganz gut. Mir ist aufgefallen das du aber den Code doch besser so schreibst:

    PHP-Code:
    <?php foreach ($tags as $tag => $counter): ?>
    <?php $summe 
    $summe $counter?>
    <?php 
    endforeach; ?>
    anstatt:

    PHP-Code:
    <?php foreach ($tags as $tag => $counter): ?>  
    <?php $summe $summe 1?>  
    <?php endforeach; ?
    Man muss da übrigens ein wenig rumspielen um eine gute Optik hinzubekommen. Ich habe auch mal einen nichtlinearen Verlauf bei der Größenwahl versucht. Funktioniert auch gut.

    Grüße
    globalcow

  25. #25
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Danke für die Hilfe, aber was mache ich mit:
    Code:
    Warning: Invalid argument supplied for foreach() in /www/htdocs/.../system/modules/catalog_ext/templates/catalog_test.tpl  on line 11

  26. #26
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Hmm, kannst du mal die // vor print_r im Template entfernen damit das Ergebnis deiner Abfrage angezeigt wird. Ich glaube dass das ein Problem mit einem deiner Einträge im Catalog ist.

  27. #27
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    gerne mache ich das

  28. #28
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Du hast einen Katalog-Eintrag ohne richtige Tags. Der ergibt den Fehler. Als Abhilfe solltest du folgendes in die Conditions deines Listen-Moduls eintragen:

    projektleistungen!='' (zwei einfache Hochkommas)

    So, das wars dann heute von meiner Seite Viel Spaß noch. Fragen kann ich morgen wieder beantworten.

    Gute Nacht

  29. #29
    Contao-Nutzer
    Registriert seit
    13.09.2009.
    Ort
    Münster; NRW
    Beiträge
    77

    Standard

    Du hast einen Katalog-Eintrag ohne richtige Tags
    Wie bekomme ich denn richtige?

    Code:
    projektleistungen!=''
    Bedingung ist das Projektleistungen die leer sind ausgelassen werden?

    Will auch so gerne verstehen was ich da mache

    Gute Nacht und Danke für die nette Hilfe

    Und wie bekomme ich den Link zu einem Filter-Modul hin? Nur nen kleiner Tip?
    Geändert von makrele (14.02.2010 um 22:49 Uhr)

  30. #30
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Na, jetzt war ich doch noch online

    Genau, die Bedingung sagt aus, dass alle Einträge ohne ausgefülltes projektleistungen-Feld ignoriert werden.

    Und genau dieser leere Eintrag macht die Probleme. Kannst also einfach auch den entsprechende Eintrag im catalog ändern. Sonst ist schon alles richtig!

    Binde mal ein Filter-Modul mit auf die Seite mit der Auflistung ein. Wähle dort mal etwas aus und schau dir an welche URL der dann generiert. Genau diese URL musst du in der Cloud auch generieren. Also bei deinem Fall z.B. http://gwi.makrelesreich.de/katalog-...andschutz.html. In deinem Link fehlt also nur das Projektleistungen. Und du musst den Tag-Namen klein machen. Dazu gibt es eine PHP-Funtkion.
    Falls es dazu noch Fragen gibt, Details dazu morgen...

    Jetzt aber! Gutenacht
    Geändert von globalcow (14.02.2010 um 22:57 Uhr)

  31. #31
    Contao-Nutzer
    Registriert seit
    29.10.2009.
    Beiträge
    89

    Standard

    Hi,

    super Sache! Muss den Thread mal auffrischen

    Wie kann man damit auch ganz normale Textfelder (und Taxonomiefelder) ausgeben? Und wie hast du das mit dem "nichtlinearen Verlauf bei der Größenwahl" hinbekommen? Habe zwar ein bisschen rumprobiert, aber entweder ist die Schriftgröße riesengroß, superklein oder beides. Habe auch ein paar Tipps gefunden, dafür ist aber minimum/maximum Höhe und Anzahl etc. nötig. Hast du das einfacher hinbekommen?


    Grüße, MaDi

  32. #32
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Hi MaDi,

    hmm, das ist ja inzwischen schon ein wenig her das ich mich damit beschäftigt hatte, aber ich versuche mal zu antworten.
    Also ganz prinzipiell bist du nicht auf Taxonomy Felder festgelegt. Die habe ich gewählt da sie ja dem Sinn von Tags entsprechen, dh. ich habe vorgegebene Schlagworte aus denen ich wählen kann.
    Wie auch immer, in dieser Schleife (Ausschnitt aus oben genanntem Code)
    Code:
    foreach ($entry['data'] as $tagcat => $tagval) { 
            $currtags = $tagval['ref']; 
    
        foreach ($currtags as $currtag) { 
            $maxi = count($tags);  
            $found = false; 
            if ($maxi > 0) {  
                foreach ($tags as $tag => $counter) {   
                if ($tag == $currtag['name']) { 
                  $tags[$currtag['name']] = $tags[$currtag['name']] + 1;  
                  $found = true; 
                } 
              }  
            } 
            if (!$found || $maxi == 0) {  
                  $tags[$currtag['name']] = '1'; 
            }  
        }  
    }
    lese ich die Daten aus der Datenbankabfrage aus. Wenn du mal die Debugzeilen am Anfang des Codes auskommentiert siehst du das Ergebnis der Abfrage im Quellcode deiner Internetseite. Hier wirst du sofern du Taxonomy benutzt die Felder 'data', 'ref' und 'name' wieder finden. Genau auf die gleiche Art wie in der Schleife kannst du natürlich auch den Wert eines Textfeldes lesen (Programmierkenntnisse voraus gesetzt )

    Zu deiner zweiten Frage:
    Ich nutze folgenden Code zum bestimmen der Schriftgröße in Prozent:

    Code:
    <?php if($counter == $summe): $faktor = $summe; ?>
    <?php elseif($counter/$summe >= 0.45): $faktor = pow($counter, 1.5); ?>
    <?php else: $faktor = pow($counter, 2); ?>
    <?php endif; ?>
    <a href="/test/<?php echo $tag ?>.html" style="font-size:  
    <?php echo $faktor/$summe*120 + 70 ?>%">
    Du kannst damit mal ein wenig rum probieren. Mein Ziel war das häufige Tags richtig schön hervortreten. Über die 120 und 70 kann man ein wenig die max/min Werte steuern. Richtig zufrieden bin ich damit nicht weil natürlich nicht darauf geachtet wird ob die Schriftgröße wirklich ins Layout passt.

    Ich hoffe das hilft dir weiter, viele Grüße
    globalcow

  33. #33
    Contao-Nutzer
    Registriert seit
    29.10.2009.
    Beiträge
    89

    Standard

    Hi globalcow,

    super das du nach so langer Zeit noch antwortest!

    Stimmt, die Taxonomie Tabelle ist prinzipiell ideal. Aber zu umständlich wenn fast jeder Eintrag andere Werte hat, manche aber schon öfter vorkommen, die sich super in so einem tagcloud machen würden.

    Also wenn ich den Code so wie er ist einsetze und wähle im Liste einen Taxonomie-Wert klappt es wunderbar. Wenn ich stattdessen einen normalen Wert nehme, kommt folgende Fehlermeldung (je Katalog Eintrag):

    Invalid argument supplied for foreach() in <strong>/.../templates/catalog_tags.tpl on line 11
    Hab mir nochmal die Einträge angeschaut, der Unterschied ist ja das nur bei Taxonomy Feldern [ref] vorkommt. Bei beiden - Taxonomy und Normal - steht der Wert aber eigentlich schon in [value]. Ich hab mal als Nicht-Coder probiert das [ref] rauszunehmen:

    PHP-Code:
    foreach ($this->entries as $entry) {
    foreach (
    $entry['data'] as $tagcat => $currenttags) {

        foreach (
    $currtags as $currtag) {
            
    $maxi count($tags); 
            
    $found false;
            if (
    $maxi 0) { 
                foreach (
    $tags as $tag => $counter) {  
                if (
    $tag == $currtag['value']) {
                  
    $tags[$currtag['value']] = $tags[$currtag['value']] + 1
                  
    $found true;
                }
              } 
            }
            if (!
    $found || $maxi == 0) { 
                  
    $tags[$currtag['value']] = '1';
            } 
        } 
    }} 
    Ergibt aber auch einen Fehler, diesmal bei beiden:

    Warning: Invalid argument supplied for foreach() in /.../templates/catalog_tags.tpl on line 10
    ----------------

    Mit der neuen Rechenart siehts schon wesentlich besser aus, danke!

    PHP-Code:
    <?php echo $faktor/$summe 100 ?>%">
    ----------------

    Grüße, MaDi
    Geändert von madi (26.08.2010 um 22:27 Uhr)

  34. #34
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Hallo MaDi,

    na das geht schon in die richtige Richtung...

    Bei mir können die Einträge mehr als einen Tag bekommen, jeder dieser Tags kommt aus Taxonomy. Ich weiß nicht wie du das mit dem Textfeld vor hast. Ein Textfeld mit einem Eintrag oder willst du mehrere Tags eintragen, z.B. kommagetrennt? Oder gibt es mehrere Textfelder?

    Sagen wir du hast nur ein Feld mit einem Eintrag, dann würde der Code so lauten:

    PHP-Code:
    $tags;
    foreach (
    $this->entries as $entry) {
        
    $currtag $entry['data']['NAME DEINES FELDES'];

            
    $maxi count($tags); 
            
    $found false;
            if (
    $maxi 0) { 
                foreach (
    $tags as $tag => $counter) {  
                if (
    $tag == $currtag['value']) {
                  
    $tags[$currtag['name']] = $tags[$currtag['value']] + 1
                  
    $found true;
                }
              } 
            }
            if (!
    $found || $maxi == 0) { 
                  
    $tags[$currtag['value']] = '1';
            } 
         
    }
    ?> 
    Bei mehreren Textfelder muss die zweite foreach-Schleife wieder dazu. Bei kommagetrennten Werten musst du diese zuerst in ihre Bestandteile zerlegen (Google sollte weiter helfen).

    Schau ruhig mal in ein PHP Einführungstutorial, die foreach-Schleifen mit denen du über Arrays läufst sind garnicht so schwer

    Viele Grüße
    globalcow

  35. #35
    Contao-Nutzer
    Registriert seit
    29.10.2009.
    Beiträge
    89

    Standard

    Hi globalcow,

    Zitat Zitat von globalcow Beitrag anzeigen
    Ein Textfeld mit einem Eintrag oder willst du mehrere Tags eintragen, z.B. kommagetrennt? Oder gibt es mehrere Textfelder?
    Bei mir siehts so aus das ich mehrere Felder ausgeben wollte, aber eigentlich nie mit mehreren Tags, dachte nicht dass das Script das kann. Eines ist ein Textfeld mit einem Namen, das andere ist ein Taxonomiefeld mit dem Firmennamen.

    Werde mal probieren mir aus den zwei Codes was zusammenzubasteln, wenn man die so gegenüberstellt versteh ich glaub ich jetzt was da passiert Danke dir!

    Grüße, MaDi

  36. #36
    Contao-Nutzer
    Registriert seit
    02.10.2009.
    Ort
    Berlin
    Beiträge
    83

    Standard

    Hi MaDi,

    Bei mir siehts so aus das ich mehrere Felder ausgeben wollte, aber eigentlich nie mit mehreren Tags, dachte nicht dass das Script das kann
    Um den Code mal ein wenig zu "entzaubern", das ganze mal ausgeschrieben:

    Code:
    • Durchlaufe alle Einträge der Datenbankabfrage.
    • Durchlaufe alle Taxonomy Einträge jeweils als aktuellen Tag. ODER Setze Wert eines bestimmten Felds als aktuellen Tag.
    • Durchsuche schon vorhandene Tags nach aktuellem Tag.
    • Wenn gefunden addiere eins. Wenn nicht füge neuen Tag zur Tagliste hinzu.
    Das ist im Prinzip das was in den beiden Versionen des Codes passiert. Du müßtest in deinem Fall also beim zweiten Punkt zum einem den Taxonomy Wert nehmen und damit die Suche durchlaufen und dann noch den Wert des Textfelds.

    Falls du mehrer kommgetrennte Tags hättest würdest du bei Punkt zwei den String per PHP Funktion zerkleinern und die gewonnenen Werte durchlaufen.

    Das nur nochmal als kleine Hilfestellung

    Viele Grüße
    globalcow

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Tag cloud (News)
    Von lionel im Forum tags
    Antworten: 2
    Letzter Beitrag: 13.02.2011, 13:06
  2. Alternative zur Cloud
    Von wik im Forum tags
    Antworten: 9
    Letzter Beitrag: 26.10.2010, 17:37
  3. Tag Cloud (Artikel)
    Von Rocksoft im Forum tags
    Antworten: 14
    Letzter Beitrag: 14.05.2010, 11:33

Lesezeichen

Lesezeichen

Berechtigungen

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