Dynadot

Nice tutorial on content syndication through php/js

NameSilo
Watch

cassius

Account Closed
Impact
3
I don't know if we are allowed to link to tutorials on other sites (if not, please remove and sorry for the infraction); but here is a nice tutorial on how to syndicate content so that other webmasters can easily incorporate your content into their page.

I have this implemented on my site. If you want to have a look (tiny-ized for masking purposes).

You will have to click on the I agree button and play around with the drop-downs to see the code that gets generated.
 
Last edited by a moderator:
0
•••
The views expressed on this page by users and staff are their own, not those of NamePros.
I like it friend. I also appreciate the effort from your side to share your thoughts.

It is just that we have to follow the rules.

If that content isn't under some copyright or if you can write it on your own some experiences of yours then we all would be glad to take advantage of it.

Thanks.
 
0
•••
OK and sorry for the infraction. You might as well nuke the thread because any tutorial I would write up would either be too general to be useful or would include the specific php files detailed on that page which would infringe on his copyright.
 
0
•••
Humm.... after locking it I gave it another thought. I thought why not write it myself :D

So here is code to fetch the RSS and parse it into HTML with help of PHP. Sorry there is no Java in between. Had posted it before in Programming and Code section.

PHP:
<?php
set_time_limit(0);
//Enter the URL of RSS feed in the line below
$file = "http://theurlofrsshere";
$rss_channel = array();
$currently_writing = "";
$main = "";
$item_counter = 0;
function startElement($parser, $name, $attrs) {
       global $rss_channel, $currently_writing, $main;
       switch($name) {
           case "RSS":
           case "RDF:RDF":
           case "ITEMS":
               $currently_writing = "";
               break;
           case "CHANNEL":
               $main = "CHANNEL";
               break;
           case "IMAGE":
               $main = "IMAGE";
               $rss_channel["IMAGE"] = array();
               break;
           case "ITEM":
               $main = "ITEMS";
               break;
           default:
               $currently_writing = $name;
               break;
       }
}
function endElement($parser, $name) {
       global $rss_channel, $currently_writing, $item_counter;
       $currently_writing = "";
       if ($name == "ITEM") {
           $item_counter++;
       }
}

function characterData($parser, $data) {
    global $rss_channel, $currently_writing, $main, $item_counter;
    if ($currently_writing != "") {
        switch($main) {
            case "CHANNEL":
                if (isset($rss_channel[$currently_writing])) {
                    $rss_channel[$currently_writing] .= $data;
                } else {
                    $rss_channel[$currently_writing] = $data;
                }
                break;
            case "IMAGE":
                if (isset($rss_channel[$main][$currently_writing])) {
                    $rss_channel[$main][$currently_writing] .= $data;
                } else {
                    $rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case "ITEMS":
                if (isset($rss_channel[$main][$item_counter][$currently_writing])) {
                    $rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    $rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),  
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);

// output HTML

if (isset($rss_channel["ITEMS"]))
{
echo "<font face='Verdana' size='2' color='#333333'>";
if (count($rss_channel["ITEMS"]) > 0)
{
for($i = 0;$i < count($rss_channel["ITEMS"]);$i++)
{
if (isset($rss_channel["ITEMS"][$i]["LINK"]))
{
echo "<a href=\"" . $rss_channel["ITEMS"][$i]["LINK"] . "\">" . $rss_channel["ITEMS"][$i]["TITLE"] . "</a><br>";
}
else
{
echo $rss_channel["ITEMS"][$i]["TITLE"];
}
echo $rss_channel["ITEMS"][$i]["DESCRIPTION"] . "<p> </p>";
}
}
else
{
echo "<b>There are no articles in this feed.</b>";
}
echo "</font>";
}
?>
 
0
•••
  • The sidebar remains visible by scrolling at a speed relative to the page’s height.
Back