Fork me on GitHub

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

200924
Novembre
  cobalt Programmation, Hack, ... 6073
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 --

Note: 9.00 (3 votes) - Noter cet article -

Partager Twitter Partagez cette article sur GG+
Format imprimable Envoyer cet article à un ami
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Admin Frxoops
Inscrit le: 04/02/2003
De: Blois
Contributions: 3071
philou Posté le: 24/11/2009 15:44  Mis à jour: 24/11/2009 15:44
 Re: Une révolution dans le systeme de bannières Xoops !
Excellent !
Merci
Supporter Xoops
Inscrit le: 09/01/2005
De: Breizh
Contributions: 16972
Kris Posté le: 24/11/2009 16:57  Mis à jour: 24/11/2009 16:57
 Re: Une révolution dans le systeme de bannières Xoops !
Excellent article (et traduction )
Concernant le code à modifier, celui-ci serait plus conforme et actuel :
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 style="text-align:center;"><a href="'.XOOPS_URL.'/banners.php?op=click&bid='.$bid.'" rel="external" title="'.$imageurl.'">'
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=9,0, 28,0" width="468" height="60">' 
.'<param name="movie" value="'.$imageurl.'"></param>' 
.'<param name="wmode" value="opaque" />'
.'</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  style="text-align:center;"><a href="'.XOOPS_URL.'/banners.php?op=click&bid='.$bid.'" rel="external" title="'.$imageurl.'">'
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=9,0, 28,0" width="468" height="60">' 
.'<param name="movie" value="'.$imageurl.'"></param>'
.'<param name="wmode" value="opaque" />'
.'</object>'
} else { 
$bannerobject $bannerobject.'<img src="'.$imageurl.'" alt="" />'


$bannerobject $bannerobject.'</a></div>'

return 
$bannerobject

}


Il est également recommandé d'éviter les bannières flash (.swf) car elle pose problème sous ie (double clic pour l'activation et donc le lien)

Kris
Semi pro
Inscrit le: 22/02/2004
De:
Contributions: 997
kraven30 Posté le: 24/11/2009 16:58  Mis à jour: 24/11/2009 17:00
 Re: Une révolution dans le systeme de bannières Xoops !
Citation :
Une révolution dans le systeme de bannières Xoops !

, ca fait 2 ans qu'il existe ce hack mais bon un petit rappel ne fait pas de mal

++
Semi pro
Inscrit le: 07/11/2009
De: Lot
Contributions: 517
nico46 Posté le: 24/11/2009 18:50  Mis à jour: 24/11/2009 18:50
 Re: Une révolution dans le systeme de bannières Xoops !
Complètement superbes ce hack, je l'ais adopter de suite tellement il est pratique et fonctionnel.
J'espère qu'il sera directement intégrer dans la prochaine version de Xoops pacqu'il vaut vraiment le coup.
Merci kris pour ta modification que j'ai mise en ligne.

ENJOY.
Xoops accro
Inscrit le: 16/08/2005
De: Nanterre
Contributions: 2331
eparcyl92 Posté le: 24/11/2009 18:51  Mis à jour: 24/11/2009 18:51
 Re: Une révolution dans le systeme de bannières Xoops !
Su... per... Chou... ette
Bravo et merci à tous
Semi pro
Inscrit le: 27/10/2004
De:
Contributions: 566
grandoc Posté le: 25/11/2009 10:31  Mis à jour: 25/11/2009 10:31
 Re: Une révolution dans le systeme de bannières Xoops !
Bravo!
Quand on a des bonnes bouteilles à la cave, il est bon d'en remonter une de temps en temps

à boire sans modération!
Semi pro
Inscrit le: 06/09/2005
De: Barcelone - Espagne
Contributions: 691
Guitariste Posté le: 30/11/2009 23:50  Mis à jour: 30/11/2009 23:50
 Re: Une révolution dans le systeme de bannières Xoops !
Vous trichez en profitant de mon absence !?

Nice ;)
Semi pro
Inscrit le: 06/09/2005
De: Barcelone - Espagne
Contributions: 691
Guitariste Posté le: 01/12/2009 00:24  Mis à jour: 01/12/2009 00:24
 Re: Une révolution dans le systeme de bannières Xoops !
Testé, ça marche !

Sauf que dans nos blocs au corps du site, des fois on a besoin que le contenu soit centré ^^

Et la franchement je vois pas comment center !
Newbie
Inscrit le: 31/07/2011
De:
Contributions: 9
marech Posté le: 11/08/2011 01:20  Mis à jour: 11/08/2011 01:20
 Re: Une révolution dans le systeme de bannières Xoops !
merci pour ce hack mais comment centre mais banniere dans le bloc
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

32 Personne(s) en ligne (2 Personne(s) connectée(s) sur Articles) | Utilisateur(s): 0 | Invité(s): 32 | Plus ...