Re: baseportal und RSS - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 24.September.2004, 16:22.
    Re: baseportal und RSS

      Jups, ich fänds in reinem bp schon schöner ;-) Is wie Du vermutest tatsächlich auch nich weiter schwierig, grad RSS is wirklich simpel...

      Man muss einfach ne kleine regex schreiben, ca. so:

      while($text=~ m#<(title|description|link)(.*?)>(.*?)</\1>#gi)
      {
        if($1 eq "title") { ... }
        if($2 eq "description") { ... }
        ...
      }
      

      so in der art, ist jetzt natürlich nich ausgearbeitet, weil ich RSS nich genau kenne... ,-)


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Christian Ries (60 Beiträge) am Donnerstag, 23.September.2004, 12:52. WWW: www.islekerart.org
    baseportal und RSS

      Hallo bp-fans,

      ich suchte in letzter Zeit nach einer Möglichkeit, in baseportal RSS-News einzulesen und darzustellen. Habe Stunden gestöbert und kenne mich nicht genug aus, um Perl-Module wie XML::RSS zu installieren und weiss eigentlich auch nicht, ob Perl-Module mit bp funktionnieren.

      Über ein open-source PHP-script habe ich nun eine sehr einfache Lösung gefunden, die blitzschnell in bp-templates eingebaut werden kann.

      1. Folgenden PHP-Quellcode kopieren und auf dem Server speichern: http://islekerart.org/rss/rss_bp_php_code.htm

      2. Folgender perl-Befehl holt die News in Euer Template: <perl>out get "http://location_of_php_script/rss_reader.php";</perl>

      Konkretes Beispiel:

      Meine PHP-Seite: http://islekerart.org/rss/rss_reader.php
      Einfache bp-Seite: http://www.islekerart.org/cgi-bin/baseportal.pl?htx=/rss/rss_bp_php
      In bestehende bp-Seite eingebunden: http://www.islekerart.org/cgi-bin/baseportal.pl?htx=/iogneu/rss

      Die Gestaltung der Ausgabe lässt sowohl im PHP-Script als auch im bp-template beeinflussen. Die Adresse des RSS-News-Feeds steht im PHP-Script in der Variable $file, könnte aber genausogut von bp aus an das PHP-Script übergeben werden, was die Möglichkeit eröffnet, eine RSS-Datenbank in bp einzurichten und dem Besucher die Wahl des News-Channels per Dropdown anzubieten.

      Grüsse,
      :-)
      Christian

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Freitag, 24.September.2004, 14:37.
    Re: baseportal und RSS

      wäre das nichts für die bib?

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Christian Ries (60 Beiträge) am Freitag, 24.September.2004, 15:19. WWW: www.islekerart.org
    Re: baseportal und RSS

      Was meint Christoph dazu?
      War für mich halt die schnellste Lösung indirekt über PHP.

      Eleganter wäre natürlich eine reine bp-Lösung, bei der mit 'get ...RSS-URL...' das News-XML-File in eine Variable eingelesen würde. Dann müsste man die Variable 'parsen', so dass die Inhalte schön sauber in ein Array abgelegt werden. Dann könnte man für die HTML-Ausgabe das Array durchlaufen...
      Is was für perl-profis, die wahrscheinlich nur 5 Minuten dazu brauchen würden ;-)

      Grüsse,
      :-)
      Christian

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 24.September.2004, 16:22.
    Re: baseportal und RSS

      Jups, ich fänds in reinem bp schon schöner ;-) Is wie Du vermutest tatsächlich auch nich weiter schwierig, grad RSS is wirklich simpel...

      Man muss einfach ne kleine regex schreiben, ca. so:

      while($text=~ m#<(title|description|link)(.*?)>(.*?)</\1>#gi)
      {
        if($1 eq "title") { ... }
        if($2 eq "description") { ... }
        ...
      }
      

      so in der art, ist jetzt natürlich nich ausgearbeitet, weil ich RSS nich genau kenne... ,-)

     Antworten

    Beitrag von Christian Ries (60 Beiträge) am Dienstag, 28.September.2004, 11:16. WWW: www.islekerart.org
    Re: baseportal und RSS

      Hallo Christoph,
      RSS hat leider verschiedene Standards. Hier ein Beispiel eines RSS-Event-Feeds, das ich für unseren Veranstaltungskalender gebastelt habe (bp erzeugt den RSS-code aus einer bp-db). Ich habe nur 2 items dringelassen, damit der code nicht zu lang wird.
      Wahrscheinlich braucht man 2 Regex'e, um vorerst den ersten Teil zu lesen, dann die einzelnen items.
      Vielleicht kanns Du oder (ein anderer Perl-Profi-Leser/in) mir bei Gelegenheit die 2 Befehle aufschreiben sodass ich so 'ne routine vervollständigen kann.
      Ich könnte die dann in die Doku einbauen, falls erwünscht.
      :-)
      Christian

      <?xml version="1.0" encoding="ISO-8859-1" ?>
      <rss version="0.91">
      <channel>
      <title>|Simple|Events|Syndication|</title>
      <link>http://islekerart.org</link>
      <description>Events of the day in crossborder region Islek (Belgium, Germany, Luxembourg). Free to use if our logo mentioned with link to http://www.islekerart.org</description>
      <language>de</language>
      <lastBuildDate>Tue, 28 Sep 2004 11:15:29  GMT</lastBuildDate>
      <copyright>Copyright: (C) Islek ohne Grenzen EWIV</copyright>
      <image>
      <title>ISLEKer art|Events</title>
      <url>http://islekerart.org/rss/ia_rss_140_16.gif</url>
      <link>http://www.islekerart.org</link>
      </image>
      <item>
      <title>15 Jahre Puppen- und Spielzeugmuseum</title>
      <description>Do 20.05.04 - Fr 20.05.05. Expo (Lokal), Vianden (L).</description>
      <link>http://islekerart.org/cgi-bin/baseportal.pl?htx=/iogneu/details_DE&Id==450&db=main</link>
      </item>
      <item>
      <title>Textilienausstellung</title>
      <description>Do 22.07.04 - Do 30.09.04 - 10:00-12:00 Uhr. Expo (Kultur), Esch-sur-Sûre (L).</description>
      <link>http://islekerart.org/cgi-bin/baseportal.pl?htx=/iogneu/details_DE&Id==410&db=main</link>
      </item>
      </channel>
      </rss>
      

     Antworten

    Beitrag von Christian Ries (60 Beiträge) am Dienstag, 28.September.2004, 17:54. WWW: www.islekerart.org
    Re: baseportal und RSS - OK, hab's raus ;-)

      Nach vielem Herumprobieren war's doch nicht so kompliziert ;-)

      Hier eine bp Seite, die 2 news-channels ausliest und darstellt:
      http://www.islekerart.org/cgi-bin/baseportal.pl?htx=/rss/rss_events_perl_read

      Der erste Link stellt einen Auszug aus unserem veranstaltungskalender (bp-db) dar, wobei das RSS aus baseportal on the fly erzeugt wird.

      Der zweite Link ist einer der zahlreichen BBC-Wolrd-News channels aus dem Internet.

      Die codes stell ich später rein.
      :-)
      Christian

     Antworten

    Beitrag von Christian Ries (60 Beiträge) am Mittwoch, 29.September.2004, 09:13. WWW: www.islekerart.org
    Codes zum Erzeugen und Lesen von RSS mit bp

      Da ich kein perl-Profi bin, sind folgende Codes vielleicht nicht unbedingt die effizientesten. Ich bin für Hinweise zur Straffung der Codes dankbar. Vielleicht können wir diesen Punkt dann vollständig in die Doku einbauen?

      RSS bietet die Möglichkeit, über normierte Formate kurze Inhalte im Internet zur Verfügung zu stellen. Man kann das natürlich kompakter und flexibler (mehr Felder) über csv-erzeugende Templates erreichen, der Nachteil ist aber, dass diese Daten nur mit einem aud die Datenstruktur spezifischen Code verarbeitet werden kann. Da RSS normiert ist, genügt die einmalige Einrichtung eines Lesecodes um eine Vielzahl von News-Feeds lesen zu können.

      Eine gute Übersicht über RSS bietet die Harvard School of Law unter http://blogs.law.harvard.edu/tech/rss

      Hier die einzelnen Codes:

      1. Erstellen eines RSS 0.91 News-Feeds aus einer baseportal-Datenbank mittels Template:

      Anmerkungen:
      - Erste Zeile: perl-Befehl wichtig sonst erkennen die Browser nicht, dass es sich um XML handelt. Ohne Zeilenumbruch gleich zur xml-Definition, sonst wird die Seite ebenfalls nicht korrekt gelesen.
      - Einfach die Texte zwischen den XML-Tags ersetzen.
      - lastBuildDate: hier muss ein Datum im GMT-Format angegeben werden. Der erwähnte Perl-code erzeugt diesen mit dem jetzigen Zeitpunkt.
      - beim Loop beginnt die Ausgabe der einzelnen Einträge. Dieses Beispiel stellt die Einträge eines Veranstaltungskalender dar, deren Bestandteile in die wenigen Felder des Newsfeeds zusammengefasst werden. Die Variablen habe ich in diesem Teil stehengelassen: <titel> = Titel der Nachricht bzw. der Veranstaltung. <description> = Angezeigte Zusammenfassung, die max. 100 Zeichen betragen darf/soll. <link> = Link auf die Detailseite des gewählten Eintrags auf dem eigenen Internetauftritt (in diesem Fall die Detailansicht einer Veranstaltung.

      <perl>$_header="Content-type: text/xml\n\n";</perl><?xml version="1.0" encoding="ISO-8859-1" ?>
      <rss version="0.91"><channel>
      <title>Titel des News-Feeds</title>
      <link>Vollständige URL des Internetauftritts, nicht des News-Feeds</link>
      <description>Kurze Beschreibung inkl. Nutzungsbedingungen und evtl. Wiederholen des Links</description>
      <language>Sprache mit standardisierten Kürzeln, z.B. de oder fr</language>
      <lastBuildDate><perl>out datum("jetzt","rfc"), " GMT"</perl></lastBuildDate>
      <copyright>Copyright: (C) Ihr Name oder Ihre organisation oder Ihre Firma</copyright>
      <image>
      <title>Entspricht dem alt-tag für Bilder in HTML. Soll als sehr kurzen Titel formuliert werden, da dieser Text bei fehlendem oder unerwünschtem Bild als Titel des Feeds fungiert.</title>
      <url>Vollständige Adresse des Bildes</url>
      <link>Vollständige URL auf die das Bild verweisen soll, also meistens Ihre Homepage</link>
      </image>
      <loop db=../iogneu/main sort=Datum1 Datum1\<=+3&Datum2\>=jetzt code=perl>
      out <<EOF;
      <item>
      <title>$Titel</title>
      EOF
      if ( $Datum2 ne $Datum1 ) {$datumer=$Datum1." - ".$Datum2;}
      else {$datumer=$Datum1;}
      if ( $Zeit ne "" ) {$datumer=$datumer." - ".$Zeit.", Uhr";}
      out <<EOF;
      <description>$datumer. $$Typ ($Typ), $Ort ($Land).</description>
      <link>http://islekerart.org/cgi-bin/baseportal.pl?htx=/iogneu/details_DE&Id==$_id&db=main</link>
      </item>
      EOF
      </loop>
      </channel>
      </rss>
      


      2. Lesen, Verarbeiten und Darstellung eines News-Feeds in einem baseportal-Template

      Der Code ist soweit dokumentiert, dass er verständlich sein sollte.

      <html>
      <head>
      <title>ISLEKer art - RSS Events-Reader direkt über baseportal & perl</title>
      <style type="text/css">
      <!--
      body,p,div { font-family:arial,helvetica,sans-serif;font-size:8pt }
      -->
      </style>
      <SCRIPT LANGUAGE="JavaScript">
      <!--
      function winOpen(url, breite, hoehe) {
      
      // Errechnet Koordinaten, um das Popup zentriert zu platzieren
      links = (screen.width/2)-(breite/2);
      oben = (screen.height/2)-(hoehe/2);
      window.open(url,"popup","height="+hoehe+",width="+breite+",status = no,toolbar = no,menubar = no,location = no,resizable = no,titlebar = no,scrollbars = no,copyhistory = yes,dependent=yes,fullscreen = no,top ="+oben+",left ="+links);
      }
      //-->
      </script>
      </head>
      <body bgcolor="#C0C0C0">
      <h4>
      |<a href="http://www.islekerart.org/cgi-bin/baseportal.pl?htx=/rss/rss_events_perl_read&feeder=IOG">ISLEKer art Events</a>|<br>
      |<a href="http://www.islekerart.org/cgi-bin/baseportal.pl?htx=/rss/rss_events_perl_read&feeder=BBC">BBC News Science/Nature</a>|
      </h4>
      <table width="142" border="0" style="border-width:1px;border-color:green;border-style:solid;" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
      <tr><td width="100%">
      <!-- Bis hier Anfangsteil der Seite inkl. 'Container-Tabelle', in der die News rein sollen -->
      <!-- Ab hier wird der Teil aus dem RSS gelesen und layoutiert ausgegeben -->
      <perl>
      ### Einlesen des RSS-Files und in Hauptbestandteile spliten :                 ###
      ### 1. Infos zum News-Channels 2. Bild des News-Channels 3. Einzelne Einträge ###
      if ($feeder eq "IOG" || $feeder eq "") {$rss_url="http://www.islekerart.org/cgi-bin/baseportal.pl?htx=/rss/rss_events_today";}
      elsif ($feeder eq "BBC") {$rss_url="http://news.bbc.co.uk/rss/newsonline_world_edition/science/nature/rss091.xml";}
      

      $rss=get "$rss_url";
      $rss =~ /<channel>/;
      $split1=$';
      $split1 =~ /<\/channel>/;
      $split2=$`;
      $split2 =~ /<item>/;
      $part1=$`;
      $part2=$&.$';
      $part1 =~ /<image>/;
      $part1head1=$`;
      $part1head2=$&.$';
      

      ### Header-Daten Variablen zuordnen ###
      while($part1head1=~ m#<(title|link|description|language|lastBuildDate|copyright)>(.*?)</\1>#gim) {
      if($1 eq "title") { $head_title=$2; }
      elsif($1 eq "link") { $head_link=$2; }
      elsif($1 eq "description") { $head_description=$2; }
      elsif($1 eq "language") { $head_language=$2; }
      elsif($1 eq "lastBuildDate") { $head_lastBuildDate=$2; }
      elsif($1 eq "copyright") { $head_copyright=$2; }
      }
      

      ### Image-Daten Variablen zuordnen ###
      while($part1head2=~ m#<(title|url|link)>(.*?)</\1>#gim) {
      if($1 eq "title") { $img_title=$2; }
      elsif($1 eq "url") { $img_url=$2; }
      elsif($1 eq "link") { $img_link=$2; }
      }
      ### Ausgabe des Bildes und/oder des Titels samt Verlinkung zur Homepage des Anbieters ###
      if ($img_url ne "")
      {
      out "<a href='$img_link' target='_blank'><img border='0' src='$img_url' align='middle' alt='$img_title' width='140'></a><br><font size='1'>$head_title</font><br>";
      }
      else {out "<font size='1'>$head_title</font><br>";}
      ### Öffnen der 'Container-Tabelle' für die einzelnen Einträge/News ###
      out "<table width='100%' border='0' cellpadding='2'><tr><td>";
      out "<p><div style='overflow:auto; width:140px; height:400px;text-align:left;'>";
      

      ### On the fly -Identifizierung und Direktausgabe der News-Bestandteile ###
      while($part2=~ m#<(title|description|link)>(.*?)</\1>#gim)
      {
      if($1 eq "title") { $item_title=$2; $neu=0;}
      elsif($1 eq "description") { $item_description=$2; $neu=0; }
      elsif($1 eq "link") { $item_link=$2; $neu=1; }
      if ($neu==1)
      {
      ### Einstellungen des Links je nach der Detailseite die aufgerufen wird ###
      if($feeder eq "IOG") {$javas1="javascript:winOpen('";$javas2="', 400, 500)";}
      else {$javas1="";$javas2="";}
      $itlink=$javas1.$item_link.$javas2;
      out "<b><a href=\"$itlink\"";
      if($feeder ne "IOG") {out " target='_blank'";}
      out ">$item_title</a></b><br>";
      out "<small>$item_description</small><br><br>";
      }
      }
      out "</div></p></td></tr></table>";
      

      </perl>

      <!-- Ende der RSS-Ausgabe und Restteil der Seite -->
      </td></tr></table>
      </body></html>
      

     Antworten


     
 Liste der Einträge von 28051 bis 28201:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!