Une révolution dans le systeme de bannières Xoops !

Date 24/11/2009 | Sujet : Programmation, Hack, ...

2 fonctions ont étés créées pour placer vos bannières partout où vous voulez et pour choisir quelle bannière afficher.
C'est très simple. Vous avez 3 options pour placer vos bannières dans des blocs :

1. Aucune préférence de bannières : affichage aléatoire de bannières
2. Préférence de bannière : affichage d'une bannière spécifique
3. Préférence de client : affichage spécifique d'une bannière client

Comment faire :

Ouvrez le fichier functions.php du dossier /include se trouvant à la racine de votre site, et inserez ce code juste avant le tag ?>
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>'
.'</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>'
.'</object>';
} else {
$bannerobject $bannerobject.'<img src="'.$imageurl.'" alt="" />';
}

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

- Sauvegardez et fermez le fichier

Maintenant il y a 3 façons simples de créer vos blocs de bannières :

CAS 1 :

Placez vos bannières dans vos blocs (aucune limite pour le nombre de blocs) n'importe où vous voulez. Vos bannières seront affichées aléatoirement.

- Ajoutez un nouveau bloc PHP personnalisé et insérez ce code :

echo xoops_getbanner();



CAS 2 :

Placez vos bannières dans vos blocs (aucune limite pour le nombre de blocs) n'importe où vous voulez. Vos bannières s'afficheront par leur ID et ainsi, par exemple, vous pouvez choisir une bannière spécifique dans un bloc spécifique.

- Ajoutez un nouveau bloc PHP personnalisé et insérez ce code :

echo getbanner_from_id_banner(ID_BANNER);

Où ID_BANNER = ID de la bannière à afficher (vous pouvez voir cet ID dans la page d'administration des bannières --> colonne ID Bannières dans la partie des Bannières actuellement actives)


CAS 3 :

Placez vos bannières dans vos blocs (aucune limite pour le nombre de blocs) n'importe où vous voulez. Vos bannières seront affichées par leur ID_CLIENT. Ainsi, par exemple, si un client a 10 bannières, vos bannières s'afficheront aléatoirement uniquement pour ces 10 bannières.

- Ajoutez un nouveau bloc PHP personnalisé et insérez ce code :

echo getbanner_from_id_client(ID_CLIENT);

Où ID_CLIENT = ID du client des bannières à afficher (vous pouvez voir cet ID dans la page d'administration des bannières --> colonne ID Bannières dans la partie Clients annonceurs)

Voila

-- Article venant de xoops.org posté par slyss --> ICI --




Cet article provient de Communauté Francophone des Utilisateurs de Xoops
http://www.frxoops.org

L'adresse de cet article est :
http://www.frxoops.org/modules/news/article.php?storyid=1692