XT-Commerce Newssystem im Eigenbau

28. Dezember 2006 Tags:

Wer bisher noch gezögert hat einen Blog in seine Shopwebsite einzubauen, wird vielleicht durch diese Erweiterung überzeugt. Jeder Blog ermöglicht die einfache Verbreitung des Inhaltes per RSS. Somit ist es ein leichtes seinen eigenen Content auf anderen Seiten einzubinden, oder halt auf der eigenen Domain an einer anderes Stelle. Der Blog dient somit als RSS Erzeuger, alles was man noch braucht ist ein Script zum Einbinden des Feeds. Hier kommt das freie MagpieRSS zum Einsatz. Auf den ersten Blick wirkt das Programm sehr verwirrend, sollte aber mit Hilfe unseres Beispielcodes recht einfach zu integrieren sein. Es gibt zahlreiche Scripts zur Integration von RSS Feeds. Magpie hat den Vorteil, dass es einen Cache benutzt, also nicht bei jedem Aufruf der Seite eine neue RSS Verbindung aufbauen muss. Das erhöht die Geschwindigkeit im Seitenaufbau, gerade wenn die Seite mit dem RSS Feed kurzzeitig nicht verfügbar sein sollte.

Installation von Magpie RSS

Nach dem Download legen wir einfach ein Verzeichnis an. In diesem Beispiel nutzen wir das Unterverzeichnis /magpie/. Dort hinein werden alle Dateien von Magpie hochgeladen. Somit besteht die Installation nur aus dem Hochladen auf den Server.

Abstimmung mit Wordpress als Newslieferant

Wordpress bietet eine Reihe von RSS Feeds an. Man kann sowohl den gesamten Blog als Feed nutzen, also alle geschriebenen Beiträge, oder aber man legt eine Unterkategorie an für News und nutzt nur diese Beiträge als RSS Feed. Genau so wäre es möglich einen Kommentar Feed zu verwenden. In unserem Beispiel nutzen wir den Feed einer Blogkategorie, die wir einfach News nennen. Das hat den Hintergrund, das der Blog auch Artikel enthält, die nicht im Shop als News angezeigt werden sollen. Natürlich können auch andere Blogsysteme als Contentlieferant genutzt werden.

Integration von Magpie auf der Shopseite

Wir integrieren den Magpie Code in der Index.html Datei im Templateverzeichnis. Folgenden Code verwenden wir für unser Newssystem:

{php}
require_once('http://www.domain.com/magpie/rss_fetch.inc');
$url = 'http://www.domain.com/blog/category/News/feed';
$rss = fetch_rss($url);
$num_items = 3;
$items = array_slice($rss->items, 0, $num_items);echo "<p>";
foreach ($items as $item) {
$title = $item[title];
$link = $item[link];
$desc = $item[description];
$datum = substr($item[pubdate], 5, 12);
echo "<p><div style='float:left;'><a xhref=$link>$title</a></div>
<div style='text-align:right;'> $datum</div><div>$desc</div><div><a xhref=$link>Alles Lesen...</a></div>\n";
}{/php}

Logisch, dass man für domain.com sowie den Pfad zum Blog die eigene URL einsetzen muss. Die Angabe definert die Anzahl der News, die auf der Startseite angezeigt werden sollen. In den DIV Tags sollte man entweder die eigenen Klassen aus der CSS Datei einfügen, oder eine einfache Formatierung wählen. Damit die News wirklich nur auf der Startseite angezeigt werden, sollte man das ganze noch in eine IF Abfrage einbauen. Damit sieht der gesamte Code wie folgt aus:

{if ( $smarty.server.REQUEST_URI == "/index.php" || $smarty.server.REQUEST_URI == "/index.php?language=de" || $smarty.server.REQUEST_URI == "/")}
{php}
require_once('http://www.domain.com/magpie/rss_fetch.inc');
$url = 'http://www.domain.com/blog/category/News/feed';
$rss = fetch_rss($url);
$num_items = 3;
$items = array_slice($rss->items, 0, $num_items);echo "<p>";
foreach ($items as $item) {
$title = $item[title];
$link = $item[link];
$desc = $item[description];
$datum = substr($item[pubdate], 5, 12);
echo "<p><div style='float:left;'><a xhref=$link>$title</a></div>
<div style='text-align:right;'> $datum</div><div>$desc</div><div><a xhref=$link>Alles Lesen..</a></div>\n";
}{/php}{/if}

Verwendet man verschiedene Sprachen, sollte man die erste Zeile z.B. um language=en erweitern.
EDIT: Scheinbar liefern Wordpress selber einen unsauberen Feed, der Magpie teilweise in die Knie zwingt. Ein Umweg über Feedburner schafft Abhilfe.

44 Kommentare zu diesem Artikel:

  1. Danke für den interessanten Artikel.
    Bin gerade bei der Auswahl der Blogsoftware und fand die Seite http://opensourcecms.com, über die man die versch. open source Systeme recht gut vergleichen kann. Hab mich für b2evolution entschieden. Funzt das mit magpie?

    micha

  2. Magpie geht mit jedem Blog, weil es eine Grundfuntkion eines Blogs ist einen RSS Feed zu erzeugen.

    Auch mit b2evolution

  3. super! aber wie bekomme ich das in den contentmanager rein? ich hättes das gerne in der content box.

    vielen dank für die schöne lösung soweit!

  4. diese Lösung ist zum Einbau in der index.html im Template Verzeichnis. Welche Contentbox meinst Du?

  5. na in den beiden boxen die regulär über den contentmanager gefüllt werden.

  6. ups...

    anstatt

    {php} und {/php}

  7. Hallo, das bekomme ich irgendwie nicht hin. Ich habe das mal genau nach Anweisung eingebaut und erhalte folgenden Fehler:

    Warning: main(http://www.....de/xtcshop/rss_fetch.inc) [function.main]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /homepages/3/.../htdocs/templates_c/%%B0^B0B^B0B0E47B%%main_content.html.php on line 30

    Fatal error: main() [function.require]: Failed opening required 'http://www....de/magpie/rss_fetch.inc' (include_path='.:/usr/local/lib/php') in /homepages/3/.../htdocs/templates_c/%%B0^B0B^B0B0E47B%%main_content.html.php on line 30

    Kann mir das mal jemand erklären? :-)

  8. ich glaube die fehlermeldung hatte ich bei unserem testshop auch, muss irgendwas mit den php einstellungen zu tun haben.

  9. Läuft das denn jetzt bei dir?

  10. Hey das geht super sogar auf Unterseiten der Page oder im Content Manager.

  11. [...] Eine sehr nützliche Erweiterung für jeden Online Shop ist es den Besuchern aktuelle News über die Produkte anzubieten. XT Commerce bietet aber von Haus aus keine Möglichkeit dazu an. Auf lopsta.com gibt es eine Anleitung News in den XT:C Shop einzubinden. Eine wirklich sehr gute Idee auch aus Suchmaschinensicht, da dynamische Seiten von Google öfters besucht werden. [...]

  12. Das ist wirklich eine Super-Sache!
    Ich habe das ganze in meinem Shop unter www.spieleo.de realisiert.
    Nach dem ersten Einbau scheint alles zu klappen - ich bin mal gespannt, wie die Aktualisierung läuft.

  13. Ref: Fatal error: main() [function.require]

    Ich hatte diesen Fehler auch bei mir. Gelöst habe ich das Problem duch angeben einer relativen URL und nicht einer absoluten URL:

    Anstelle von "http://www….de/magpie/rss_fetch.inc" habe ich "magpie/rss_fetch.inc" verwendet.

    Ich denke, dass die Tatsache durch eine Einstellung in PHP verursacht wird, die solche "externen" Verweise unterbindet. Es handelt sich hier zwar nicht um einen echten externen Verweis, aber das Tut bei dem Fheler nichts zur Sache.

    Gruß

    Klaus

  14. Hallo,

    den ersten Fehler hatte ich auch. Nachdem ich es mit Wordpress ausprobiert habe ich auch nochmal b2evolution genommen, den Pafd angepasst. Jetzt bekomme ich noch den Fehler

    MagpieRSS: Failed to parse RSS file. (not well-formed (invalid token) at line 40, column 794)

    Über die FAQ von magpierss habe ich geschaut und den Feed auch auf Validität prüfen lassen. Der ist OK. Vielleicht hat ´ja noch jemand ein Tipp.

    danke und gruss
    olli

  15. der wordpress feed ist nicht 1000% valide, jedenfalls denkt magpie das.
    der umweg über feedburner sollte helfen, wenn auch nicht der sauberste weg.

  16. Tolles Script und eine gute Anleitung funktioniert alles reibungslos.
    Thx

  17. Sehr schöne Anleitung für die integration eines Blogs in xt commerce.... noch schöner wäre es natürlich wenn die funktionen: kommentar schreiben, ganzen artikel lesen, kommentare lesen (also im grunde die bekannten und relevanten standartfunktionen eines gewöhnlichen newsscripts) im maincontentbereich des eigentlichen xt commerce shops verfügbar wären und angezeigt werden.

    Der jetzige, notwendige Sprung auf die Blogseite um mit den News zu interagieren finde ich nicht sehr galant, der sprung von blog seite auf shop seite ist ganz klar gewollt und gut, aber als shopbesitzer empfinde ich den ungekehrten Fall, also den sprung von shop auf blogseite nicht sehr förderlich fürs geschäft.

    Gibt es keine einfache möglichkeit den bisherigen include so zu erweitern, das diese funktionen direkt im xt commerce shop ablaufen können und auf der shopseite selber erreichbar für den kunden sind?!

    Vielen Dank für die vielen guten tips und anleitungen auf der seite
    mfg philip

  18. Da ich schon länger nach einer integrierten Lösung suchte und nichts gefunden habe, habe ich mal selbst Hand angelegt: http://www.taschendirekt.de/blog/

  19. [...] Wie bereits unter Punkt 3 genannt, ist es wichtig für relevanten Text im Shop zu sorgen. Vor allem auf der Startseite empfiehlt es sich dynamische Texte einzubinden. Viele Shopsysteme bieten dazu wenig bis keine Möglichkeiten. Bei den meisten kann man nur eine statische Startseite einrichten. Ein Newssystem ist genau das Richtige dafür. Informieren Sie Besucher über Sonderangebote, neu eingestellte Produkte Gewinnspiel etc… Auf der Seite lopsta.com wird beschrieben, wie man Beiträge von einem Blog (RSS Feed) in einen XT:C Shop einbindet. Sumas lieben Seiten mit dynamischen Content. [...]

  20. [...] Shopsoftware Für Standard-Shopsoftware gibt es Anleitungen zur einfachen Integration, so z.B. hier für xt:commerce oder hier für Oxid eSales. Inhalte werden dann direkt im Shop angezeigt, z.B. in der Seitenleiste oder auch im zentralen Bereich. [...]

  21. [...] Shopsoftware Für Standard-Shopsoftware gibt es Anleitungen zur einfachen Integration, so z.B. hier für xt:commerce oder hier für Oxid eSales. Inhalte werden dann direkt im Shop angezeigt, z.B. in der Seitenleiste oder auch im zentralen Bereich. [...]

  22. [...] Heute habe ich den entscheidenden Hinweis gefunden. Schon länger hab ich es gesucht,zwischendurch gar nicht mehr dran gedacht und zufällig vor ein paar Tagen wieder drauf gestoßen: Wie kann man es in xtcommerce anstellen,dass Boxen bzw. deren Inhalt nur auf bestimmten Seiten eingeblendet werden? Da nun meine Kenntnisse in php,Smarty auch nicht gerade riesig sind,muß ich mir alles was ich brauche suchen. Bei diesem Problem allerdings war ich bis heute nicht weiter gekommen. Zwar taucht die Frage des öfteren in diversen xtc Foren auf,aber es gibt nie eine funktionierende Lösung. Nun muß ich ja zugeben,was ich heute gefunden habe,entspricht noch nicht bis ins letzte meinen Vorstellungen,bringt mich dem aber schon ein riesiges Stück näher. Zudem versuche ich gerade das Ursprungsprojekt,was mich auf die Lösung brachte,zu realisieren-nämlich ein eigenes Newssystem in xtc einzubauen und einen xtc eigenen Blog zu betreiben,auf dem man dann z.B. erweiterte Produktinformationen für im Shop angebotenen Produkte anbieten kann. Ich hoffe mal,man kann das Ergebnis dann bald in meinem Shop-Sylvias Lädchen-bewundern. So nun werde ich mal sehen,dass das dann auch bald alles klappt und daher werde ich m [...]

  23. [...] Ja ein paar Tage war hier nix Neues zu finden. Das hat natürlich auch einen Grund.Ich habe einige mehr oder weniger aufwendige Umbau- bzw. Umgestaltungsarbeiten an meinem Xtcommerce-Shop vollzogen,die auch noch nicht völlig beendet sind. Das Layout wurde nochmals verändert,ich habe nun einen eigenen Blog auch für Neuigkeiten aus dem Shop. Eine RSS Funktion wurde implementiert,um zusätzliche Werbemöglichkeiten zu haben. Dazu habe ich die schon auf auf Lopsta gefundene Möglichkeit allerdings so nicht verwendet sondern eine eigene Möglichkeit entwickelt.Bei der Gelegenheit wurde gleich nochmal das Layout angepasst und verbessert.Die bei Itratos.de entwickelte Slideshow für Xtcommerce wurde auf den neuesten Stand gebracht und angepasst.Damit habe ich nun eine nochmals sehr verbesserte Werbemöglichkeit für den Shop. Falls jemand sich schonmal den aktuellen Stand ansehen möchte-immer gern.Falls jemand Vorschläge zur Verbesserung hat:werden dankend angenommen und geprüft.Sylvias Lädchen [...]

  24. Hallo, woran kann es liegen, dasman gar nichts angezeigt bekommt?
    nutze inzwischen feedburner, aber ohne ergebnis.

    danke im voraus

  25. ok.. problem gelöst.

  26. Läute, danke für denn Tipp. Ich werde es demnächst auch probieren.

  27. Ich habe das bei mir auch versucht ( www.toys4you.eu ), aber ich bekomme immer irgendwelche Fehlermeldungen z.b
    Catchable fatal error: Object of class Smarty could not be converted to string in /web/index.php on line 82

    Wenn ich den code in die index.html einbaue, schaut es noch viel schlimmer aus.

    Wie bekomme ich eigentlich das RSS in Wordpress.

  28. Danke für die Beschreibung. Das werde ich glatt einmal ausprobieren.

    Grüße, Nicolas

  29. hallöchen

    was muss ich noch außer magpie in xtc einbinden um news quasi in der content seitre stehen zu haben? bin darin nochneuling.

    es soll ja dafür unter anderem gedacht sein den shop noch suma freundlicher zu machen

  30. Hallo,
    Ich habe alles Installiert.Habe den folgenden Code in der Index meines Tempaltes.
    {php}
    require_once('magpie/rss_fetch.inc');
    $url = 'http://www.ribble-mobile.info/wordpress/';
    $rss = fetch_rss($url);
    $num_items = 3;
    $items = array_slice($rss->items, 2, $num_items);echo "";
    foreach ($items as $item) {
    $title = $item[title];
    $link = $item[link];
    $desc = $item[description];
    $datum = substr($item[pubdate], 5, 12);
    echo "$title
    $datum$descAlles Lesen..\n";
    }{/php}
    Es wird aber auf der Startseite absolut nichts angezeigt ?
    Hat einer ne Ahnung woran es liegt ?

  31. [...] Ich hatte vor einiger Zeit mal ein Wordpress Plugin getestet, das den Feed als Image anzeigt. Damals war das Pugin noch Buggy und unbrauchbar. Das hat sich verbessert und es geht jetzt Problemlos. Das Plugin erzeug ein png, jpg, gif oder animated gif Bild aus dem Blogfeed. Dieses Bild kann man dann in Foren und anderen Seiten einblenden kann. Auch sehr gut geeignet um seine Blogartikel ohne soviel technischen Auswand in dem Shop einzubinden wie in dieser Lösung von mir. Bei dem Plugin vom Smarty Blog hat man alle Einstellmöglichkeiten wie Farben, Schriftarten, Imagegröße, Rahmen, etc. Zusätzlich können verschiedene Profile eingestellt werden, die jeweils verschiedene Imagedateien erzeugen. Man kann so z.b. eine gif Datei für seine Shopfrontpage erstellen, und eine weitere um den Blog in einem Fachforum zu Promoten. [...]

  32. 1.Magpie auf server kopieren.
    2. Wordpress installieren und eine Kategorie News einfügen.
    3.Unter Einstellungen, Permalinks auf Benutzerdefiniert und dann folgendes einfügen:

    /%category%/%postname%/

    4. Htacess datei in den Ordner Wordpress

    RewriteEngine On
    RewriteBase /wordpress/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wordpress/index.php [L]

    dann folgenden PHP-Code als feed.php speichern und auf den server hochladen.

    add("RSS FEED");

    require (DIR_WS_INCLUDES.'header.php');

    $feed = "";
    require_once('magpie/rss_fetch.inc');
    $url = 'http://www.deinedomain.de/wordpress/category/news/feed';
    $rss = fetch_rss($url);
    $num_items = 10;
    $items = array_slice($rss->items, 0, $num_items);echo "";
    foreach ($items as $item) {
    $title = $item[title];
    $link = $item[link];
    $desc = $item[description];
    $datum = substr($item[pubdate], 5, 12);
    $feed .= "".$title."
    ".$datum."".$desc."Alles Lesen..\n";
    }

    $smarty->assign('language', $_SESSION['language']);
    $smarty->assign('main_content', $feed);
    $smarty->caching = 0;
    if (!defined(RM))
    $smarty->load_filter('output', 'note');
    $smarty->display(CURRENT_TEMPLATE.'/index.html');
    include ('includes/application_bottom.php');
    ?>

    dann in der index.html:

    RSS-Feed

    dies könnt ihr nach belieben platzieren wo ihr wollt.

  33. Irgendwie hat der Blog den Code geschluckt??

    Hier nochmal die Passagen:

    Feed.php:


    add("RSS FEED");

    require (DIR_WS_INCLUDES.'header.php');

    $feed = "";
    require_once('magpie/rss_fetch.inc');
    $url = 'http://www.deinedomain.de/wordpress/category/news/feed';
    $rss = fetch_rss($url);
    $num_items = 10;
    $items = array_slice($rss->items, 0, $num_items);echo "";
    foreach ($items as $item) {
    $title = $item[title];
    $link = $item[link];
    $desc = $item[description];
    $datum = substr($item[pubdate], 5, 12);
    $feed .= "".$title."
    ".$datum."".$desc."Alles Lesen..\n";
    }

    $smarty->assign('language', $_SESSION['language']);
    $smarty->assign('main_content', $feed);
    $smarty->caching = 0;
    if (!defined(RM))
    $smarty->load_filter('output', 'note');
    $smarty->display(CURRENT_TEMPLATE.'/index.html');
    include ('includes/application_bottom.php');
    ?>

    Index:

  34. Index:

  35. bekomme folgenden fehler

    Warning: MagpieRSS: Failed to fetch http://blog.steigtechnik-shop.de/wordpress/category/News (HTTP Response: HTTP/1.1 404 Not Found ) in http://www.steigtechnik-shop.de/magpie/rss_fetch.inc on line 238

    Warning: array_slice() [function.array-slice]: The first argument should be an array in /home/www/steigtechnik/templates_c/%%5D^5D7^5D71EED0%%index.html.php on line 89

    Warning: Invalid argument supplied for foreach() in /home/www/steigtechnik/templates_c/%%5D^5D7^5D71EED0%%index.html.php on line 90

  36. so ich habe es jetzt nach dem post 32 gemacht

    aber was muss ich in der index einfügen rss feed!?

    aber wie/ als was?

  37. wenn ich die einstellung mache:

    3.Unter Einstellungen, Permalinks auf Benutzerdefiniert und dann folgendes einfügen:

    /%category%/%postname%/

    kommt ein serverfehler

  38. Hallo,
    habe es auch genau so gemacht..aber es passiert nichts...hab auch die 2te version mit der extra feed.php aber tut sich nichts...nichtmal eine Fehlermeldung...

  39. Bild von Dominik Schuster

    Dominik Schuster

    vor 1 Jahr

    Bei mir klappt das mit Magpie und Xtcommerce wunderbar - danke für die Anleitung!

    Ein Problem habe ich nur mit dem Datumformat. Das wird bei mir heute z.B. als "06 Mar 2008" angezeigt. Wie bekomme ich es hin, dass da steht "06.03.2008"?

    Danke für die Hilfe!

  40. Hallo,
    wie bekomme ich den Code in meine index.html im Template.
    wo und wie muß ich den Code einfügen.
    vielen Dank im Vorraus

  41. Hallo! Klasse Anleitung! Bekommt man mit dem Script keine Probleme wegen duplicate content?

  42. Ich habs mittels der robot.txt gelöst! War ne dumme Frage zugegeben.

  43. Hallo,
    danke für die gute Beschreibung! Genau so etwas habe ich gesucht und es funktioniert bestens.

  44. Basti - ich hab die gleiche Frage wie Du.
    Vielleicht findet sich jemand Kundiger, der uns da helfen kann??
    Bitte!

  45. Kommentar hinzufügen

    Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
    Wenn Du eine Gravatar Account hast, wird dieser verwendet.