Menú
Usuario
Bienvenido
Haz click para registrarte. Es gratuito y podrás utilizar todos los recursos de la web

Login

Recuerdame

¿Perdió su contraseña?


Online
Conectados: 14
Miembros: 1
Invitados: 9
Buscadores: 4

Estadísticas
Nuevos miembros: [mlorca-29/7/2010] [venoom-27/7/2010] [caran-27/7/2010] [fcopari-26/7/2010] [kal-26/7/2010] [voxel3d-25/7/2010] [bertov-24/7/2010] [cmshostin-24/7/2010] [donmatu-20/7/2010] [charity221-20/7/2010]
Registrados: 8588
Hoy: 0
Ayer: 1

Conectados:
peoption
gbInvitado
usInvitadoXOOPS TAG
usInvitadoNoticias
usInvitadoFAQ
usInvitadoXOOPS TAG
usInvitadoNoticias
uaInvitado
ruInvitadoForos
ruInvitado
Donar Ahora!
Por favor seleccione el importe a donar


¿Desea que su nombre sea mostrado como donante?
Si - Muestreme como Donante
No - Mis donaciones seran anonimas


Hacks : Un sistema que revoluciona la presentación de banners en Xoops
Enviado por Joni el 4/3/2008 12:10:00 (4699 Lecturas)

Traducción de la noticia sobre el hack publicada por su autor, Stefano Silvestrini (www.stefanosilvestrini.com)

He creado 2 funciones para colocar sus BANNERS allá donde quiera y elegir cuál de ellos se mostrará.


Es muy sencillo. Tiene 3 posibilidades para colocar sus BANNERS en bloques:
  1. Sin especificar banners: vista aleatoria de banners.
  2. Seleccionando banner: vista del banner especificado.
  3. Selección de cliente: vista de banners del cliente especificado.


Qué necesita para conseguirlo:

Por favor, vaya a su directorio_root/include/ y abra el archivo functions.php. (N. de T.: Recuerde, utilice un editor en modo texto plano)

Vaya al final del archivo functions.php y justo antes de la etiqueta  ?> inserte este código:



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;
}
}


GUARDELO y CIERRELO.

Cómo crear sus bloques de banners

Ahora puede crear sus bloques de banners de 3 maneras muy simples:

1ª Forma:
Coloque sus banners en sus bloques (no hay limitación para el número de bloques) allá donde quiera.
Los banners se mostrarán aleatoriamente.
Añada un nuevo bloque personalizado a su Xoops, en modo de bloque PHP, e inserte este código:


echo xoops_getbanner(); 

2ª Forma:
Coloque sus banners en sus bloques (no hay limitación para el número de bloques) allá donde quiera.
Los banners se mostrarán según ID_BANNER y, de esta manera, usted podrá seleccionar un banner especificado dentro de un bloque determinado, por ejemplo.
Añada un nuevo bloque personalizado a su Xoops, en modo de bloque PHP, e inserte este código:


echo getbanner_from_id_banner(ID_BANNER);

donde ID_BANNER = ID del BANNER que se MOSTRARÁ (puede comprobar el ID que corresponde a cada BANNER en la página de administración de banners -->  ID del Banner en 'Banners Actualmente Activos')
3ª Forma:
Coloque sus banners en sus bloques (no hay limitación para el número de bloques) allá donde quiera.
Los BANNERS se mostrarán según ID_CLIENT y, de esta manera, si un cliente tiene 10 banners, por ejemplo, se mostrará aleatoriamente un BANNER entre los que correspondean a ese cliente.
Añada un nuevo bloque personalizado a su Xoops, en modo de bloque PHP, e inserte este código:


echo getbanner_from_id_client(ID_CLIENT); 

donde ID_CLIENT = ID de un CLIENTE de BANNERS a MOSTRAR (puede comprobar ese ID en la página de administración de banners --> ID del Banner en Clientes)
Eso es todo.
Si le gusta mi trabajo, por favor, considere la posibilidad de hacer una pequeña donación para ayudarme en mis trabajos e investigaciones para Xoops. Gracias.


Traducción de la noticia sobre el hack publicada por su autor, Stefano Silvestrini (www.stefanosilvestrini.com)




Otras noticias
28/7/2010 18:16:43 - Package "Web Browsers" - Versión 0.8.4 es liberado
23/7/2010 15:10:00 - Package "Web Tools" - Version 0.7
12/7/2010 14:52:55 - Xoops 2.4.5 disponible
12/7/2010 14:50:10 - Xoops 2.4.5 en MiniServer
1/5/2010 20:10:00 - Xoops Ajax Chat

Los usuarios son responsables de sus propios comentarios.
Autor Hilo
riosoft
Enviado: 4/3/2008 20:46  Actualizado: 4/3/2008 20:46
Administrador
Conectado: 15/9/2003
Desde:
Envíos: 1406
 Re: Un sistema que revoluciona la presentación de banners...
Gracias Joni. Realmente bueno. Estoy seguro de que este código va a dar sus frutos en futuros "reusos".
joninzar
Enviado: 5/3/2008 0:58  Actualizado: 5/3/2008 0:59
Administrador
Conectado: 20/9/2006
Desde: Bilbao (Euskadi - España)
Envíos: 437
 Re: Un sistema que revoluciona la presentación de banners...
Bueno, se agredece, pero el mérito no es mío
Y la donación menos es para mí

El mérito es de Stefano que es el que se lo ha currado

Lo mío han sido dos correos y 30 minutos de traducción y edición. Seguro que a él le ha costado más...
DonCurioso
Enviado: 9/3/2008 21:46  Actualizado: 9/3/2008 21:46
Supremo
Conectado: 24/9/2007
Desde:
Envíos: 752
 Re: Un sistema que revoluciona la presentación de banners...
Pregunta millonaria:

Tengo más de un sitio... puedo reemplazar el mismo functions.php para todos o he de hacerlo uno a uno ?

Gracias.
joninzar
Enviado: 10/3/2008 15:39  Actualizado: 10/3/2008 15:39
Administrador
Conectado: 20/9/2006
Desde: Bilbao (Euskadi - España)
Envíos: 437
 Re: Un sistema que revoluciona la presentación de banners...
Pues no he probado, pero por lógica...

Tendrás que sustituir en cada sitio.
Ahora, otra posibilidad (que se me ocurre, no probado, pero debiera funcionar) sería crear otro php en uno de los sitios incluyendo ese hack.

Imagina que tienes 3 sitios:
http://misitio1.es/
http://misitio2.es/
http://misitio3.es/

Cada uno, lógicamente tiene su functions.php
En el misitio1 creas un php que contenga el código que dice para incluir en functions.php.

Le llamas hack_banners.php por ejemplo, le das permisos de lectura para otros y lo guardas en el sitio raíz de misitio1, con lo que la ruta del archivo es
http://misitio1.es/hack_banners.php

Ahora, en los distintos functions.php, incluyes entre el código la siguiente sentencia:
include_once ("http://misitio1.es/hack_banners.php");

Creo que eso debiera funcionar. Y por supuesto, creas los bloques que sean en cada sitio.
De todas formas, más cosas sobre esto, mejor que en comentarios, sería en el foro. Es más fácil de seguir.

Un saludo.
bprado
Enviado: 12/9/2008 6:23  Actualizado: 12/9/2008 6:23
Normal
Conectado: 4/8/2008
Desde:
Envíos: 86
 Re: Un sistema que revoluciona la presentación de banners...
Alguien sabe cuando se aplica este hack, como controlar el top banner que viene con xoops, los banners de este hacks los puedo controlar usando el client_id, asi se muestran solo los banners que estan bajo ese client_id, pero en el top banner me esta mostrando todos!

Se que una solucion es quitar el top banner, pero yo quiero usar ese top banner para mostrar publicidad.

Saludos
Powered by XOOPS 2001-2009 The XOOPS Project | Design by Wilden Powered by Xoops 2.2.6 Final  WAI Level-A Conformance  Valid XHTML 1.0 Transitional  CSS Vlido!  XHtml Logo  RSS 2.0