Ciao ragazzi.
All'interno di una pagina php il cui codice è il seguente:
c'è uno script php che esegue il parsing di un file xml esterno (sono notizie in tempo reale) e poi un dhtml che fa scorrere il risultato del parsing tipo marquee verticale.codice:<?php class xItem { var $xTitle; var $xLink; var $xDescription; } $sTitle = ""; $sLink = ""; $sDescription = ""; $arItems = array(); $itemCount = 0; $uFile = "rss2.0.xml"; $bDesc = true; $uFont = "Verdana, Arial, Helvetica, sans-serif"; $uFontSize = "2"; function startElement($parser, $name, $attrs) { global $curTag; $curTag .= "^$name"; } function endElement($parser, $name) { global $curTag; $caret_pos = strrpos($curTag,'^'); $curTag = substr($curTag,0,$caret_pos); } function characterData($parser, $data) { global $curTag; global $sTitle, $sLink, $sDescription; $titleKey = "^RSS^CHANNEL^TITLE"; $linkKey = "^RSS^CHANNEL^LINK"; $descKey = "^RSS^CHANNEL^DESCRIPTION"; if ($curTag == $titleKey) { $sTitle = $data; } elseif ($curTag == $linkKey) { $sLink = $data; } elseif ($curTag == $descKey) { $sDescription = $data; } global $arItems, $itemCount; $itemTitleKey = "^RSS^CHANNEL^ITEM^TITLE"; $itemLinkKey = "^RSS^CHANNEL^ITEM^LINK"; $itemDescKey = "^RSS^CHANNEL^ITEM^DESCRIPTION"; if ($curTag == $itemTitleKey) { $arItems[$itemCount] = new xItem(); $arItems[$itemCount]->xTitle = $data; //------- added by badaze $arItems[$itemCount]->xLink = ""; $arItems[$itemCount]->xDescription = ""; } elseif ($curTag == $itemLinkKey) { $arItems[$itemCount]->xLink = $data; //------- added by badaze $arItems[$itemCount]->xTitle = ""; $arItems[$itemCount]->xDescription = ""; } elseif ($curTag == $itemDescKey) { $arItems[$itemCount]->xDescription = $data; //------- added by badaze $arItems[$itemCount]->xTitle = ""; $arItems[$itemCount]->xLink = ""; $itemCount++; } } $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_pars er, "characterData"); if (!($fp = fopen($uFile,"r"))) { die ("could not open RSS for 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); //--------- added by badaze : creo l'uscita HTML senza visualizzarla ob_start() ?> <table width="100" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="news"> <?php for ($i=0;$i<count($arItems);$i++) { $txItem = $arItems[$i]; if ($txItem->xLink != "") {?> <font face = "<?php echo($uFont); ?>" size = "<?php echo($uFontSize); ?>"> <a class="base" href = "<?php echo($txItem->xLink); ?>"><?php echo($txItem->xTitle); ?> </a> </font><?php } // if ($txItem->xLink != "") if ($bDesc) { ?> <font face = "<?php echo($uFont); ?>" size = "<?php echo($uFontSize); ?>"> <?php echo ($txItem->xDescription); ?> </font><?php } echo (" "); } // for ($i=0;$i<count($arItems);$i++) ?> </td> </tr> </table><?php $marquee = ob_get_contents(); ob_end_clean(); ?> <html> <head> <title><?php echo ($sTitle); ?></title> <meta name = "description" content = "<?php echo ($sDescription); ?>"> <link href="foglio.css" rel="stylesheet" type="text/css"> <style type="text/css"> <!-- .hidden {position:absolute;left:-10000;top:-1000} --> </style> </head> <body bgcolor = "#FFFFFF"> <textarea id="htext" class="hidden"><? print $marquee ?></textarea> <script language="JavaScript1.2"> /* Cross browser Marquee II- © Dynamic Drive (www.dynamicdrive.com) For full source code, 100's more DHTML scripts, and TOS, visit http://www.dynamicdrive.com Credit MUST stay intact */ //Specify the marquee's width (in pixels) var marqueewidth="200px" //Specify the marquee's height var marqueeheight="150px" //Specify the marquee's marquee speed (larger is faster 1-10) var marqueespeed=2 //Pause marquee onMousever (0=no. 1=yes)? var pauseit=1 //Specify the marquee's content //Keep all content on ONE line, and backslash any single quotations (ie: that's great): //-------- added by badaze : assegno il codice HTML alla variabile marquee var marqueecontent=document.getElementById('htext').value; ////NO NEED TO EDIT BELOW THIS LINE//////////// marqueespeed=(document.all)? marqueespeed : Math.max(1, marqueespeed-1) //slow speed down by 1 for NS var copyspeed=marqueespeed var pausespeed=(pauseit==0)? copyspeed: 0 var iedom=document.all||document.getElementById var actualheight='' var cross_marquee, ns_marquee function populate(){ if (iedom){ cross_marquee=document.getElementById? document.getElementById("iemarquee") : document.all.iemarquee cross_marquee.style.top=parseInt(marqueeheight)+8+"px" cross_marquee.innerHTML=marqueecontent actualheight=cross_marquee.offsetHeight } else if (document.layers){ ns_marquee=document.ns_marquee.document.ns_marquee2 ns_marquee.top=parseInt(marqueeheight)+8 ns_marquee.document.write(marqueecontent) ns_marquee.document.close() actualheight=ns_marquee.document.height } lefttime=setInterval("scrollmarquee()",20) } window.onload=populate function scrollmarquee(){ if (iedom){ if (parseInt(cross_marquee.style.top)>(actualheight*(-1)+8)) cross_marquee.style.top=parseInt(cross_marquee.style.top)-copyspeed+"px" else cross_marquee.style.top=parseInt(marqueeheight)+8+"px" } else if (document.layers){ if (ns_marquee.top>(actualheight*(-1)+8)) ns_marquee.top-=copyspeed else ns_marquee.top=parseInt(marqueeheight)+8 } } if (iedom||document.layers){ with (document){ if (iedom){ write('<div style=" position:relative;width:'+marqueewidth+' ;height:'+marqueeheight+';overflow:hidde n" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed">') write('<div id="iemarquee" style=" position:absolute;left:0px;top:0px;width :100%;">') write('</div></div>') } else if (document.layers){ write('<ilayer width='+marqueewidth+' height='+marqueeheight+' name="ns_marquee">') write('<layer name="ns_marquee2" width='+marqueewidth+' height='+marqueeheight+' left=0 top=0 onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed"></layer>') write('</ilayer>') } } } </script> </body> </html>
Ora mettiamo che voglia ripetere la stessa procedura all'interno della medesima pagina, cambiando il percorso del file xml, in modo da poter inserire un altro blocco di news differenti da un'altro sito, che replicare il codice rinominando tutte le variabili? O c'è un via alternativa?

Rispondi quotando
