Tutorial Avanzati - Rivoluzione al sistema banner Xoops! - Xoops Italia


left Login right
Nome utente:

Password:


Hai perso la password?
Registrati ora!
left Ricerca right
left Community right
left Collaborare right
left Supporto right
left Access Key right
  • ALT+1 Home
  • ALT+2 News
  • ALT+3 Forum
  • ALT+4 Downloads
  • ALT+5 Contattaci
  • ALT+6 Faq
[Maiusc+Alt] con FFox 2 [Alt+Invio] con IExplorer
left Statistiche right
Utenti registrati:
Oggi: 2
Ieri: 3
Totali: 5898
Ultimo: rrico

Utenti online:
Ospiti : 11
Membri : 1
Totali: 12
Lista utenti [Popup]

Tutorial Avanzati :: Sviluppo e Hack

Rivoluzione al sistema banner Xoops!


Rivoluzione al sistema banner Xoops!
slyss
Finalmente, dopo molto tempo, un hack firmato XoopsItalia che rivoluziona tutto il sistema di gestione banner di Xoops!
Profilo autore: slyss
Finalmente ho create 2 funzioni in grado di rivoluzionare tutto il sistema banner Xoops!

Grazie a questa funzione sarà possibile inserire svariati banner in ogni punto del nostro sito con la possibilità di scegliere quale tipo di banner visualizzare!

Il tutto sarà possibile farlo usando il sistema banner integrato in Xoops mantendo la classica gestione banner, gestione clienti, counter click, ecc.

Nello specifico sarà possibile gestire questi casi:

1) Nessuna distinzione banner: visualizzare banner random
2) Distinzione banner: visualizzare uno specifico banner
3) Distinzione cliente: visualizzare banner di un certo cliente specifico


ORA INIZIAMO CON IL CODICE:


Andate in root_directory/include/ ed aprire il file functions.php
Alla fine di questo file, prima de tag ?> inserire questo codice:



function getbanner_from_id_banner($banner_id)
{
###### Hack by www.stefanosilvestrini.com ######
global $xoopsConfig;
$db =& Database::getInstance();
$bresult $db->query("SELECT COUNT(*) FROM ".$db->prefix("banner")." WHERE bid = "$banner_id);
list (
$numrows) = $db->fetchRow($bresult);
if ( 
$numrows ) {
$numrows $numrows-1;
mt_srand((double)microtime()*1000000);
$bannum mt_rand(0$numrows);
} else {
$bannum 0;
}
if ( 
$numrows ) {
$bresult $db->query("SELECT * FROM ".$db->prefix("banner")." WHERE bid = "$banner_id1$bannum);
list (
$bid$cid$imptotal$impmade$clicks$imageurl$clickurl$date$htmlbanner$htmlcode) = $db->fetchRow($bresult);
if (
$xoopsConfig['my_ip'] == xoops_getenv('REMOTE_ADDR')) {
// EMPTY
} else {
$db->queryF(sprintf("UPDATE %s SET impmade = impmade+1 WHERE bid = %u"$db->prefix("banner"), $bid));
}
/* Check if this impression is the last one and print the banner */
if ( $imptotal == $impmade ) {
$newid $db->genId($db->prefix("bannerfinish")."_bid_seq");
$sql sprintf("INSERT INTO %s (bid, cid, impressions, clicks, datestart, dateend) VALUES (%u, %u, %u, %u, %u, %u)"$db->prefix("bannerfinish"), $newid$cid$impmade$clicks$datetime());
$db->queryF($sql);
$db->queryF(sprintf("DELETE FROM %s WHERE bid = %u"$db->prefix("banner"), $bid));
}
if (
$htmlbanner){
$bannerobject $htmlcode;
}else{
$bannerobject '<div align="center"><a href="'.XOOPS_URL.'/banners.php?op=click&bid='.$bid.'" target="_blank">';
if (
stristr($imageurl'.swf')) {
$bannerobject $bannerobject
.'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="468" height="60">'
.'<param name="movie" value="'.$imageurl.'"></param>'
.'<param name="quality" value="high"></param>'
.'<embed src="'.$imageurl.'" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="468" height="60">'
.'</embed>'
.'</object>';
} else {
$bannerobject $bannerobject.'<img src="'.$imageurl.'" alt="" />';
}

$bannerobject $bannerobject.'</a></div>';
}
return 
$bannerobject;
}
}

function 
getbanner_from_id_client($client_id)
{
###### Hack by www.stefanosilvestrini.com ######
global $xoopsConfig;
$db =& Database::getInstance();
$bresult $db->query("SELECT COUNT(*) FROM ".$db->prefix("banner")." WHERE cid = "$client_id);
list (
$numrows) = $db->fetchRow($bresult);
if ( 
$numrows ) {
$numrows $numrows-1;
mt_srand((double)microtime()*1000000);
$bannum mt_rand(0$numrows);
} else {
$bannum 0;
}
if ( 
$numrows ) {
$bresult $db->query("SELECT * FROM ".$db->prefix("banner")." WHERE cid = "$client_id ." ORDER BY rand()"1$bannum);
list (
$bid$cid$imptotal$impmade$clicks$imageurl$clickurl$date$htmlbanner$htmlcode) = $db->fetchRow($bresult);
if (
$xoopsConfig['my_ip'] == xoops_getenv('REMOTE_ADDR')) {
// EMPTY
} else {
$db->queryF(sprintf("UPDATE %s SET impmade = impmade+1 WHERE bid = %u"$db->prefix("banner"), $bid));
}
/* Check if this impression is the last one and print the banner */
if ( $imptotal == $impmade ) {
$newid $db->genId($db->prefix("bannerfinish")."_bid_seq");
$sql sprintf("INSERT INTO %s (bid, cid, impressions, clicks, datestart, dateend) VALUES (%u, %u, %u, %u, %u, %u)"$db->prefix("bannerfinish"), $newid$cid$impmade$clicks$datetime());
$db->queryF($sql);
$db->queryF(sprintf("DELETE FROM %s WHERE bid = %u"$db->prefix("banner"), $bid));
}
if (
$htmlbanner){
$bannerobject $htmlcode;
}else{
$bannerobject '<div align="center"><a href="'.XOOPS_URL.'/banners.php?op=click&bid='.$bid.'" target="_blank">';
if (
stristr($imageurl'.swf')) {
$bannerobject $bannerobject
.'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="468" height="60">'
.'<param name="movie" value="'.$imageurl.'"></param>'
.'<param name="quality" value="high"></param>'
.'<embed src="'.$imageurl.'" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="468" height="60">'
.'</embed>'
.'</object>';
} else {
$bannerobject $bannerobject.'<img src="'.$imageurl.'" alt="" />';
}

$bannerobject $bannerobject.'</a></div>';
}
return 
$bannerobject;
}
}



ora salvate e chiudete il suddetto file.


------------ ORA POSSIAMO GESTIRE QUESTI CASI ------------


CASO 1:

Inserisci i tuoi banner dove vuoi (senza alcuna limitazione): i banner saranno visualizzati random prelevati da tutti i banner inseriti nel sistema banner di Xoops.

Crea un nuovo blocco Xoops PHP e inserisci questo codice:



echo xoops_getbanner();



CASO 2:

Inserisci i tuoi banner dove vuoi (senza alcuna limitazione): i banner saranno visualizzati tramite ID_BANNER e quindi, per esempio, sarà possibile visualizzare specifici banner in diversi specifici blocchi Xoops, mantenendo sempre attivo il conteggio click ed impressioni.

Crea un nuovo blocco Xoops PHP e inserisci questo codice:



echo getbanner_from_id_banner(ID_BANNER);


dove ID_BANNER = ID del banner da visualizzare (puoi trovare questo ID nella pagina amministrazione banner --> Banner ID on Current Active Banners)


CASO 3:

Inserisci i tuoi banner dove vuoi (senza alcuna limitazione): i banner saranno visualizzati tramite ID_CLIENT e quindi, per esempio, se un cliente possiede 10 banner all'interno del blocco creato verranno visualizzati questi 10 banner prelevati a random e mantenendo sempre attivo il conteggio click ed impressioni.

Crea un nuovo blocco Xoops PHP e inserisci questo codice:



echo getbanner_from_id_client(ID_CLIENT);


dove ID_CLIENT = ID del cliente dei banner da visualizzare (puoi trovare questo ID nella pagina amministrazione banner --> Banner ID on Advertising Clients)



E' TUTTO! Aspetto i vostri feedback

Questo articolo è stato tradotto per la community inglese e spagnola:

English Version:
http://www.stefanosilvestrini.com/ste ... tem.php?easiestml_lang=en

Spanish Version:
http://www.esxoops.com/modules/news/article.php?storyid=734
<< Chi è on-line? (Versione AJAX) by Stefano Silvestrini Installare TinyMCE al posto di XoopsEditor >>
API: Strumenti PM Email PDF Siti Preferiti Stampa | RSS | RDF | ATOM
© 2002-2008 | Xoops Italia
I commenti sono proprietà dei rispettivi autori. Non siamo in alcun modo responsabili del loro contenuto.
Autore Albero
slyss
Inviato: 7/3/2008 22:24  Aggiornato: 7/3/2008 22:24
Staff
Iscritto: 21/8/2004
Da: Italy
Inviati: 3492
 Re: Rivoluzione al sistema banner Xoops!
in caso di problemi andate sul forum:

clicca qui!
timgno
Inviato: 7/3/2008 22:32  Aggiornato: 7/3/2008 22:32
Maestro
Iscritto: 16/5/2007
Da: Cosenza
Inviati: 922
 Re: Rivoluzione al sistema banner Xoops!
Complimenti...! Complimenti...! Complimenti...!

Questo è un vero CA-PO-LA-VO-RO ...
tony87
Inviato: 8/3/2008 11:28  Aggiornato: 8/3/2008 11:28
Simpatizzante
Iscritto: 27/12/2006
Da: Ravenna
Inviati: 128
 Re: Rivoluzione al sistema banner Xoops!
Excellent! ;)
cola967
Inviato: 8/3/2008 13:08  Aggiornato: 8/3/2008 13:08
Specialista
Iscritto: 23/5/2007
Da: roma
Inviati: 326
 Re: Rivoluzione al sistema banner Xoops!
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
STEFANO SILVESTRINI SEI UN GRANDE
Defkon1
Inviato: 8/3/2008 15:52  Aggiornato: 8/3/2008 15:52
Webmaster
Iscritto: 24/8/2004
Da: Ancona
Inviati: 5478
 Re: Rivoluzione al sistema banner Xoops!
double thumbs up!
tocai
Inviato: 8/3/2008 19:54  Aggiornato: 8/3/2008 19:54
Maestro
Iscritto: 13/2/2005
Da: Melito Na
Inviati: 727
 Re: Rivoluzione al sistema banner Xoops!
Complimenti! Un grandissimo grazie!
slyss
Inviato: 9/3/2008 19:10  Aggiornato: 9/3/2008 19:10
Staff
Iscritto: 21/8/2004
Da: Italy
Inviati: 3492
 Re: Rivoluzione al sistema banner Xoops!
grazie ragazzi
ag65
Inviato: 20/3/2008 13:27  Aggiornato: 20/3/2008 13:27
Niubbo
Iscritto: 13/8/2006
Da:
Inviati: 48
 Re: Rivoluzione al sistema banner Xoops!
Grazie a te slyss!!!
slyss
Inviato: 21/3/2008 8:36  Aggiornato: 21/3/2008 8:36
Staff
Iscritto: 21/8/2004
Da: Italy
Inviati: 3492
 Re: Rivoluzione al sistema banner Xoops!


© 2002-2008 | XOOPS ITALIA
Xoops Italia Logo
Powered by Xoops 2.0.13.2 WAI Level-A Conformance Valid XHTML 1.0 Transitional Valid CSS astonstreet Xoops Themes XHtml Logo RSS 2.0