Login
Nome utente:

Password:

Ricordami



Password persa?

Registrati ora!
Navigazione
Utenti Online
9 utente(i) online
(3 utente(i) in Tutorial)

Iscritti: 0
Ospiti: 9

altro...
Tutorial :: 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[1] {
// 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[2] {
// 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
Note
  1. 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'
  2. 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'
<< Chi č on-line? (Versione AJAX) by Stefano Silvestrini Installare TinyMCE al posto di XoopsEditor >>
API: RSS | RDF | ATOM
Copyright© slyss & Xoops Italia
I commenti sono di proprietà degli autori. Si declina ogni responsibilità sul loro contenuto.
Sostieni XoopsItalia!
Ultimi Tutorial
Ultime Traduzioni
XOOPS ITALIA © 2002-2010 - Powered by XOOPS