Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2003, 05:39
Avatar de touza
touza
 
Fecha de Ingreso: febrero-2003
Ubicación: barcelona
Mensajes: 65
Antigüedad: 21 años, 3 meses
Puntos: 0
Creación de un mod

Hola a todos. A ver si alguien sabe como hacer esto ( ya aviso que tiene tela, lo llevo preguntando en infinitos foros y nadie sabe ):

Yo tengo un foro hecho con phpbb 2.06, el attachment mod y el album_mod de smartor, últimas versiones, más el ezportal instalado también. La cosa es que me interesaría que al acceder a portal.php, que viene a ser la entrada a los foros, se vieran las últimas imágenes ( fotos, ya que en realidad el foro es de fotografía ) subidas por los usuarios en sus posts, dentro de los diferentes foros.

Sé que existe hace algún tiempo un mod que permite mostrar en portal.php la última o últimas fotos subidas a una galería pública en concreto, osea es un mod que básicamente sirve para mostrar las últimas imágenes subidas al album, pero yo quiero que se muestren las últimas imágenes subidas a cualquiera de los foros.

Esto que pido y que puede parecer tan raro es lo que hace el script "4images" por ejemplo, y para un foro de fotografía es muy útil, ya que permite que los usuarios reconozcan las fotos que no han visto antes en el momento de entrar a los foros y sin tener que recorrer éstos uno a uno.

La cosa es que me ha llevado tanto tiempo currarme el foro en phpbb que ahora no quiero pasarme al 4images, porque además perdería los comentarios ya hechos sobre las fotos, y porque quitando esta función por lo demás me gusta mi foro más que el de 4images, que en realidad es una galería.

De todos modos hice la prueba e instalé, en la misma base de datos donde tengo el phpbb, el 4images. Haciendo esto, y con un mod que hay, no pierdo los usuarios. Para que os hagais una idea de lo que quiero decir podéis ver ambos foros. El normal, currado por mí pero sin la posibilidad de ver las fotos recientes en el portal, está en :

http://www.jrey.net/foros/portal.php

El foro que me permite hacer esto que yo quiero pero que por lo demás, aunque está bien, no me acaba de convencer, está en esta dirección:

http://www.jrey.net/foro

Este script, el de 4images, lo utilizan en muchos foros de fotografía como en ojodigital.net . La cosa es que yo me he emperrado en usar el phpbb y hasta que no logre eso pues no me quedo tranquilo.

Y ahora van los datos para los más entendidos en esto, Yo creo que alguien que sepa de qué va el asunto sabría solucionarme el problema editando estas plantillas y páginas en php. Yo lo he intentado pero el resultado ha sido bastante lamentable.

A ver, en el mod que comentaba antes y que sirve para mostrar la última foto subida en la galería dentro del portal.php podemos encontrar esto:

Código a añadir en portal.php según este mod:



Código:

//
// Get Newest Pic
//
$Display = 'Recent';_ _// Replace 'Recent' with 'Random'
$CategoryID = 0;_ _// Replace 0 with a category ID. Otherwise, keep it as it is
_ _ _ _ _// Example: http://www.yourdomain.com/phpBB2/album_cat.php?cat_id=3
_ _ _ _ _// Category ID is 3

if ($Display == 'Random')
{
_ _if ($CategoryID != 0)
_ _{
_ _ _ $sql = "SELECT p.pic_id, p.pic_title, p.pic_username, p.pic_user_id, p.pic_time, p.pic_desc, p.pic_approval, u.username
_ _ _ _ _FROM ". ALBUM_TABLE ." AS p
_ _ _ _ _LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
_ _ _ _ _WHERE_ pic_approval = 1 AND pic_lock = 0 AND pic_cat_id = $CategoryID
_ _ _ _ _ORDER BY RAND()
_ _ _ _ _LIMIT 0,1";
_ _}
_ _else {
_ _ _ $sql = "SELECT p.pic_id, p.pic_title, p.pic_username, p.pic_user_id, p.pic_time, p.pic_desc, p.pic_lock, p.pic_approval, u.username
_ _ _ _ _FROM ". ALBUM_TABLE ." AS p
_ _ _ _ _LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
_ _ _ _ _WHERE_ pic_approval = 1 AND pic_lock = 0
_ _ _ _ _ORDER BY RAND()
_ _ _ _ _LIMIT 0,1";
_ _}
}

else if ($Display == 'Recent')
{
_ _if ($CategoryID != 0)
_ _{
_ _ _ $sql = "SELECT p.pic_id, p.pic_title, p.pic_username, p.pic_user_id, p.pic_time, p.pic_desc, p.pic_approval, u.username
_ _ _ _ _FROM ". ALBUM_TABLE ." AS p
_ _ _ _ _LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
_ _ _ _ _WHERE_ pic_approval = 1 AND pic_lock = 0 AND pic_cat_id = $CategoryID
_ _ _ _ _ORDER BY pic_time DESC
_ _ _ _ _LIMIT 0,1";
_ _}
_ _else
_ _{
_ _ _ $sql = "SELECT p.pic_id, p.pic_title, p.pic_username, p.pic_user_id, p.pic_time, p.pic_desc, p.pic_lock, p.pic_approval, u.username
_ _ _ _ _FROM ". ALBUM_TABLE ." AS p
_ _ _ _ _LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
_ _ _ _ _WHERE_ pic_approval = 1 AND pic_lock = 0
_ _ _ _ _ORDER BY pic_time DESC
_ _ _ _ _LIMIT 0,1";
_ _}
}

if (!$result = $db->sql_query($sql))
{
_ _message_die(GENERAL_ERROR, 'Could not query album information', '', __LINE__, __FILE__, $sql);
}

$picrow = $db->sql_fetchrow($result);

$pic_poster = '<a href="'. append_sid("profile.$phpEx?mode=viewprofile&". POST_USERS_URL .'='. $picrow['pic_user_id']) .'">'. $picrow['pic_username'] .'</a>';
//
// END: Get Newest Pic
//



y esto:



Código:

// Photo Album
_ _'L_NEWEST_PIC' => $lang['Newest_pic'],
_ _'PIC_IMAGE' => append_sid('album_thumbnail.'. $phpEx . '?id=' . $picrow['id']),
_ _'PIC_TITLE' => $picrow['title'],
_ _'PIC_POSTER' => $picrow['username'],
_ _'U_PIC_LINK' => append_sid('album_view.' . $phpEx . '?id=' . $picrow['id']),
_ _'PIC_TIME' => create_date($board_config['default_dateformat'], $picrow['timestamp'], $board_config['board_timezone']),



Vale, pues dentro de la página index.php del foro que tengo instalado con 4images vemos este código que supuestamente es lo que hace que se muestren las últimas imágenes subidas ( y que además funciona ) :



Código:

//-----------------------------------------------------
//--- Show New Images ---------------------------------
//-----------------------------------------------------
$imgtable_width = ceil(intval($config['image_table_width']) / $config['image_cells']);
if ((substr($config['image_table_width'], -1)) == "%") {
$imgtable_width .= "%";
}

$additional_sql = "";
if (!empty($additional_image_fields)) {
foreach ($additional_image_fields as $key => $val) {
$additional_sql .= ", i.".$key;
}
}

$num_new_images = $config['image_cells'];
$sql = "SELECT i.image_id, i.cat_id, i.user_id, i.image_name, i.image_description, i.image_keywords, i.image_date, i.image_active, i.image_media_file, i.image_thumb_file, i.image_download_url, i.image_allow_comments, i.image_comments, i.image_downloads, i.image_votes, i.image_rating, i.image_hits".$additional_sql.", c.cat_name".get_user_table_field(", u.", "user_name")."
FROM ".IMAGES_TABLE." i, ".CATEGORIES_TABLE." c
LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = i.user_id)
WHERE i.image_active = 1 AND c.cat_id = i.cat_id AND i.cat_id IN (".get_auth_cat_sql("auth_viewcat").")
ORDER BY i.image_date DESC
LIMIT $num_new_images";
$result = $site_db->query($sql);
$num_rows = $site_db->get_numrows($result);

if (!$num_rows) {
$new_images = "<table width=\"".$config['image_table_width']."\" border=\"0\" cellpadding=\"".$config['image_table_cellpadding']."\" cellspacing=\"".$config['image_table_cellspacing']."\"><tr class=\"imagerow1\"><td>";
$new_images .= $lang['no_new_images'];
$new_images .= "</td></tr></table>";
}
else {
$new_images = "<table width=\"".$config['image_table_width']."\" border=\"0\" cellpadding=\"".$config['image_table_cellpadding']."\" cellspacing=\"".$config['image_table_cellspacing']."\">";
$count = 0;
$bgcounter = 0;
while ($image_row = $site_db->fetch_array($result)){
if ($count == 0) {
$row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
$new_images .= "<tr class=\"imagerow".$row_bg_number."\">\n";
}
$new_images .= "<td width=\"".$imgtable_width."\" valign=\"top\">\n";

show_image($image_row);
$new_images .= $site_template->parse_template("thumbnail_bit");
$new_images .= "\n</td>\n";
$count++;
if ($count == $config['image_cells']) {
$new_images .= "</tr>\n";
$count = 0;
}
} // end while

if ($count > 0) {
$leftover = ($config['image_cells'] - $count);
if ($leftover >= 1) {
for ($f = 0; $f < $leftover; $f++) {
$new_images .= "<td width=\"".$imgtable_width."\">\n&\n</td>\n";
}
$new_images .= "</tr>\n";
}
}
$new_images .= "</table>\n";
} // end else

$site_template->register_vars("new_images", $new_images);
unset($new_images);


Me parece interesante comparar ambos códigos,aunque hay que tener en cuenta que, pese a estar ambos foros usando la misma base de datos, se han instalado con prefijos diferentes en la susodicha base de datos ( ya que sinó habría machacado un foro sobre otro ). Las tablas que usan ambos foros, además de usar prefijos diferentes, también se llaman de diferente modo, y eso también hay que tenerlo en cuenta. De hecho me ha llamado la atención que el foro de 4images apenas crea tablas en la base de datos, por lo menos comparado con las tropecientas que crea el foro de phpbb.

Bueno, por si sirve de algo aquí pongo un par de instantáneas de phpmyadmin con las tablas a las que "llama" uno y otro documento de .php respectivamente.

Estas son las tablas que me crea el 4images en la base de datos:




Y estas son las tablas, dentro de 4images_images, a las que supuestamente llama el index.php de este script:




Estas son las tablas a la que llama el código de portal.php al ponerle el mod ( osea lo que hay en phpbb_album)




Y estas son las tablas a las que creo que tendría que llamar yo para para que me mostrara el portal.php las últimas fotos subidas en los foros:




(El mensaje sigue abajo )
__________________
Mi web es http:www.jrey.net

Última edición por touza; 25/11/2003 a las 05:40