Differences

This shows you the differences between two versions of the page.

deutsch:ersetzer_rts:frontend_render:random-image-from-folder [2010/12/08 16:51]
Knut Heermann (flip-flop)
deutsch:ersetzer_rts:frontend_render:random-image-from-folder [2018/06/03 18:09] (current)
Line 3: Line 3:
====== Random Image aus Verzeichnis ====== ====== Random Image aus Verzeichnis ======
-FIXME TRANSLATE  
> Ich verwende Zufallshintergrundbilder auf vielen meiner Seiten. > Ich verwende Zufallshintergrundbilder auf vielen meiner Seiten.
-> Es ist recht einfach, wenn Bilder während die Einrichtung der Website definiert und aufgenommen werden aber danach nie geändert werden, weil der Benutzer nicht weiß, wie man sie ändern.+> Es ist recht einfach Bilder während die Einrichtung der Website zu definieren und aufzunehmen. Diese Bilder werden aber danach nie geändert werden, weil der Benutzer nicht weiß wie man sie ändern.
> >
> Bei allen Lösungen die ich bisher gesehen habe werden die Bilder  in einen separaten Ordner auf dem Server abgelegt und dann mit PHP-Replacern abgeholt. > Bei allen Lösungen die ich bisher gesehen habe werden die Bilder  in einen separaten Ordner auf dem Server abgelegt und dann mit PHP-Replacern abgeholt.
> Aber die meisten meiner Nutzer wollen nicht einmal wissen, was FTP ist - so dass ich nach einer anderen Lösung suchte. > Aber die meisten meiner Nutzer wollen nicht einmal wissen, was FTP ist - so dass ich nach einer anderen Lösung suchte.
> Wäre es nicht schön, wenn der Benutzer seine Bilder in der Dateizentrale hochladen und die Bilder dann von dort aus als Hintergrundbilder einfügen könnte? > Wäre es nicht schön, wenn der Benutzer seine Bilder in der Dateizentrale hochladen und die Bilder dann von dort aus als Hintergrundbilder einfügen könnte?
 +>
> Die Hintergrundbilder werden nicht auf den body-Tag im Layout gesetzt sondern frei mit HTML-Tags und/oder CSS-Klassen. > Die Hintergrundbilder werden nicht auf den body-Tag im Layout gesetzt sondern frei mit HTML-Tags und/oder CSS-Klassen.
> Manchmal erfordern verschiedene Abschnitte einer Website unterschiedliche Hintergründe, so wollte ich auch in diesem Bereich Flexibilität. > Manchmal erfordern verschiedene Abschnitte einer Website unterschiedliche Hintergründe, so wollte ich auch in diesem Bereich Flexibilität.
Line 27: Line 26:
**Forum:** [[http://forum.phpwcms.org/viewtopic.php?p=123473#p123473|[Css trick] Random background image]] **Forum:** [[http://forum.phpwcms.org/viewtopic.php?p=123473#p123473|[Css trick] Random background image]]
-**Autor:** P. Bracher //(breitsch)// [[http://www.webrealisierung.ch|Webrealisierung GmbH]] | The incredible module page: [[http://web.casa-loca.com/index.php?googlemaps|phpwcms module]]  \\+**Autor:** P. Bracher //(breitsch)// [[http://www.webrealisierung.ch|Webrealisierung GmbH]]  \\
**Version:**  V1.0 22.03.10 **Version:**  V1.0 22.03.10
Line 42: Line 41:
\\ \\
-===== Beispiel: =====+===== Beispiele =====
   
-- ##{RAND_IMG_FROM_FOLDER:ID of PHPWCMS Folder::}## \\ -- ##{RAND_IMG_FROM_FOLDER:ID of PHPWCMS Folder::}## \\
Line 92: Line 91:
\\ \\
 +
 +-- ##{RAND_N_IMG_FROM_FOLDER:ID of PHPWCMS Folder:Number of Files:Lightbox WxHxCROPxQUALITY:WxHxCROPxQUALITY Alt Text}## \\
 +-> **{RAND_N_IMG_FROM_FOLDER:23:5:800x800x0x100:x125 My Image}**
 +
 += erzeugt 5 Bilder, aus dem Verzeichnis in der Dateizentrale mit der ID=23, \\
 += Bilder skaliert auf Höhe = 125px, mit dem alt-Text "My Image" \\
 += Lightbox mit max. Höhe bzw. Breite von 800px (vgl. Bedingung Lightbox) \\
==== Finden der Verzeichnis-ID ==== ==== Finden der Verzeichnis-ID ====
Line 105: Line 111:
\\ \\
-===== Code: =====+===== Code =====
Line 253: Line 259:
\\ \\
 +===== Mehrere Bilder =====
 +Benötigt man mehr als ein zufälliges Bild aus dem Verzeichnis, kann es bei mehrfachem Verwenden von RAND_IMG_FROM_FOLDER vorkommen, dass Bilder mehrfach gezeigt werden. Abhilfe schafft hier das modifizierte RAND_N_IMG_FROM_FOLDER:
 +
 +{RAND_N_IMG_FROM_FOLDER:<<folder id>>:<<number of images>>:<<lightbox size params>>:<<WxHxCROPxQUALITY ALT-Text>>}
 +
 +Dabei ist
 +
 +  * <<folder id>> = ID des Dateiordners aus der Dateizentrale.
 +  * <<number of images>> = Anzahl der ausgewählten Zufallsbilder (Falls weniger Bilder im Ordner sind, werden weniger Bilder ausgegeben)
 +  * <<lightbox size params>> = WxHxCROPxQUALITY für die Lightbox. Falls leer, wird keine Lightbox erzeugt
 +  * <<WxHxCROPxQUALITY ALT-Text>> = Größe und Alt-Text der Bilder
 +
 +=== Code ===
 +- entwickelt und getestet auf phpwcms 1.5.3 (2012/04/26, r471)
 +
 +**Ort:** /template/inc_script/frontend_render/random_multi_images_from_folder.php
 +
 +<code php |h {RAND_N_IMG_FROM_FOLDER:ID:number ...}|h >
 +    <?php
 +    /* ===========================================================================================
 +       get a number of random images from a folder V1.0  01.06.2012 thoblerone
 +       ===========================================================================================
 +       basiert auf
 +       random image from folder V1.0  22.03.10  breitsch http://www.webrealisierung.ch
 +       -> {RAND_IMG_FROM_FOLDER:ID of PHPWCMS Folder:CSS_CLASS or HTML tag:WxHxCROPxQUALITY ALT-Text}
 +       The original script in /include/inc_front/ext.func.inc.php  programmed by (c) Oliver Georgi
 +       22.03.10  patched and swaped out to /frontend_render/* by breitsch partially copied from
 +       imgx V1.0  03.01.09 by K.Heermann (flip-flop)
 +
 +       Tag:
 +       {RAND_N_IMG_FROM_FOLDER:<<folder id>>:<<number of images>>:<<lightbox size params>>:<<WxHxCROPxQUALITY ALT-Text>>}
 +
 +       folder ID                 = the ID number of the Folder in the phpwcms file browser - required
 +       number of images          = the number of images to create. Will create max. the number of files in specified folder
 +       lightbox size params      = Dimensions, cropping and render quality for lightbox image style is WxHxCROPxQUALITY
 +                                   lightbox popup relies on lightbox script and css include somewhere on your webpage.
 +                            <!-- CSS: template/lib/slimbox/slimbox.css -->
 +                            <!-- JS: template/lib/slimbox/slimbox.mootools-1.3.js -->
 +                                   leave lightbox size params empty for no lightbox  
 +       WxHxCROPxQUALITY ALT-Text = Dimensions and alt text of the image (alt text only when not used as background image)
 +                                   if empty and css background image it takes the original dimensions of the image
 +                                   if empty and not css background image it takes the preview dimensions for the images
 +
 +    ============================================================================================= */
 +
 +    // ----------------------------------------------------------------
 +    // obligate check for phpwcms constants
 +    if (!defined('PHPWCMS_ROOT')) {
 +       die("You Cannot Access This Script Directly, Have a Nice Day."); }
 +    // ----------------------------------------------------------------
 +
 +    if( strpos($content['all'], '{RAND_N_IMG_FROM_FOLDER:') !== FALSE ) {
 +
 +    function parse_nimagesfromfolder($matches) {
 +    // $matches[0] = complete RT
 +    // $matches[1] = ID of Folder
 +    // $matches[2] = number of images (leave empty for 1 image)
 +    // $matches[3] = leave empty = no lightbox , else Lightbox cmsimage.php Parameters (WxHxCROPxQUALITY e.g. 800x800x0x100)
 +    // $matches[4] = WxHxCROPxQUALITY ALT-Text
 +
 +
 +       $nImages = 1;
 +        if (isset ($matches[2]) && $matches[2] !== "") {
 +          $nImages = $matches[2];
 +       }
 +
 +
 +      
 +       if(isset($matches[1])) {
 +
 +          // Folder ID
 +          $folder_id    = intval($matches[1]);
 +
 +          // check for Alt-Text
 +          $alt      = explode(' ', $matches[4], 2);       // WxHxCROPxQUALITY ALT-Text
 +          // $alt[0] = WxHxCROPxQUALITY
 +          // $alt[1] = ALT-Text
 +
 +      
 +          $value    = explode('x', trim(strtolower($alt[0])));
 +          $alttext  = isset($alt[1])    ? trim($alt[1]) : '';
 +
 +          $alt      = isset($alt[0]) ? html_specialchars(trim($alt[0])) : ''; // WxHxCROPxQUALITY
 +
 +          $width    = isset($value[ 0 ])  ? intval($value[ 0 ]) : 0;
 +          $height   = isset($value[ 1 ])  ? intval($value[ 1 ]) : 0;
 +          $crop     = isset($value[ 2 ]) && intval($value[ 2 ]) === 1 ? 1 : 0;
 +          $quality  = isset($value[ 3 ])  ? intval($value[ 3 ]) : 0;
 +
 +          $sql = 'SELECT * FROM '.DB_PREPEND.'phpwcms_file WHERE f_aktiv=1 AND f_public=1 AND f_trash=0 AND f_pid='.$folder_id.' AND f_ext IN ("jpg", "png", "gif")';
 +            $result = mysql_query($sql);
 +            $i=0;
 +            while($folderfile = mysql_fetch_array($result)) {
 +              $folderfiles[$i] = $folderfile;
 +              $i++;
 +            }
 +          
 +          /* use max. as many images as there are in the folder */
 +          if ($i < $nImages)
 +             $nImages = $i;
 +          
 +            $random = array_rand($folderfiles, $nImages);
 +
 +          if ($nImages == 1) /* special case 1 file: array_rand returns single value instead of array of indices */
 +             $random = array( $random );
 +          
 +          shuffle($random);
 +          
 +            $folderfile_output  = '';      
 +          
 +          for ($idxImage = 0; $idxImage<$nImages; $idxImage++)
 +          {
 +             $folderfile = $folderfiles[$random[$idxImage]];
 +
 +             if(isset($folderfile['f_id']) ) {
 +                // $thumb_info = @getimagesize(PHPWCMS_URL.PHPWCMS_FILES.$folderfile["f_hash"] . '.' . $folderfile["f_ext"]);
 +                $thumb_info = @getimagesize(PHPWCMS_FILES.$folderfile["f_hash"] . '.' . $folderfile["f_ext"]);
 +
 +                (isset ($value[ 0 ])) ? $thumb_info[0] = $value[0] : $thumb_info[0] = $thumb_info[0];
 +                (isset ($value[ 1 ])) ? $thumb_info[1] = $value[1] : $thumb_info[1] = $thumb_info[1];
 +
 +                $zoominfo    = get_cached_image(
 +                  array(   "target_ext"   =>   $folderfile["f_ext"],
 +                         "image_name"  =>   $folderfile["f_hash"] . '.' . $folderfile["f_ext"],
 +                         "max_width"   =>   $thumb_info[0],
 +                         "max_height"  =>   $thumb_info[1],
 +                         "thumb_name"  =>   md5(   $folderfile["f_hash"].$thumb_info[0].
 +                                           $thumb_info[1].$GLOBALS['phpwcms']["sharpen_level"].$crop),
 +                         'crop_image'  =>   $crop
 +                  )
 +                );
 +                $folderfile_path  = PHPWCMS_IMAGES.$zoominfo[0];
 +             } else {
 +               $folderfile_path  = '';
 +             }
 +
 +             $image      = '<img src="'.PHPWCMS_URL.'img/cmsimage.php/'.$width.'x'.$height.'x'.$crop;
 +             if($quality <= 100 && $quality >= 10) {
 +             $image .= 'x'.$quality;
 +             }
 +             $image     .= '/'.$folderfile['f_id'].'.'.$folderfile["f_ext"].'" alt="'.$alttext.'" border="0" />';
 +
 +             /* TB lightbox */
 +             if (isset ($matches[3]) && $matches[3] !== "")
 +             {
 +                $lightbox = '<a title="'.$folderfile['f_longinfo'].'" rel="lightbox" target="_blank" href="'
 +                            . PHPWCMS_URL.'img/cmsimage.php/' . $matches[3];
 +                $lightbox     .= '/'.$folderfile['f_id'].'.'.$folderfile["f_ext"].'">';
 +                
 +                $image = $lightbox . $image . '</a>';
 +             }
 +             /* TB lightbox ende*/
 +
 +             // append current image to output
 +             $folderfile_output  .= $image;
 +
 +          }
 +           return $folderfile_output;
 +       }
 +
 +       return '<img src="'.PHPWCMS_URL.'img/leer.gif" alt="" border="0" />';
 +
 +    }
 +
 +    $content["all"] = preg_replace_callback( '/\{RAND_N_IMG_FROM_FOLDER:(\d+):(\d+):(.*?):(.*?)\}/i', 'parse_nimagesfromfolder', $content["all"]);
 +
 +    } // end if
 +
 +    ?>
 +</code>
 +
 +=== Lightbox ===
 +Bedingung für Lightbox: irgendwo im Template oder auch im Zufallsbild - CP
 +
 +<code>
 +    <!-- CSS: template/lib/slimbox/slimbox.css -->
 +    <!-- JS: template/lib/slimbox/slimbox.mootools-1.3.js -->
 +</code>
deutsch/ersetzer_rts/frontend_render/random-image-from-folder.1291823469.txt.gz · Last modified: 2018/06/03 18:07 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0