RSS Feeds

Begonnen von dobra, Juli 22, 2007, 08:30:17

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Habe mir gerade ein RSS Feeds gebaut.
(war ganz einfach)

Möchte aber auch noch gerne ein ben. def. Feld (z.B. "NEU") anlegen und wenn da "1" steht, diese Seite in den Feeds anzeigen.
Das Auslesen von NEU kann ich, es geht mir nur darum, ob und wenn "ja" wie ich den Identiefer (z.B. __print::neu__ ) dann in die xml-Datei einbauen kann.
bzw. kann ich mit ssp eine xml-Datei direkt erstellen?
(und dann mit Dateien hinzufügen automatisch übertragen)
mfG
dobra

ahe

Hallo dobra,

Sie könnten die XML-Datei als Infoseite einbinden (als Vorlage ist auch .xml gültig).
Alles weitere (auch SSP) funktioniert dann dort wie bei den anderen HTML-Vorlagen auch.

Falls man dann die dyn. Adresse als Feed-URL verwenden kann sollte alles funktionieren.
Ich weiss jedoch nicht, ob es möglich ist eine dyn. URL anzugeben?
Vielleicht mal kurz ausprobieren.
MfG ahe

dobra

#2
Hallo ahe,

Danke - die Einbindung und Verlinkung der xml-Datei als Infoseite funktioniert  :D

Allerdings wird ssp-Code im Feed nicht übersetzt.
Wenn ich den gesamten Block mit ssp (qq | <item> ... </item> |;) einbinde, wird's ignoriert und mit
<item>
<titel> __print::irgendwas__ </titel>
....
wird das "__print::irgendwas__" genauso ausgegeben.

ich muß das eben vorläufig doch manuell pflegen
mfG
dobra

ahe

Schicken Sie mir mal bitte den Link zum Aufruf der Infoseite.
MfG ahe

dobra

#4
DANKE an ahe

Jetzt funktioniert alles so wie es soll !

Falls es jemand nachmachen will:

Wie man das RSS-Feeds baut, steht hier http://www.drweb.de/weblogs/rss_selbst_bauen.shtml

Einbau in ShopPilot:


  • eine Infoseite anlegen (z.B. RSS-Feeds)
  • Vorlage = die erstellte xml-Datei
  • in die Infoseite einen Dummy-Artikel eintragen
  • Bei diesem Artikel die Artikelseiten, die in den Feeds ausgegeben werden sollen als Crossartikel eintragen
  • eine feed.ipl Datei anlegen (oder den Code in stdall.ipl schreiben)
<!--spmacro:module(embed)
sub feed {
my $str = ssp::get_var_article('FELDNAME');
if ($str) {
ssp::embedded("csearch","embedded/feed.txt",$str . ":10000000:::3:0");
}
}
-->

"FELDNAME" durch das Feld in der die Crossartikel eingetragen werden ersetzten
  • eine feed.txt Datei anlegen
    z.B. so
<!--spmacro:loopitem-->
                        <item>
<title>__produkt__</title>
<description>__ergeanz1__ </description>
<link>Identifier der den Pfad zu Ihrer Seite ausgibt</link>
</item>
<!--spmacro:enditem-->

  • den Code in der xml-Datei mit __embed::feed__ ausgeben
  • zum Einbinden den Link zu xml-Datei anpassen
    (das hatte ich vergessen, deshalb wurden die Identifier nicht ersetzt)
    <link rel="alternate" type="application/rss+xml" title="RSS-Feed" href=".../iboshop.cgi?showbynameMyInfoseite,0">

und damit hat man ein "halbautomatisches" RSS-Feed
(halbautomatisch => man muß neue Seiten als Crossartikel eintragen)

NACHTRAG:
Damit die Beschreibung ( <description> ...  </description> ) angezeigt wird, darf der Text keinen HTML-Code (z.B. <br>) enthalten
mfG
dobra

ahe

#5
Noch eine Anmerkung dazu...
Das ganze kann auch wie folgt gelöst werden, sofern ein Artikelfeld existiert, das den Text "NEW" enthält, wenn der Artikel ausgegeben werden soll :)
Hier nehmen wir beispielsweise an, dass dieses Feld "Ergänzung 4" wäre.

Die beiden Punkte fallen weg:

  • in die Infoseite einen Dummy-Artikel eintragen
  • Bei diesem Artikel die Artikelseiten, die in den Feeds ausgegeben werden sollen als Crossartikel eintragen

Dafür sieht der embedded-Code so aus
<!--spmacro:module(embed)
sub feed {
ssp::embedded("search","embedded/feed.txt","NEW:00000001");
}
-->
MfG ahe

dobra

#6
ab Version Beta 3 kann man die RSS Feeds dank der neuen XCREATED Funktion auch vollautomatisch ablaufen lasen  ;D

Es sind keine benutzerdefinierten Felder oder irgendwelche extra Einträge mehr notwendig.
Einmal eingebaut läuft also alles automatisch
=> wenn ein neuer Artikel angelegt wird, wird er auch in den Feeds angezeigt, ist er älter als x Tage, fällt er automatisch raus.
(die Dauer wird mit my $tage = ...; festgelegt)

Einfach diesen Code verwenden:
<!--spmacro:module(embed)
sub feed {
my $tage = 60;
my $jetzt = time();
my $seit = $jetzt - ($tage*24*60*60);
my $TABLE = ssp::db_get_prefix() . "ITEM ";
   my $read = ssp::readSQLData("SELECT ITEMID FROM $TABLE WHERE (XCREATED > '$seit' && XISLINK=0) ORDER BY XCREATED DESC","ITEMID");
   if ($read >= 0) {
  my $i=0;
while ($read > $i) {
   my $artikel= ssp::get_var_db("ITEMID", $i);
ssp::embedded("csearch","feed.txt","$artikel:10000000:::3:0");
++$i;
}
}
}
-->


und um nichts mehr kümmern müssen.
mfG
dobra