RSS Feed aus Contentpart News

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
User avatar
Marceau
Posts: 201
Joined: Sun 23. Apr 2006, 01:52
Location: Leipzig, Germany
Contact:

RSS Feed aus Contentpart News

Post by Marceau »

Guten Morgen.
Nach längerer Abwesenheit (hatte viel mit xt:Commerce zu tun) melde ich mich gleich mit einer Frage zurück:

Ist es möglich aus dem Contentpart News einen RSS-Feed zu generieren!? Hat es schonmal jemand gemacht? Habe da großes Interesse dran.

Liebe Grüße
There are 10 types of people in the world: Those who understand binary and those who don't
User avatar
Marceau
Posts: 201
Joined: Sun 23. Apr 2006, 01:52
Location: Leipzig, Germany
Contact:

Re: RSS Feed aus Contentpart News

Post by Marceau »

Okay ich habe eine Möglichkeit gefunden. Zwar mit nem "externen" Script, aber funzt trotzdem subba :)
Wenn Interesse besteht, poste ich es noch...

Greetz Marceau
There are 10 types of people in the world: Those who understand binary and those who don't
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: RSS Feed aus Contentpart News

Post by flip-flop »

Bitte posten und wenn möglich eine kleine Erklärung.

Knut :D
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
User avatar
Marceau
Posts: 201
Joined: Sun 23. Apr 2006, 01:52
Location: Leipzig, Germany
Contact:

Re: RSS Feed aus Contentpart News

Post by Marceau »

Okay dann versuche ich das Ganze mal. Ich hoffe es ist verständlich und es kommt rüber.
Im Grunde genommen wird in die index.php eine Datei inkludiert so um Zeile 60:

Code: Select all

// Einfügen, damit die Feeddatei immer wieder aktualisiert wird
require('Verzeichnis/rss.php');
In dieser rss.php wird eine Verbindung zur DB aufgebaut und gewünschte Tabellen abgefragt, und die feed-Datei erstellt bzw immer wieder aktualisiert.

rss.php

Code: Select all

<?
function mkRSS () {
	////KONFIGURATION (diese Variablen müssen angepasst werden):
   $dbServer = "localhost";  			// meist localhost)
   $dbName = "";         	// name der Datenbank
   $dbUser = "";           		// Datenbankbenutzer
   $dbPassword = ""; 				// Passwort
   $tableName = "phpwcms_content";     // Tabellenname der Tab., aus der die Daten entnommen werden
   //$lines="10";              // Anzahl anzuzeigender Datensätze
   $filename = "news";       // zum Beispiel news !! ohne Extension !!
   $title = "News";     // Titel des RSS-Feeds
   $description = "Newsfeed";     //Was zeigt das RSS-Feed?
   $language="de";           //Sprachkürzel
   $link="http://www.domain.de"; //Link
   $itemTitle = "cnt_title"; //Spaltenname aus der DB, wo der Titel des einzelnen Items steht
   $itemText = "cnt_teasertext";  //Spaltenname aus der DB, wo der Text des einzelnen Items steht

   // das SQL-Statement muss an die eigenen Erfordernisse angepasst werden
   $sql="SELECT *
	FROM `phpwcms_content`
	WHERE cnt_module = 'news'
	AND cnt_status = '1';";

// Bitte beachten, dass in der Zeile 45 noch die Variable $itemLink angepasst werden muss.
// ENDE KONFIGURATION

// DOCUMENT_ROOT wird automatisch ermittelt
   $siteRoot = substr_replace ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"],
              "",strrpos ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"], "/")+1);

//Erzeugen des RSS-Inhaltes:
   $rssHeader="<?xml version='1.0' encoding='ISO-8859-1' ?>
              <rss version='2.0'>
              <channel>
              <title>".$title."</title>
              <description>".$description."</description>
              <language>".$language."</language>
              <link>$link</link>
              ";
   $rssFooter="</channel>
              </rss>";
   $dbLink = mysql_connect ($dbServer,$dbUser,$dbPassword) or die (mysql_error());
   $setdb = mysql_select_db($dbName,$dbLink) or die (mysql_error());
   $result=mysql_query($sql,$dbLink) or die(mysql_error());
   $content=$rssHeader;
   while($row=mysql_fetch_array($result)){
   
   $row[$itemText] = str_replace("&uuml;","ü",$row[$itemText]); // ersetzt im Feed &uuml; durch ü
   $row[$itemText] = str_replace("ü","ü",$row[$itemText]);
   $row[$itemText] = str_replace("&ouml;","ö",$row[$itemText]);
   $row[$itemText] = str_replace("&auml;","ä",$row[$itemText]);
   $row[$itemText] = str_replace("ä","ä",$row[$itemText]);
   $row[$itemText] = str_replace("&szlig;","ss",$row[$itemText]);
   $row[$itemText] = str_replace("<p>","",$row[$itemText]);
   $row[$itemText] = str_replace("</p>","",$row[$itemText]);
   //$row[$itemText] = str_replace(" />",">",$row[$itemText]);
   //$row[$itemText] = str_replace("<br>","",$row[$itemText]);
   //$row[$itemText] = str_replace("</div>","",$row[$itemText]);
   //$row[$itemText] = preg_replace("(<img src=|border=|width=|height=|style=|alt=|title= >)","",$row[$itemText]);
   
      $titel=substr ($row[$itemTitle], 0, 150);  //$row anpassen! auch in der nächsten Zeile
      $text=substr ($row[$itemText], 0, 1000); //der Text darf höchstens 500 Zeichen lang sein
      $itemLink="http://www.domain.de";   //dies ist ein Link, der DIREKT diesen Punkt auf der Homepage öffnet.
                         //Er muss entsprechend deines Scripts dynamisch gebildet werden.
      $content.="<item>
                <title>".$titel."</title>
                <description><![CDATA[".$text."]]></description>
                <link>$itemLink</link>
                </item>
                ";
   }
   $content.=$rssFooter;

   // Datei wird geschrieben
   $fh=fopen ($siteRoot.$filename.".rss", "w");
   fputs ( $fh, $content);
   fclose($fh);

   // Datei wird umbenannt
   rename ($siteRoot.$filename.".rss", $siteRoot.$filename.".xml");
   return;
}

mkRSS();
?>
Der Ordner, wo die news.xml liegen soll braucht unbedingt Schreibrechte, sonst bekommt ihr nen Fehler ausgespuckt.

Jetzt müsst ihr in eurem Template eigentlich nur noch in den Kopfbereich folgenden Tag schreiben, damit das Feed-Symbol in der Browser-Adresszeile angezeigt wird:

Code: Select all

<link rel="alternate" type="application/rss+xml" title="Title" href="/news.xml" />
Dann sollte es eigtl funktionieren... ;)

Liebe Grüße und viel Spass

Marco
There are 10 types of people in the world: Those who understand binary and those who don't
motix
Posts: 52
Joined: Mon 9. May 2011, 13:39

Re: RSS Feed aus Contentpart News

Post by motix »

Hallo zusammen, super sache dies in einem eignen Feed zu presentieren.

Wenn ich dies bei der aktuellen Version von phpWCMS mache geht da gar nichts mehr.

Ist dies so oder mache ich generell einen Anwendungs Fehler?


Danke Gruss M
phalancs
Posts: 793
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

Re: RSS Feed aus Contentpart News

Post by phalancs »

Danke, funktioniert auch mit der neuesten Version wunderbar.

1. Datenbankdaten eingeben
2. Filename spezifizieren/ ggf. unterordner angeben: "content/rss/news"
3. der angesprochenene ordner muss beschreibbar sein!
3. php datei testweise aufrufen oder den aufruf in die iqndex php schreiben
4. die xml datei ist nun mit allen daten erstellt

Wenn ihr diese Version nehmt, braucht ihr nichts anzupassen, es sei denn ihr wollt den Titel des Feeds ändern.

Code: Select all

<?
function mkRSS () {

require_once ('config/phpwcms/conf.inc.php');


   ////KONFIGURATION (diese Variablen müssen angepasst werden):
   $dbServer = $phpwcms['db_host'];           // meist localhost)
   $dbName = $phpwcms['db_table'];            // name der Datenbank
   $dbUser = $phpwcms['db_user'];                 // Datenbankbenutzer
   $dbPassword = $phpwcms['db_pass'];             // Passwort
   $tableName = "phpwcms_content";     // Tabellenname der Tab., aus der die Daten entnommen werden
   
   //$lines="10";              // Anzahl anzuzeigender Datensätze
   $filename = "content/rss/news";       // zum Beispiel news !! ohne Extension !!
   $title = "News";     // Titel des RSS-Feeds
   $description = "Newsfeed - ".$_SERVER['SERVER_NAME'];     //Was zeigt das RSS-Feed?
   $language= $phpwcms['default_lang'];           //Sprachkürzel
   $link = $phpwcms['site']; //Link
   
   $itemTitle = "cnt_title"; //Spaltenname aus der DB, wo der Titel des einzelnen Items steht
   $itemText = "cnt_teasertext";  //Spaltenname aus der DB, wo der Text des einzelnen Items steht

   // das SQL-Statement muss an die eigenen Erfordernisse angepasst werden
   $sql="SELECT *
   FROM `phpwcms_content`
   WHERE cnt_module = 'news'
   AND cnt_status = '1';";

// Bitte beachten, dass in der Zeile 45 noch die Variable $itemLink angepasst werden muss.
// ENDE KONFIGURATION

// DOCUMENT_ROOT wird automatisch ermittelt
   $siteRoot = substr_replace ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"],
              "",strrpos ($_SERVER[DOCUMENT_ROOT].$_SERVER["PHP_SELF"], "/")+1);

//Erzeugen des RSS-Inhaltes:
   $rssHeader="<?xml version='1.0' encoding='ISO-8859-1' ?>
              <rss version='2.0'>
              <channel>
              <title>".$title."</title>
              <description>".$description."</description>
              <language>".$language."</language>
              <link>$link</link>
              ";
   $rssFooter="</channel>
              </rss>";
   $dbLink = mysql_connect ($dbServer,$dbUser,$dbPassword) or die (mysql_error());
   $setdb = mysql_select_db($dbName,$dbLink) or die (mysql_error());
   $result=mysql_query($sql,$dbLink) or die(mysql_error());
   $content=$rssHeader;
   while($row=mysql_fetch_array($result)){
   
   $row[$itemText] = str_replace("&uuml;","ü",$row[$itemText]); // ersetzt im Feed &uuml; durch ü
   $row[$itemText] = str_replace("ü","ü",$row[$itemText]);
   $row[$itemText] = str_replace("&ouml;","ö",$row[$itemText]);
   $row[$itemText] = str_replace("&auml;","ä",$row[$itemText]);
   $row[$itemText] = str_replace("ä","ä",$row[$itemText]);
   $row[$itemText] = str_replace("&szlig;","ss",$row[$itemText]);
   $row[$itemText] = str_replace("<p>","",$row[$itemText]);
   $row[$itemText] = str_replace("</p>","",$row[$itemText]);
   //$row[$itemText] = str_replace(" />",">",$row[$itemText]);
   //$row[$itemText] = str_replace("<br>","",$row[$itemText]);
   //$row[$itemText] = str_replace("</div>","",$row[$itemText]);
   //$row[$itemText] = preg_replace("(<img src=|border=|width=|height=|style=|alt=|title= >)","",$row[$itemText]);
   
      $titel=substr ($row[$itemTitle], 0, 150);  //$row anpassen! auch in der nächsten Zeile
      $text=substr ($row[$itemText], 0, 1000); //der Text darf höchstens 500 Zeichen lang sein
      
      $itemLink= $phpwcms['site'];   //dies ist ein Link, der DIREKT diesen Punkt auf der Homepage öffnet.
      
                         //Er muss entsprechend deines Scripts dynamisch gebildet werden.
      $content.="<item>
                <title>".$titel."</title>
                <description><![CDATA[".$text."]]></description>
                <link>$itemLink</link>
                </item>
                ";
   }
   $content.=$rssFooter;

   // Datei wird geschrieben
   $fh=fopen ($siteRoot.$filename.".rss", "w");
   fputs ( $fh, $content);
   fclose($fh);

   // Datei wird umbenannt
   rename ($siteRoot.$filename.".rss", $siteRoot.$filename.".xml");
   return;
}

mkRSS();
?>
2008
nameless1
Posts: 880
Joined: Sun 27. Apr 2008, 23:22

Re: RSS Feed aus Contentpart News

Post by nameless1 »

danke. nun klappt auch der soziale import.

habs mal ins howto gehoben.
phalancs
Posts: 793
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

Re: RSS Feed aus Contentpart News

Post by phalancs »

Habe eine neue Version gestellt, kann gerne auch in die Doku übertragen werden, weitere Version packe ich immer auch auf die folgende Seite, da ich dort und bei Git die Dateien pflegen werde:

http://www.enym.com/artikel/20121211-54 ... pwcms.html
2008
nameless1
Posts: 880
Joined: Sun 27. Apr 2008, 23:22

Re: RSS Feed aus Contentpart News

Post by nameless1 »

danke phalancs. ich übernehme den übertrag mit verweis auf deine webseite im wiki.

nml1
phalancs
Posts: 793
Joined: Thu 19. Feb 2004, 05:09
Location: Germany

Re: RSS Feed aus Contentpart News

Post by phalancs »

Danke :)
2008
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: RSS Feed aus Contentpart News

Post by update »

Gibt's hier schon eine Änderung, sodass das mittlerweile auch in der feed-conf einstellbar ist, um die News mit in den normalen feed einfließen lassen zu können?
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
nameless1
Posts: 880
Joined: Sun 27. Apr 2008, 23:22

Re: RSS Feed aus Contentpart News

Post by nameless1 »

nö, aber sicher geplant :o
klinge
Posts: 16
Joined: Sat 28. Dec 2013, 23:42

Re: RSS Feed aus Contentpart News

Post by klinge »

Hallo

ich möchte aus dem content part news einen rss-feed erzeugen. Dazu habe ich hier http://www.enym.com/rss-feed-fur-news-items-in-phpwcms/ das neuste Script geholt. Leider habe ich es nicht geschafft.

Ich habe das script in den root Ordner kopiert und die Configuration so angepasst:

Code: Select all

//CONFIGURATION
$news_aid = 24; //ARTICLEID OF NEWSARTICLE
$news_alias = „home“; //ARTICLEALIAS OF NEWSARTICLE
$title = „Newsfeed“;
$description = „Newsfeed“;
//END OF CONFIGURATION
In der Index.php habe ich auf Zeile 69 folgenden Eintrag vorgenommen:

Code: Select all

require PHPWCMS_ROOT.'/news_rss.php';
Offenbar wird das Script aufgerufen, ich erhalte beim Aufruf der Seite nämlich Fehlermeldungen. Zum Beispiel:

Code: Select all

Parse error: syntax error, unexpected 'phpwcms_content' (T_STRING) in /home/attacber/www/al-be.ch/news_rss.php on line 21
Kann da jemand weiterhelfen?

Merci + Gruss
User avatar
Oliver Georgi
Site Admin
Posts: 9907
Joined: Fri 3. Oct 2003, 22:22
Contact:

Re: RSS Feed aus Contentpart News

Post by Oliver Georgi »

DB Präfix?
Oliver Georgi | phpwcms Developer | GitHub | LinkedIn | Систрон
klinge
Posts: 16
Joined: Sat 28. Dec 2013, 23:42

Re: RSS Feed aus Contentpart News

Post by klinge »

und wo muss ich das eintragen?
Post Reply