4images Modifications / Modifikationen > Mods & Plugins (Releases & Support)

[MOD]More Pictures on Detail Page

(1/32) > >>

Rembrandt:
Hi!

Mit Dieser Modifikation ist es möglich mehrere Bilder gleichzeitig auf der Detail Seite darzustellen.

Beliebig viele Bilder können zu einer Gruppe zusammengefasst werden und auf der Detail Seite dargestellt werden.

Von der Gruppe kann eines oder beliebig viele Bilder auf der Kategorie Seite angezeigt werden.

Mit der Modifikation von @mawenzi:
 http://www.4homepages.de/forum/index.php?topic=25017.msg137021#msg137021
 ist es möglich die größe der Gruppen Bilder individuell anzupassen.
 
 
Demo More Pictures on Detail Pages

neu punkt 11.) Admin Plugin CODE UPDATE 11.04.2011

neu Member Addon CODE UPDATE 13.04.2011  Step  3.2) 4.) 6.)

Neu im code punkt 4.) könnt ihr einstellen wieviele Bilder in einer Reihe dargestellt werden sollen.
für eine Vertikale anzeige schreibt im Code ganz oben eine "1" hinnein.


1.) müßen 2 zusätzliche Datenbank Felder angelegt werden.
dazu könnt ihr euch das Plugin aus dem Anhang runterladen (install_group_images.zip), in eure Root Ordner hochladen und ausführen.

2.) sucht in der includes/db_definitions.php:

?>

und fügt davor ein:

//2######################################## Start MOD: More Pictures on Detail Page #################################################
$additional_image_fields['image_group_image'] = array($lang['image_group_image'], "text", 0);
$additional_image_fields['image_group'] = array($lang['image_group'], "text", 0);
//######################################## End MOD: More Pictures on Detail Page #################################################


3.)sucht in der lang/deutsch/main.php

$lang['allow_comments'] = "Kommentare erlauben:";

und fügt danach ein:

//3######################################## Start MOD: More Pictures on Detail Page #################################################
$lang['image_group'] = "Bild Gruppe:";
$lang['image_group_image'] = "Gruppen Bild:";
//######################################## End MOD: More Pictures on Detail Page #################################################


4.)sucht in der details.php

include(ROOT_PATH.'includes/page_header.php');

und fügt danach ein:

//4######################################## Start MOD: More Pictures on Detail Page #################################################
$image_cells = 6; // Anzahl der Bilder in einer Reihe
$sql = "SELECT  image_id,image_group 
FROM ".IMAGES_TABLE." 
WHERE image_id = '$image_id' ";
$result = $site_db->query($sql); 
$row = mysql_fetch_object($result);
  $image_group = $row->image_group;

if($image_group >= 1){
$sql = "SELECT image_id, cat_id, image_name, image_active, image_media_file, image_thumb_file, image_group
                FROM ".IMAGES_TABLE."
WHERE image_group = '$image_group' ";
$result = $site_db->query($sql);
$num_rows = $site_db->get_numrows($result);

//echo " Group ";
//echo $image_group;
  $thumbnails = "<table style=\"border:1px solid #cccccc; \">\n";

  $count = 0;
  $bgcounter = 0;
  while ($image_row = $site_db->fetch_array($result)){
if ($count == 0) { 
      $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
      $thumbnails .= "<tr style=\"margin:0px;\" >\n";
}
$thumbnails .= "<td  style=\"padding:10px 10px;\">\n";
show_image($image_row);
$thumbnails .= $site_template->parse_template("group_thumbnail_bit");
$thumbnails .= "\n</td>\n";
$count++;
    if ($count == $image_cells) {
      $thumbnails .= "</tr>\n";
      $count = 0;
}

if ($count > 0)  {
    $leftover = ($image_cells - $count);
    if ($leftover >= 1) {
      for ($f = 0; $f < $leftover; $f++) {
        $thumbnails .= "<td >\n&nbsp;\n</td>\n";
      }
      $thumbnails .= "</tr>\n";
    }
  }
  $thumbnails .= "</table>\n";

  $site_template->register_vars("group_preview", $thumbnails);
}
unset($thumbnails);

//######################################## End MOD: More Pictures on Detail Page #################################################


5.) suche in der categories.php:

include(ROOT_PATH.'includes/paging.php');

füge darüber ein:

//5######################################## Start MOD: More Pictures on Detail Page #################################################
  $sql = "SELECT COUNT('image_group') AS sum
             FROM ".IMAGES_TABLE."
             WHERE cat_id = '$cat_id' AND image_group_image <= 'image_group' AND image_group != 0";
 $row = $site_db->query_firstrow($sql);
 $num_rows_all = $num_rows_all - $row['sum']; 
//######################################## End MOD: More Pictures on Detail Page #################################################


6.) suche in der categories.php

$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 i.cat_id = $cat_id AND c.cat_id = i.cat_id
        ORDER BY ".$config['image_order']." ".$config['image_sort'].", i.image_id ".$config['image_sort']."
        LIMIT $offset, $perpage ";

und ersetze es mit:

$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,i.image_group,i.image_group_image".$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 i.cat_id = $cat_id AND c.cat_id = i.cat_id  AND NOT i.image_group <> i.image_group_image 
        ORDER BY ".$config['image_order']." ".$config['image_sort'].", i.image_id ".$config['image_sort']."
        LIMIT $offset, $perpage ";


schritt 7.) und 8.) sind optional wenn in der thumbnail vorschau, die gesamt anzahl der vorhandenen bilder angezeigt werden sollen.

7.) suche in der categories.php und search.php
$thumbnails .= "<tr class=\"imagerow".$row_bg_number."\">\n";
    }

und füge darunter ein:

//7######################################## Start MOD: More Pictures on Detail Page #################################################
   if ($image_row['image_group'] > 0 ){
        $sum_image_group = $image_row['image_group'];
$sql = "SELECT COUNT('image_group') AS sum
FROM ".IMAGES_TABLE."
WHERE  image_group = $sum_image_group";
$row = $site_db->query_firstrow($sql);

$sum_image_group = "<span style=\"color:red\">Gesamt:".$row['sum']." Bild(er) in Gruppe: ".$image_row['image_group']."</span>"."<br>";
}
               else{
                 $sum_image_group = "";
               } 
       $site_template->register_vars("sum_image_group", $sum_image_group);
//######################################## End MOD: More Pictures on Detail Page #################################################


8.) suche in templates/yourTemplates thumbnail_bit.html:

--- Code: ---<a href="{cat_url}">{cat_name}{num_images}</a><br>

--- End code ---
und füge darunter ein:

--- Code: ---{sum_image_group}<br>

--- End code ---


9.) Der folgende Schritt ist nur ein Vorschlag, einfügen könnt ihr {group_preview} natürlich wo ihr wollt.
suche in der details.html

--- Code: ---<div >
{image}
{if admin_links}<br />
                    {admin_links}<br />
                    {endif admin_links}<br />
                    {lightbox_button}&nbsp;&nbsp;{postcard_button}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{download_button}&nbsp;&nbsp;{download_zip_button}
</div>
<br />

--- End code ---
und ersetze es mit:

--- Code: ---<div style="float:left;">
{image}
{if admin_links}<br />
                    {admin_links}<br />
                    {endif admin_links}<br />
                    {lightbox_button}&nbsp;&nbsp;{postcard_button}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{download_button}&nbsp;&nbsp;{download_zip_button}
</div>
<div style="float:right;">
{group_preview}
</div>
                  <br style="clear:both;"/>

--- End code ---

10.)Erstellt eine neue Datei mit dem Namen "group_thumbnail_bit.html"  und speichert sie in euren templates ordner mit folgenden Inhalt ab:

--- Code: ---{thumbnail}<br />
--- End code ---

11.) Admin Plugin Neu
 Ladet euch die Datei "image_group.php" aus dem Anhang herrunter und speichert sie unter admin/plugins ab.
 Im ACP unter Plugins könnt ihr jetzt die Bild Gruppen editieren.


Optional: Member Addon

1.) müßen 2 zusätzliche Datenbank Felder angelegt werden.
dazu könnt ihr euch das Plugin aus dem Anhang runterladen (install_group_images_member.zip), in eure Root Ordner hochladen und ausführen.

2.) suche includes/db_field_definitions.php und füge ein:

$additional_user_fields['user_group'] = array($lang['user_group'], "text", 0);
$additional_user_fields['user_per_group'] = array($lang['user_per_group'], "text", 0); 



3.) suche in root/member.php im Abschnitt: "if ($action == "updateimage")"

$sql = "SELECT image_id, cat_id, user_id, image_name

und ersetzte es mit:

//3######################################## Start [MOD] More Pictures on Detail Page ###############################################
// $sql = "SELECT image_id, cat_id, user_id, image_name
//######################################## End [MOD] More Pictures on Detail Page #################################################
  $sql = "SELECT image_id, cat_id, user_id, image_name, image_group, image_group_image


3.1)suche:

if (isset($HTTP_POST_VARS['image_allow_comments']))

füge darüber ein:

//3.1######################################## Start [MOD] More Pictures on Detail Page ###############################################
  $count_group_image = ($image_row['image_group'] != 0) ? $image_row['image_group'] : $HTTP_POST_VARS['image_group'];
  $sql = "SELECT COUNT('image_group_image') AS count_group_image
          FROM ".IMAGES_TABLE."
          WHERE image_group = $count_group_image AND image_group_image > 0
        ";
        $row_count_group_image = $site_db->query_firstrow($sql);
//######################################## End [MOD] More Pictures on Detail Page #################################################


3.2)suche 9 zeilen darunter:

$additional_sql .= ", $key = '".un_htmlspecialchars(trim($HTTP_POST_VARS[$key]))."'";

füge darunter ein:

//3.2######################################## Start [MOD] More Pictures on Detail Page ###############################################
        if($HTTP_POST_VARS['image_group_image'] >= 1 && $HTTP_POST_VARS['image_group'] == 0){
          $additional_sql .= ", image_group_image = '0'";
        }
        if($HTTP_POST_VARS['image_group'] != 0 && $HTTP_POST_VARS['image_group_image'] == 0){
          if(($row_count_group_image['count_group_image']) < 1 ){
            $additional_sql .= ", image_group = '".$HTTP_POST_VARS['image_group']."'";
            $additional_sql .= ", image_group_image = '".$HTTP_POST_VARS['image_group']."'";
          } 
          else{
            $additional_sql .= ", image_group = '".$HTTP_POST_VARS['image_group']."'";
            $additional_sql .= ", image_group_image = '".$HTTP_POST_VARS['image_group_image']."'";
          } 
        } 
//######################################## End [MOD] More Pictures on Detail Page #################################################


4.) suche in root/member.php im Abschnitt: "if ($action == "editimage")"

$txt_clickstream .= $lang['image_edit'];

füge darunter ein:

//4######################################## Start [MOD] More Pictures on Detail Page #############################################
  if ($user_info['user_group'] == 0 && $user_info['user_level'] != ADMIN) {
    $image_group = "<select class=\"input\" name='image_group'><option value=''disabled=\"disabled\">".$lang['temporarily']."</option></select>\n";
    $image_group_image_no = 1;
  }
  else{
    $count = 0;
    $image_group = "<select class=\"input\" name='image_group' >\n";

  If($image_row['image_group'] == 0 ){
     $image_group .= "<option value='".$image_row['image_group']."'>".$lang['no_group']."</option>\n";
  }
  else{
     $image_group .= "<option value='".$image_row['image_group']."'>".$lang['group']."".$image_row['image_group']."</option>\n";
     $image_group .= "<option value='0'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$lang['remove_group']."".$image_row['image_group']."</option>\n";
  }

    $sql = "SELECT DISTINCT(image_group), user_id
            FROM ".IMAGES_TABLE."
            WHERE user_id = ".$user_info['user_id']." AND image_group >0
            ORDER BY image_group ASC
           ";
           $row = $site_db->query_firstrow($sql);

     $image_group .= (isset($row['image_group'])) ? "<optgroup label= \"".$lang['already']."\">" : "" ;

     $result = $site_db->query($sql);
  while($image_group_row = $site_db->fetch_array($result)){
    if ($image_group_row['image_group'] > 0 ){

      $sql = "SELECT COUNT('image_group') AS count_group
              FROM ".IMAGES_TABLE."
              WHERE  image_group = ".$image_group_row['image_group']."
             ";
      $row = $site_db->query_firstrow($sql);
    }
    if($row['count_group'] < $user_info['user_per_group']){
      $image_group .= "<option value='".$image_group_row['image_group']."'>".$lang['group']."".$image_group_row['image_group']." &nbsp;&nbsp;".$lang['image']."".$row['count_group']."</option>\n";
    }
    else{
      $image_group .= "<option value='".$image_row['image_group']."' disabled=\"disabled\">".$lang['group']."".$image_group_row['image_group']."&nbsp;&nbsp;".$lang['max_obtained']."</option>\n";
    }

    $count++;
  } //while
    $image_group .= (isset($row['image_group'])) ? "</optgroup>\n" : "" ;

  if ($count < $user_info['user_group']){

    $sql = "SELECT DISTINCT(image_group)
            FROM ".IMAGES_TABLE."
            ORDER BY image_group ASC
           ";
    $result = $site_db->query($sql);

    $gesamt= 0;
    while($min_group_row = $site_db->fetch_array($result)){

      $min_group[] = $min_group_row['image_group'];
      $gesamt++;
    }
      $image_group .= "<optgroup label= \"".$lang['new_group']."\">\n";

    $zahl =0;
    foreach($min_group as $group_key => $group_value){
      if($group_key != $group_value){
        $image_group .= "<option value= '".$group_key."'>".$lang['group']."".$group_key."</option>\n";

         $zahl++; //test
         if($zahl == 1){
           break;
        }
      }
    }

    if($group_key == $group_value){
      $image_group .= "<option value= '".$gesamt."'>".$lang['group']."".$gesamt."</option>\n";
    }
  }
    $image_group .= "</optgroup>\n";
    $image_group .= "</select>\n";
    $image_group_image_yes = (isset($HTTP_POST_VARS['image_group_image'])) ? intval($HTTP_POST_VARS['image_group_image']) : $image_row['image_group_image'];
}
  $site_template->register_vars(array(
    "image_group" => $group_key,
    "lang_max_obtained" => $lang['max_obtained'],
    "lang_image" => $lang['image'],
    "lang_already" => $lang['already'],
    "lang_remove_group" => $lang['remove_group'],
    "lang_new_group" => $lang['new_group'],
    "lang_group" => $lang['group'],
    "lang_no_group" => $lang['no_group'],
    "lang_temporarily" => $lang['temporarily'],
    "image_group_image_no" => ($image_group_image_no == 1) ? " disabled=\"disabled\"" : "",
    "image_group_image_yes" => ($image_group_image_yes > 0) ? " checked=\"checked\"" : "",
    "member_image_group" => $image_group,
  ));
//######################################## END [MOD] More Pictures on Detail Page #################################################


5.) suche in lang/deutsch main.php:

$lang['allow_comments'] = "Kommentare erlauben:";

füge darunter ein:

//5######################################## Start [MOD] More Pictures on Detail Page ###############################################
$lang['max_obtained'] = "   Max. Bildanzahl erreicht !";
$lang['image'] = "Bilder: ";
$lang['already'] = "Bereits vorhanden: ";
$lang['remove_group'] = "Entfernen aus Gruppe: ";
$lang['new_group'] = "Neue Gruppe: ";
$lang['group'] = "Gruppe: ";
$lang['no_group'] = "Keine Gruppe";
$lang['temporarily'] = "Zur Zeit nicht Verfügbar !";
$lang['image_group'] = "Bild Gruppe:";
$lang['image_group_image'] = "Gruppen Bild:";
$lang['user_group'] = "Wieviele Bild Gruppen Max.:";
$lang['user_per_group'] = "Wieviele Bilder pro Gruppe:";
//######################################## End [MOD] More Pictures on Detail Page #################################################

optional: lang/english main.php:

//5######################################## Start [MOD] More Pictures on Detail Page ###############################################
$lang['max_obtained'] = "Max.Number of Images Obtained !";
$lang['image'] = "Image: ";
$lang['already'] = "Already Available: ";
$lang['remove_group'] = "Remove from Group: ";
$lang['new_group'] = "New Group: ";
$lang['group'] = "Group: ";
$lang['no_group'] = "No Group";
$lang['temporarily'] = "Temporarily not Available !";
$lang['image_group'] = "Image Group: ";
$lang['image_group_image'] = "Group Image: ";
$lang['user_group'] = "How many Group max.: ";
$lang['user_per_group'] = "How many Images per Group: "; 
//######################################## End [MOD] More Pictures on Detail Page #################################################


6.) suche in templates/yourTemplates member_editimages.html:

--- Code: ---<tr>
  <td class="row2"><b>{lang_image_name}</b></td>
  <td class="row2">
     <input type="text" name="image_name"  size="30" value="{image_name}" class="input" />
  </td>
</tr>

--- End code ---
füge darunter ein:

--- Code: ---<tr>
 <td class="row1"><b>{lang_image_group}</b></td>
  <td class="row1">
  {member_image_group}
  </td>
</tr>
<tr>
 <td class="row2"><b>{lang_image_group_image}</b></td>
  <td class="row2">
  <input type="checkbox" name="image_group_image" value="{image_group}" {image_group_image_yes}{image_group_image_no}>
  {lang_yes}
 </td>
</tr>

--- End code ---

Im ACP unter User Verwalten edit/user, könnt ihr einstellen wieviele Gruppen und wieviele Bilder in der Gruppen ein User anlegen darf.



mfg Andi

79

mawenzi:
Hallo Andi,

... deine Version gefällt mir sehr gut ... !
... verschoben nach "Mods & Plugins (Releases & Support)" ...
... auf die Anfrage von Kubiczek hin hatte ich mir auch schon mal einige Gedanken gemacht, zumal es nicht die erste dieser Art war ...
... eine Vorversion meiner Variante kannst du dir hier ansehen ...
... das Ergebnis sieht ähnlich deinem aus, ich habe meinen Lösungsansatz aber über die "Kategorie" gewählt ...
... aber ... du warst eben fixer ... ;)

Rembrandt:
Hi!

--- Quote from: mawenzi on July 12, 2009, 01:19:54 PM ---... das Ergebnis sieht ähnlich deinem aus, ich habe meinen Lösungsansatz aber über die "Kategorie" gewählt ...
....
--- End quote ---
ja diverse anfragen gibt es schon seit ein par jahren, es ist halt immer schwer etwas zu machen ohne das es einen selber interessiert.  :)

das meiste kopfzerbrechen machte mir wie ich die SQL abfrage mache soll, erster ansatz war, nur ein neues feld erzeugen,
nur wäre die eingabe zur gruppierung und bestimmung des Gruppenhauptbildes zu kompliziert gewesen.
aber so denke ich ist es recht einfach auch bestehende bildbestände zu gruppieren.

im nachhinnein gesehen ist es ein relativ simpler einfach zu implementierender code.

..und jetzt werd ich mir mal deinen second thumbnailsize mod ansehn, ich denke die beiden werden sich sehr gut ergänzen.

mfg Andi


Sebas Bonito:

--- Quote from: Rembrandt on July 11, 2009, 11:28:14 PM ---Im Feld "Bild Gruppe" vergebt ihr allen Bilder die in einer Gruppe zusammengefasst werden sollen die gleiche Nummer,
egal welche.
Im Feld "Gruppen Bild" gebt ihr dem Bild das Stellvertretend für die Gruppe in der Kategorie angezeigt werden soll,
die gleiche Nummer wie in "Bild Gruppe", auch da könnt ihr natürlich mehrere Bilder auswählen.

--- End quote ---

Bei mir stehen diese 2 nicht...  :|

Rembrandt:
Hi!

--- Quote from: Schnick und Schnack on July 12, 2009, 07:17:41 PM ---...
Bei mir stehen diese 2 nicht...  :|

--- End quote ---
sorry also einfacher gehts doch wirklich nicht mehr.
 wenn die felder bei dir nicht drinnenstehn, dann wirst du wahrscheinlich punkt 2.) vergessen haben.

mfg Andi

Navigation

[0] Message Index

[#] Next page

Go to full version