Author Topic: Créer une page remplis de vignette ?  (Read 8150 times)

0 Members and 1 Guest are viewing this topic.

Offline satine88

  • Sr. Member
  • ****
  • Posts: 265
    • View Profile
Créer une page remplis de vignette ?
« on: June 21, 2008, 01:48:31 PM »
Bonjour,
Est-ce que quelqu'un sais si c'est possible de créer une page un peu comme bestpictures mais qui donnerais une 15 de vignettes alétoires ?

Merci pour votre aide.

Offline nobby

  • 4images Guru
  • *******
  • Posts: 2.873
    • View Profile
Re: Créer une page remplis de vignette ?
« Reply #1 on: June 21, 2008, 07:57:20 PM »
Bonjour,

Je ne suis pas connu. Et je l'ai vu aussi.
   
nobby

Offline † manurom

  • Full Member
  • ***
  • Posts: 227
    • View Profile
    • manurom's 4images templates
Re: Créer une page remplis de vignette ?
« Reply #2 on: June 22, 2008, 01:17:06 AM »
Bonjour;
s'il s'agit de montrer 15 images aléatoires sur la page d'accueil de votre site, éditez le fichier "index.php", et trouvez ceci:
Code: [Select]
$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 NOT IN (".get_auth_cat_sql("auth_viewcat", "NOTIN").")
        ORDER BY i.image_date DESC
        LIMIT $num_new_images";

Changez-le par:
Code: [Select]
$num_new_images = 15;
$config['image_cells'] = 5 ;
$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 NOT IN (".get_auth_cat_sql("auth_viewcat", "NOTIN").")
        ORDER BY RAND()
        LIMIT $num_new_images";

C'est ce que j'applique sur mon site, avec satisfaction.
A votre disposition en cas de souci.

Amicalement.

Offline satine88

  • Sr. Member
  • ****
  • Posts: 265
    • View Profile
Re: Créer une page remplis de vignette ?
« Reply #3 on: June 23, 2008, 03:35:28 PM »
Bonjour,
Merci pour ta réponse :)

Je souhaiterai créer une page (une nouvelle page, exemple : promotion.html)

Dans cette nouvelle page il y aura 20 vignettes aléatoires du site.

Et je proposerai aux webmasters d'autres  sites de faire une include à la page promotion.html :)
L'atout pour eux : plus de contenus pour leurs sites
L'atout pour moi : de nouveaux visiteurs

Voilà, si tu n'as pas compris, n'hésite pas à me le dire (j'essayerai de détailler un peu plus).

Bonne journée.

Offline † manurom

  • Full Member
  • ***
  • Posts: 227
    • View Profile
    • manurom's 4images templates
Re: Créer une page remplis de vignette ?
« Reply #4 on: June 23, 2008, 05:25:48 PM »
Bonjour;
 :idea:ça y est! J'ai enfin compris! Il faudrait vraiment que je réactive mes neurones...

En fait, cela reviendrait à avoir la page d'accueil sur un sit externe, avec 20 images aléatoires (attention cependant à la surcharge du serveur).

J'avais déjà posté quelque chose dans le genre: Latest pictures on an external page.

En voici une adaptation pour le cas qui nous occupe:

3 nouveaux fichiers à créer:
  • new_images.php (à la racine de la galerie)
  • templates/votre_template/new_images.html
  • templates/votre_template/thumbnail_bit_extern.html

1 fichier à modifier:
  • includes/functions.php

On commence par créer le code du fichier "new_images.php", en recopiant une partie du fichier "index.php". Le code sera:
Code: [Select]
<?php
/**************************************************************************
 *                                                                        *
 *    4images - A Web Based Image Gallery Management System               *
 *    ----------------------------------------------------------------    *
 *                                                                        *
 *             File: new_images.php                                            *
 *        Copyright: (C) 2002 Jan Sorgalla                                *
 *            Email: jan@4homepages.de                                    *
 *              Web: http://www.4homepages.de                             *
 *    Scriptversion: 1.7.6                                                *
 *                                                                        *
 *    Never released without support from: Nicky (http://www.nicky.net)   *
 *                                                                        *
 **************************************************************************
 *                                                                        *
 *    Dieses Script ist KEINE Freeware. Bitte lesen Sie die Lizenz-       *
 *    bedingungen (Lizenz.txt) für weitere Informationen.                 *
 *    ---------------------------------------------------------------     *
 *    This script is NOT freeware! Please read the Copyright Notice       *
 *    (Licence.txt) for further information.                              *
 *                                                                        *
 *************************************************************************/

$templates_used 'new_images,thumbnail_bit_extern';
$main_template 'new_images';
define('ROOT_PATH''./');

define('GET_CACHES'1);
define('GET_USER_ONLINE'1);
include(
ROOT_PATH.'global.php');
require(
ROOT_PATH.'includes/sessions.php');
$user_access get_permission();

if (isset(
$HTTP_GET_VARS['template']) || isset($HTTP_POST_VARS['template'])) {
  
$template = (isset($HTTP_GET_VARS['template'])) ? get_basefile(stripslashes($HTTP_GET_VARS['template'])) : get_basefile(stripslashes($HTTP_POST_VARS['template']));
  if (!
file_exists(TEMPLATE_PATH."/".$template.".".$site_template->template_extension)) {
    
$template "";
  }
  else {
    
$main_template $template;
  }
}
else {
  
$template "";
}
include(
ROOT_PATH.'includes/page_header.php');

if (!empty(
$template)) {
  
$clickstream "<a href=\"".$site_sess->url(ROOT_PATH."index.php")."\">".$lang['home']."</a>".$config['category_separator'].str_replace("_"" "ucfirst($template));
  
$site_template->register_vars("clickstream"$clickstream);
  
$site_template->print_template($site_template->parse_template($main_template));
  include(
ROOT_PATH.'includes/page_footer.php');
}

$cache_id create_cache_id(
  
'page.index',
  array(
    
$user_info[$user_table_fields['user_id']],
    isset(
$user_info['lightbox_image_ids']) ? substr(md5($user_info['lightbox_image_ids']), 08) : 0,
    
$config['template_dir'],
    
$config['language_dir']
  )
);

if (!
$cache_page_index || !$content get_cache_file($cache_id)) {
// Always append session id if cache is enabled
if ($cache_page_index) {
  
$old_session_mode $site_sess->mode;
  
$site_sess->mode 'get';
}

ob_start();

//-----------------------------------------------------
//--- Show New Images ---------------------------------
//-----------------------------------------------------
$site_template->register_vars(array(
  
"has_rss"   => true,
  
"rss_title" => "RSS Feed: ".format_text($config['site_name'], 2)." (".str_replace(':'''$lang['new_images']).")",
  
"rss_url"   => $script_url."/rss.php?action=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 20;
$config['image_cells'] = 4;
$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 NOT IN ("
.get_auth_cat_sql("auth_viewcat""NOTIN").")
        ORDER BY RAND()
        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++ % == 0) ? 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_extern");
    
$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&nbsp;\n</td>\n";
      }
      
$new_images .= "</tr>\n";
    }
  }
  
$new_images .= "</table>\n";
// end else

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

//-----------------------------------------------------
//--- Print Out ---------------------------------------
//-----------------------------------------------------
$site_template->register_vars(array(
  
"msg" => $msg,
  
"clickstream" => $clickstream
));
$site_template->print_template($site_template->parse_template($main_template));

$content ob_get_contents();
ob_end_clean();

if (
$cache_page_index) {
  
// Reset session mode
  
$site_sess->mode $old_session_mode;

  
save_cache_file($cache_id$content);
}

// end if get_cache_file()

echo $content;

include(
ROOT_PATH.'includes/page_footer.php');
?>

Il nous faut après cela créer les deux fichiers HTML dans le dossier de notre template.

Code pour "templates/votre_template/new_images.html":
Code: [Select]
{header}
<table width="100%" border="0" cellpadding="0" cellspacing="0" >
  <tr>
    <td align="left" class="head1" valign="top">&nbsp;&nbsp;Recent Images from {site_name}</td>
  </tr>
  <tr>
    <td class="head1"><br />
      {new_images} <br /></td>
  </tr>
</table>
{footer}

Code pour "templates/votre_template/thumbnail_bit_extern.html":
Code: [Select]
<style type="text/css">
<!--
.pics {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
.new {
  font-family: Tahoma,Verdana,Arial,Helvetica,sans-serif;
  font-size: 9px;
  color: #FF0000;
}
-->
</style>

<div align="center">{thumbnail_extern_openwindow}<br />
  <span class="pics"><b>{image_name}</b> {if image_is_new}<sup class="new">{lang_new}</sup>{endif image_is_new} ({user_name_link})
  <br /></span></div>

Enfin, éditons le fichier "includes/functions.php". Trouver:
Code: [Select]
"thumbnail_openwindow" => get_thumbnail_code($image_row['image_media_file'], $image_row['image_thumb_file'], $image_row['image_id'], $image_row['cat_id'], $image_row['image_name'], $mode, $show_link, 1),
insérer juste après:
Code: [Select]
        "thumbnail_extern" => get_thumbnail_code($image_row['image_media_file'], $image_row['image_thumb_file'], $image_row['image_id'], $image_row['cat_id'], $image_row['image_name'], $mode, $show_link),
"thumbnail_extern_openwindow" => get_thumbnail_code($image_row['image_media_file'], $image_row['image_thumb_file'], $image_row['image_id'], $image_row['cat_id'], $image_row['image_name'], $mode, $show_link, 1),

Trouver ensuite:
Code: [Select]
  return $thumb;
}

et insérer juste après:
Code: [Select]
//--External thumbnails--------------------------------
function get_thumbnail_extern_code($media_file_name, $thumb_file_name = "", $image_id, $cat_id, $image_name = "", $mode = "", $show_link = 1, $open_window = 1) {
  global $site_sess, $config;

  if (!check_media_type($media_file_name)) {
    $thumb = "<img src=\"".ICON_PATH."/404.gif\" border=\"0\" alt=\"\" />";
  }
  else {
    if (!get_file_path($thumb_file_name, "thumb", $cat_id, 0, 0)) {
      $file_src = ICON_PATH."/".get_file_extension($media_file_name).".gif";
      $image_info = @getimagesize($file_src);
      $width_height = (!empty($image_info[3])) ? " ".$image_info[3] : "";
      $thumb = "<img src=\"".$file_src."\" border=\"0\"".$width_height." alt=\"".$image_name."\" />";
    }
    else {
      $file_src = get_file_path($thumb_file_name, "thumb", $cat_id, 0, 1);
      $image_info = @getimagesize($file_src);
      $width_height = (!empty($image_info[3])) ? " ".$image_info[3] : "";
      $thumb = "<img src=\"".$file_src."\" border=\"".$config['image_border']."\"".$width_height." alt=\"".$image_name."\" />";
    }
  }

  if ($show_link) {
    if ($open_window) {
      $thumb = "<a href=\"".$site_sess->url(ROOT_PATH."details.php?".URL_IMAGE_ID."=".$image_id.((!empty($mode)) ? "&amp;mode=".$mode : ""))."\" onclick=\"opendetailwindow()\" target=\"detailwindow\">".$thumb."</a>";
    }
    else {
      $thumb = "<a href=\"".$site_sess->url(ROOT_PATH."details.php?".URL_IMAGE_ID."=".$image_id.((!empty($mode)) ? "&amp;mode=".$mode : ""))."\">".$thumb."</a>";
    }
  }
  return $thumb;
}

//--End external thumbnails----------------------------



Les sites externes désirant afficher la page avec les 20 vignettes aléatoires du site devront inclure dans leur code un de ces deux liens:
PHP:
Quote
<?php include ('http://chemin_vers_votre_galerie/new_images.php') ?>

ou HTML:
Quote
<iframe src="http://chemin_vers_votre_galerie/new_images.php" width="500" height="300" scrolling="no" frameborder="0" name="new_images" align="center"></iframe>
(Les valeurs  largeur 500 et hauteur 300 sont là à titre d'exemple. Il suffit de les adapter à sa guise, suivant la disposition de la page hôte.)

Voilà. Je crois bien n'avoir rien oublié, sinon, je m'en voudrais vraiment.
Le seul problème que j'envisage, c'est si vous avez un template particulier, par exemple avec un header ou un footer contenant des images ou scripts.
Si le problème se présente, on aura toujours le loisir de modifier le code HTML des nouveaux fichiers de template, tout en respectant le copyright 4images.