PDA

Zobacz pełną wersję : Eventlist dodatek RSS



danio_d
03-11-2011, 08:43
Witam,

Znalazłem skrypt dla Eventlist 1.1 do tworzenia rss dla tego komponentu.
Na swojej stronie mam wersję 1.0.1 (raczej nie planuję aktualizacji - za dużo własnych zmian) i przerobiłem powyższy skrypt, żeby działał z tą wersją. I prawie jest dobrze :|
Nie wiem dlaczego niektóre wpisy wstawiane są kilkakrotnie oraz dlaczego widać tylko wpisy od 16 listopada skoro w bazie są wcześniejsze.

Tutaj jest oryginalny kod http://www.sbzsystems.com/en/software/free-source-delphi-php-perl/236

A tutaj mój:

http://www.expovortal.com/event.php


<?php
// rss feed for eventlist 1.1 by SBZ systems - Solon Zenetzis
// http://www.sbzsystems.com

/* Initialize Joomla framework */
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
/* Required Files */
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
/* To use Joomla's Database Class */
//require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' );
/* Create the Application */
$config = new JConfig();

$offset= $config->offset;
$host = $config->host;
$user = $config->user;
$password = $config->password;
$db = $config->db;
$dbprefix = $config->dbprefix;
$sitename = $config->sitename;
$MetaDesc = $config->MetaDesc;
$url =$_SERVER['HTTP_HOST'];



////////////// SETTINGS
$limit_results=200;
$limit_words=500;
$logo='/images/stories/logo.jpg';
///////////////////////



//open database
$link=mysql_connect("$host", $user, $password) or die(mysql_error());
mysql_select_db("$db") or die(mysql_error());
mysql_set_charset('utf8',$link);


$query ='
SELECT '.$dbprefix.'menu.id AS itemid, '.$dbprefix.'menu.name, title, datdescription, '.$dbprefix.'eventlist_events.id, datimage, '.$dbprefix.'menu.parent, '.$dbprefix.'eventlist_events.dates, '.$dbprefix.'eventlist_categories.catname
FROM '.$dbprefix.'menu, '.$dbprefix.'eventlist_events, '.$dbprefix.'eventlist_categories
WHERE '.$dbprefix.'menu.link LIKE CONCAT( \'%id=\', '.$dbprefix.'eventlist_events.id )
AND '.$dbprefix.'eventlist_events.dates >= CURDATE()
AND '.$dbprefix.'eventlist_events.published = 1
ORDER BY dates ASC limit '.$limit_results;


$data = mysql_query($query) or die(mysql_error());



//////////////////////
$rssfeed = '<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>
<title>'.$sitename.'</title>
<link>http://'.$url.'</link>
<description>'.$MetaDesc .'</description>
<image>
<title>'.$sitename.'</title>
<url>http://'.$url.$logo.'</url>
<link>http://'.$url.'</link>
</image>';





while($allcats = mysql_fetch_array($data)) {


extract($allcats);


/*if (date('Y', $created)<2000) {
$created=date('r');
} else {
$created=date('r',$created);
}
if (date('Y', $dates)<2000) {
$dates=date('r');
} else {
$dates=date('r',$dates);
}*/

$maintext=cleantext($datdescription,$limit_words);
if ($maintext) { $maintext=$maintext.'...<br><br>'; }

$rssfeed .='
<item>
<title>'.cleantext($title,0).'</title>
<link>http://'.$url .'/index.php?option=com_eventlist&amp;view=details&amp;id='.$ id.'&amp;Itemid=180</link>
<guid isPermaLink="false">http://'.$url .'/index.php?option=com_eventlist&amp;view=details&amp;id='.$ id.'&amp;Itemid='.$itemid.'</guid>
<description><![CDATA[<img style="float: left;" alt="'.cleantext($title,0).'" src="http://'.$url.'/images/eventlist/events/small/'.$datimage.'" width="100" /><p>'.$maintext.'</p>]]></description>
<pubDate>'.$dates.'</pubDate>


</item>
';
//&amp;Itemid=180

}

$rssfeed .= '</channel>
</rss>';

echo $rssfeed;




///clean text from html tags
function cleantext($n,$c){
//keep image
if ($c>0) {
preg_match_all('/<img[^>]+>/i',$n, $image);
}
//clean html
$n=strip_tags($n);
$n=str_replace('&','&amp;',($n));
//count words
if ($c>0) {
for ($i = 0; $i <= strlen( $n); $i++) {
if (substr($n,$i,1) == ' ') {
$keno++;
if ($keno>$c) {
break;
}
}
}
$n=$image[0][0].substr($n,0,$i);
}
return $n;
}



?>