Shopsystem ShopPilot

ShopPilot => SSP - Shop Server Pages => Thema gestartet von: dobra am Juli 22, 2007, 08:30:17

Titel: RSS Feeds
Beitrag von: dobra am Juli 22, 2007, 08:30:17
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)
Titel: Re: RSS Feeds
Beitrag von: ahe am Juli 23, 2007, 09:11:55
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.
Titel: Re: RSS Feeds
Beitrag von: dobra am Juli 24, 2007, 06:36:17
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
Titel: Re: RSS Feeds
Beitrag von: ahe am Juli 24, 2007, 09:45:39
Schicken Sie mir mal bitte den Link zum Aufruf der Infoseite.
Titel: Re: RSS Feeds
Beitrag von: dobra am Juli 24, 2007, 13:57:00
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 (http://www.drweb.de/weblogs/rss_selbst_bauen.shtml)

Einbau in ShopPilot:

<!--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
<!--spmacro:loopitem-->
                        <item>
<title>__produkt__</title>
<description>__ergeanz1__ </description>
<link>Identifier der den Pfad zu Ihrer Seite ausgibt</link>
</item>
<!--spmacro:enditem-->

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
Titel: Re: RSS Feeds
Beitrag von: ahe am Juli 24, 2007, 14:16:03
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:

Dafür sieht der embedded-Code so aus
<!--spmacro:module(embed)
sub feed {
ssp::embedded("search","embedded/feed.txt","NEW:00000001");
}
-->
Titel: Re: RSS Feeds
Beitrag von: dobra am Juli 30, 2008, 20:38:42
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.