Ergebnis 1 bis 3 von 3

Thema: [RSS-Reader] im Template mehrere Feeds unterscheiden

  1. #1
    Contao-Fan Avatar von µaTh
    Registriert seit
    13.05.2010.
    Beiträge
    951

    Standard [RSS-Reader] im Template mehrere Feeds unterscheiden

    Hallo,

    ich möchte mehrere RSS-Feeds im RSS-Reader anzeigen lassen (soweit ja kein Problem). Nun möchte ich in der Ausgabe die einzelnen RSS-Quellen unterschiedlich ausgeben. Wie kann ich im Template die verschiedenen RSS-Feed-Quellen auseinander halten, so dass ich jedem Feed eine andere CSS-Klasse zuweisen kann. Hat jemand eine Idee?

    Viele Grüße
    µaTh

  2. #2
    Contao-Nutzer Avatar von cb-schwimmen
    Registriert seit
    21.04.2011.
    Beiträge
    29

    Standard

    Hey µaTh,

    die Sache habe ich per PHP im Template gelöst. Sicher nicht die eleganteste Lösung, aber sie funktioniert ersteinmal.

    PHP-Code:
    <!-- indexer::stop -->
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>

    <?php if ($this->headline): ?>
      <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>


    <?php
      
    function rssfeed($url) {
        
    // die URL parsen
        
    $arrayinhalt parse_url($url);
        
        
    // die Domain zerlegen
        
    $arraydomain explode("."$arrayinhalt['host']);
        
        
    // domainpositon = stelle der second level domain im Array $arraydomain ermitteln
        
    $domainposition count($arraydomain)-2;

        
        
    // den einzelnen RSS-Feeds die entsprechendene CSS-Klasse und Link zuweisen
        // itemclass[CSS-Klasse, Domain]
        
    $itemclass = array(
          
    cssclass =>""
          
    website => $arraydomain[$domainposition].".".$arraydomain[$domainposition+1], 
          
    rssurl => $url
        
    );
        
        
    // CSS-Klasse zuweisen
        
    switch ( $arraydomain[$domainposition] ) {
          case 
    "domain1"
            
    $itemclass['cssclass'] = "feed1";
            break;
          case 
    "domain2":
            
    $itemclass['cssclass'] = "feed2";
            break;
          default:
            
    $itemclass['cssclass'] = "unknown";
        }
        
        return 
    $itemclass;
      }
    ?>

    <div class="feedsources">Quellen:</div>
    <ul class="allfeedlist">
    <?php 

      
    // RSS-Feedliste der Quellen
      
    $feeds explode("\n",$this->rss_feed); 
      
      
    // einzelne Feeds
      
    for ($i 0$i count($feeds); $i++){
        
    $arrayurl rssfeed$feeds[$i]);
        echo 
    "<li class=\"feedlist ".$arrayurl['cssclass']."\">";
        
        
    // Feedimage
        
    echo "<a href=\"http://".$arrayurl['website']."\" title=\"http://".$arrayurl['website']."\">";
        echo 
    "<span class=\"siteimage\">&nbsp;</span>";
        echo 
    "</a>";
        
        
    //Feed-Webseite
        
    echo "<a href=\"http://".$arrayurl['website']."\" ".LINK_NEW_WINDOW." title=\"http://".$arrayurl['website']."\">";
        echo 
    $arrayurl['website'];
        echo 
    "</a>";
        
        
    // RSS-Icon
        
    echo "<a href=\"".$arrayurl['rssurl']."\" ".LINK_NEW_WINDOW." title=\"Direktlink zum RSS-Feed\"> ";
        echo 
    "<img src=\"tl_files/structure/RSS-Icon/rss_mikro.png\" alt=\"RSS-Icon\" />";
        echo 
    "</a>";
        
        echo 
    "</li>";
      }
      
    ?>
    </ul>


    <?php foreach ($this->items as $item): ?>

    <?php
      $itemclass 
    rssfeed($item['link']);
    ?>

    <div class="rss_default <?php echo $itemclass['cssclass']; ?><?php echo $item['class']; ?>">

    <h2><a href="<?php echo $item['link']; ?>"<?php echo LINK_NEW_WINDOW?> title="'<?php echo $item['title']; ?>' auf <?php echo $itemclass['website']; ?> lesen" ><?php echo $item['title']; ?></a></h2>

    <a href="<?php echo $item['link']; ?>"<?php echo LINK_NEW_WINDOW?> title="News von <?php echo $itemclass['website']; ?>">
    <span class="siteimage">&nbsp;</span>
    </a>

    <p class="description">
    <?php echo $item['description']; ?>
    </p>

    <a class="more" href="<?php echo $item['link']; ?>"<?php echo LINK_NEW_WINDOW?> title="'<?php echo $item['title']; ?>' auf <?php echo $itemclass['website']; ?> lesen" >Weiterlesen...</a>

    </div>

    <?php endforeach; ?>

    <?php echo $this->pagination?>

    </div>
    <!-- indexer::continue -->
    Die zentrale Funktion spielt die Funktion rssfeed($url), die als Parameter die Url des RSS-Feeds bekommt und ein assoziertes Array (Felder: cssclass, website, rssurl ) auswirft.

    Eingesetzt wird das Template auf http://www.psvcottbus-schwimmen.de/w...hwimmwelt.html

    Schau mal, ob es dir weiter hilft.

    Für Kritiken und Anregungen bin ich offen. Das erzeugte HTML ist bereits valide.
    mein erstes Contao-Projekt: http://www.psvcottbus-schwimmen.de - für Anregungen, Kritiken und Tipps bin ich jederzeit dankbar.

  3. #3

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
  •