Differences

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

english:phpwcms_replacer_rts:frontend_render:random_image [2010/01/04 13:20]
Knut Heermann (flip-flop)
english:phpwcms_replacer_rts:frontend_render:random_image [2018/06/03 18:09] (current)
Line 4: Line 4:
FIXME translate FIXME translate
 +
 +===== Random Images alias based =====
 +
Tag: **{GET_RANDOM_ALIAS_IMG_URL:image-path}** Tag: **{GET_RANDOM_ALIAS_IMG_URL:image-path}**
Line 21: Line 24:
---- ----
-FIXME(besser wäre es aber, die unveränderliche ID zu nehmen...) 
- 
-Hier fehlt noch eine etwas genauere Erklärung.  
-FIXME 
Location: **/template/inc_script/frontend_render/rt_get_random_alias_img_url.php** Location: **/template/inc_script/frontend_render/rt_get_random_alias_img_url.php**
Line 93: Line 92:
\\ \\
-====== Random Images level based ======+===== Random Images level based =====
**This snippet can be used at places like background in css constructions where no <img>-tag is required.** **This snippet can be used at places like background in css constructions where no <img>-tag is required.**
Line 132: Line 131:
---- ----
-**Author:** Knut Heermann (flip-flop) http://planmatrix.de+**Author:** Knut Heermann (flip-flop) http://planmatrix.de \\
**Last modified:**  03.01.2010 created/mixed up **Last modified:**  03.01.2010 created/mixed up
\\ \\
-====== Another Random Background Images Script  ======+==== Code ==== 
 + 
 +Location: **/template/inc_script/frontend_init/rt_get_random_level_img_url.php** 
 + 
 +<code php |h rt_get_random_level_img_url.php|h > 
 +<?php 
 +/********************************************************************************************* 
 +This snippet can be used at places like background where no <img>-tag is required. 
 + 
 +description:    rt_get_random_level_img_url.php 
 + This snippet is using the function of {RANDOM} tag. It search for pictures in the 
 + path you have setup in $_image_path like e.g. "picture/random[XX]/pic1.png".  
 + Where XX is the id of the active category in site structure of the given level  
 + ( setup in $_level_base). 
 + If you have setup $_level_base to "false", $_image_path is the fallback image path.  
 + All pictures will be searched in the folder. 
 + If you have setup $_level_base to e.g. "1" and your active category is a sub category of the  
 + category in level 1 e.g. "id=43", the image path is converted to "picture/random43/". 
 + From all the images in "picture/random43/" one becomes randomly selected. 
 + This tag can be used at places like table background where no <img>-tag is required. 
 +--------------------------------------------------------------------- 
 + 
 +example: given structure: 
 + home         (id=0)   level 0 
 + - cat01      (id=01)  level 1 
 + - cat02      (id=22)  level 1 
 + --- cat02_01 (id=45)  level 2 
 + --- cat02_02 (id=46)  level 2 - [active category] 
 + - cat03      (id=33)   level 1 
 +  
 + $_level_base = 1; 
 + $_image_path = picture/random; 
 + 
 +The snippet will generate a path like picture/random22/ and checks for all images in this path.  
 +If "picture/random22/" does not exist, then the images will be searched in the fallback path "picture/random/"  
 +The same if  $_level_base = false; 
 +--------------------------------------------------------------------- 
 + 
 +notice: name this file rt_get_random_level_img_url.php and copy it to 
 + phpwcms_template/inc_script/frontend_init 
 +--------------------------------------------------------------------- 
 + 
 +author: Knut Heermann (flip-flop) http://planmatrix.de 
 +last modified:  03.01.2010 created/mixed up 
 + 
 +**********************************************************************************************/ 
 + 
 +// ------------------------------------------------------------------------------------------- 
 +// obligate check for phpwcms constants 
 +  if (!defined('PHPWCMS_ROOT')) { 
 +    die("You Cannot Access This Script Directly, Have a Nice Day."); } 
 +// ------------------------------------------------------------------------------------------- 
 + 
 +// ===== CUSTOM SETTINGS ===================================================================== 
 +$_image_path    = 'picture/random'; // path where the default (and fallback) images are 
 +$_level_base    = 1;                // false = off | Level-No = on   e.g. 1 = TopLevel 
 +// ===== CUSTOM SETTINGS END ================================================================= 
 + 
 + 
 +if ( ($_level_base !== false) AND (isset($LEVEL_ID[$_level_base])) AND (is_dir($_image_path.$LEVEL_ID[$_level_base] )) )   
 +    $_image_path .= $LEVEL_ID[$_level_base]; // e.g. picture/random24 is the image path for images in category ID=24 and their subcategories 
 + 
 + 
 + 
 +// $template_default['body']['id'] = 'bg-image';  // it will be produced always "bg-image[cat-id]" 
 +$template_default['body']['class'] = 'bg-image id-';  // it will be produced always "bg-image[cat-id]" 
 + 
 +   // Hm I want to write some default CSS  
 +   $block['custom_htmlhead']['mycss']  = '  <style type="text/css" media="screen">' . LF . '  <!--' . LF; 
 +//   $block['custom_htmlhead']['mycss'] .= '   #bg-image'.$content['cat_id'].' { ' . LF; 
 +   $block['custom_htmlhead']['mycss'] .= '   .bg-image { ' . LF; 
 +   $block['custom_htmlhead']['mycss'] .= '      background: transparent url('.get_random_image_tag("SRC:$_image_path").') no-repeat left top;' . LF; 
 + 
 +   $block['custom_htmlhead']['mycss'] .= '   }'; 
 +   $block['custom_htmlhead']['mycss'] .= LF . '  //-->' . LF . '  </style>'; 
 + 
 +?> 
 +</code> 
 + 
 +\\ 
 + 
 +===== Another Random Background Images Script  =====
Forum: [[http://forum.phpwcms.org/viewtopic.php?f=8&t=14342&p=121758#p121758|{CSS trick: random body background image}]] Forum: [[http://forum.phpwcms.org/viewtopic.php?f=8&t=14342&p=121758#p121758|{CSS trick: random body background image}]]
 +
 +Only images with the name "rand[0-25].jpg" are available (Folder: "images/skins/").
<code html> <code html>
Line 146: Line 228:
<style type="text/css" media="screen"> <style type="text/css" media="screen">
.bg-image { .bg-image {
-   background-image: url(/images/skins/[PHP] echo ("skins".rand(0,25).".jpg")[/PHP]) ;+   background-image: url(images/skins/[PHP] echo ("skins".rand(0,25).".jpg")[/PHP]) ;
} }
</style> </style>
Line 161: Line 243:
$template_default['body']['class'] = 'bg-image id-'; $template_default['body']['class'] = 'bg-image id-';
</code> </code>
 +
 +\\
 +
 +====== Random Images from account folder ======
 +
 +  {RANDOMX:%SRC-LB%:%path%:%WIDTH%x%HEIGHT%}
 +
 +From a specified folder of the accounts  a picture is randomly selected and presented. This extended TAG allows the  specification of the  thumbnails size  and a call of the Lightbox //(SlimBox)//.
 +
 +Like {RANDOM:path}, with the following properties:
 +
 +  * Returns a random image from the specified path
 +  * It looks for image of following type: gif, jpg, jpeg, png.
 +  * **{RANDOMX:path}** will return with %%"path=path/rand_image/"%% --> %%<img src="path/rand_image/..." />%%  
 +  * **{RANDOMX:SRC:path}** will return the absolute %%URI PHPWCMS_URL/path/rand_image/...%%
 +  * **{RANDOMX:SRC-R:path}** will return the relative URI %%path/rand_image/...%%.
 +  * **{RANDOMX:SRC-LB:path:WIDTHxHEIGHT}** willl return a complete html set thumb/LightBox with %%WIDTHxHEIGHT%% for the thumb
 +    * The LightBox presents the images in original size.
 +    * The thumbs are simply scaled down, not stored/recalculated or cropped.
 +
 +\\
 +**Example:** ##%%{RANDOMX:SRC-LB:picture/upload/image/:200x150}%%##
 +
 + 
 +
 +==== PHP: ====
 +
 +**File:** template/inc_Script/forntend_render/rt_randomX_img.php
 +
 +<code php|h rt_randomX_img.php |h>
 +<?php
 +// KH 19.06.11 flip-flop: Random image from normal folder
 +
 +// -------------------------------------------------------------------------------------------
 +// obligate check for phpwcms constants
 +  if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
 +// -------------------------------------------------------------------------------------------
 +
 +function get_random_image_tagX($path) {
 + // returns an random image from the give path
 + // it looks for image of following type: gif, jpg, jpeg, png
 + // {RANDOMX:path} willl return <img src="path/rand_image" />
 + // {RANDOMX:SRC:path} will return absolute URI PHPWCMS_URL/path/rand_image
 + // {RANDOMX:SRC-R:path} will return only relative path/rand_image
 + // {RANDOMX:SRC-LB:path:%WIDTH%x%HEIGHT%} will return a complete html set for LightBox with WIDTHxHEIGHT for the thumb
 +
 +
 + $imgArray = array();
 + $path = trim($path);
 + $tagX = false; //+KH
 + if(strtoupper(substr($path, 0, 4)) == 'SRC:') {
 + $tag = false;
 + $path = trim(substr($path, 4));
 +
 + // relative path/rand_image
 + } elseif (strtoupper(substr($path, 0, 6)) == 'SRC-R:') { // +KH
 + $tag = false;
 + $tagX = 1;
 + $path = trim(substr($path, 6));
 +
 + // complete html set for LightBox with WIDTHxHEIGHT for the thumb
 + } elseif (strtoupper(substr($path, 0, 7)) == 'SRC-LB:') { // +KH
 + // %WIDTH%x%HEIGHT fallback
 + $width = 150;
 + $height = 100;
 +
 + $tag = false;
 + $tagX = 2;
 + $path = trim(substr($path, 7));
 + $data = explode(':', $path);
 + $path = $data[0];
 +
 + if (isset($data[1])) {  // find WIDTH x HEIGHT
 + $data[1] = preg_replace('/[^0-9x]/', '', $data[1]);
 + $attribute = explode('x', $data[1]);
 + $width = intval($attribute[0]);
 + $height = isset($attribute[1]) ? intval($attribute[1]) : 0;
 + }
 +
 + } else {
 + $tag = true;
 + }
 +
 + $path = trim($path, '/');
 + $imgpath = PHPWCMS_ROOT . '/' . $path . '/';
 + $imageinfo = false;
 +
 + if(is_dir($imgpath)) {
 + $handle = opendir( $imgpath );
 + while($file = readdir( $handle )) {
 +   if( $file{0} != '.' && preg_match('/(\.jpg|\.jpeg|\.gif|\.png)$/i', $file)) {
 + $imgArray[] = $file;
 + }
 + }
 + closedir( $handle );
 + }
 +
 + if(count($imgArray) && ($imageinfo = is_random_image($imgArray, $imgpath))) {
 + if($tag) {  // normal output
 + return '<img src="'.$path.'/'.urlencode($imageinfo['imagename']).'" '.$imageinfo[3].' border="0" alt="'.html_specialchars($imageinfo["imagename"]).'"'.HTML_TAG_CLOSE;
 + } else {
 +
 + if ($tagX === 2) {  // SRC-LB
 + initializeLightbox();
 +// $x = '<img src="'.$path.'/'.urlencode($imageinfo['imagename']).'" '.$imageinfo[3].' border="0" alt="'.html_specialchars($imageinfo["imagename"]).'"'.HTML_TAG_CLOSE;
 +
 + $x  = '<a href="image_resized.php?format=jpg&q=85&imgfile='.$path.'/'.urlencode($imageinfo['imagename']).'" rel="lightbox" target="_blank">';
 + $x .= '<img src="image_resized.php?format=jpg&q=85&imgfile='.$path.'/'.urlencode($imageinfo['imagename']).'" class="image_img" alt="'.html_specialchars($imageinfo["imagename"]).'" height="'.$height.'" width="'.$width.'"></a>';
 + return $x;
 + } elseif (($tagX === 1))  // SRC-R
 + return  $path . '/' . urlencode($imageinfo['imagename']);
 +
 + else
 + return PHPWCMS_URL . $path . '/' . urlencode($imageinfo['imagename']);
 + }
 + }
 +
 + return '';
 +}
 +
 + // randomX Image Tag
 + $search = '/\{RANDOMX:(.*?)\}/e';
 + $replace = 'get_random_image_tagX("$1");';
 +
 + $content["all"] = preg_replace($search, $replace, $content["all"]);
 +// $string = str_replace('&#92;&#039;', '&#039;', $string);
 +// $string = str_replace('&amp;quot;', '&quot;', $string);
 +
 +?>
 +
 +</code>
 +
 +\\
 +
 +
 +===== V1.1 =====
 +
 +FIXME Better translate
 +
 +Identical to the version shown above, but enhanced by the appearance of all images in the specified directory using LightBox //(Next/Prev)//.
 +
 +  * **{RANDOMX:SRC-LBNP:path:WIDTHxHEIGHT}** returns the complete set of html instructions for the LightBox with %%WIDTHxHEIGHT%% for the thumbs and provides all the image files from the specified path in the LightBox.
 +    * The LightBox presents the images in original size.
 +    * The Thumb is simply scaled down, not newly calculated / stored or trimmed //(cropping)//.
 +    * Update 21.06.11:
 +      - The Thumb is reduced proportionally shown according to the size specifications  //(Identical procedure as in the pictures CPs - The largest division ratio is the benchmark for both sides)//.  
 +      - Correction to image type.
 +
 +\\
 +**Example:** ##%%{RANDOMX:SRC-LBNP:picture/upload/image/:200x150}%%##
 +
 +The random thumb is displayed with a maximum size of 200x150px and a link to the LightBox  //(show above "proportionally")//, then all the images from the directory in original size with //(Next/Prev)// can be represented.
 +\\
 +
 +==== PHP V1.1: ====
 +
 +**File:** template/inc_Script/forntend_render/rt_randomX_img.php
 +
 +<code php|h rt_randomX_img.php |h>
 +<?php
 +// KH 21.06.11 flip-flop: Random image from normal folder V1.1
 +
 +// -------------------------------------------------------------------------------------------
 +// obligate check for phpwcms constants
 +  if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
 +// -------------------------------------------------------------------------------------------
 +
 +
 +function get_random_image_tagX($path) {
 + // returns an random image from the given path
 + // it looks for image of following type: gif, jpg, jpeg, png
 + // {RANDOMX:path} will return <img src="path/rand_image" />
 + // {RANDOMX:SRC:path} will return absolute URI PHPWCMS_URL/path/rand_image
 + // {RANDOMX:SRC-R:path} will return only relative path/rand_image
 + // {RANDOMX:SRC-LB:path:%WIDTH%x%HEIGHT%} will return a complete html set for LightBox with proportional WIDTHxHEIGHT for the thumb
 + // {RANDOMX:SRC-LBNP:path:%WIDTH%x%HEIGHT%} the same like SRC-LB with LightBox Next/Prev pictures from this folder
 +
 +
 + $imgArray = array();
 + $path = trim($path);
 + $tagX = false; //+KH
 + if(strtoupper(substr($path, 0, 4)) == 'SRC:') {
 + $tag = false;
 + $path = trim(substr($path, 4));
 +
 + // relative path/rand_image
 + } elseif (strtoupper(substr($path, 0, 6)) == 'SRC-R:') { // +KH
 + $tag = false;
 + $tagX = 1;
 + $path = trim(substr($path, 6));
 +
 + // complete html set for LightBox with WIDTHxHEIGHT for the thumb
 + } elseif (strtoupper(substr($path, 0, 6)) == 'SRC-LB') { // +KH
 + // %WIDTH%x%HEIGHT fallback
 + $width = 150;
 + $height = 100;
 +
 + $tag = false;
 + $tagX = 2;
 + if (strtoupper(substr($path, 0, 9)) == 'SRC-LBNP:') {
 + $path = trim(substr($path, 9));
 + $tagX = 3;
 + } else
 + $path = trim(substr($path, 7));
 + $data = explode(':', $path);
 + $path = $data[0];
 +
 + if (isset($data[1])) {  // find WIDTH x HEIGHT
 + $data[1] = preg_replace('/[^0-9x]/', '', $data[1]);
 + $attribute = explode('x', $data[1]);
 + $width = intval($attribute[0]);
 + $height = isset($attribute[1]) ? intval($attribute[1]) : 0;
 + }
 +
 + } else {
 + $tag = true;
 + }
 +
 + $path = trim($path, '/');
 + $imgpath = PHPWCMS_ROOT . '/' . $path . '/';
 + $imageinfo = false;
 +
 + if(is_dir($imgpath)) {
 + $handle = opendir( $imgpath );
 + while($file = readdir( $handle )) {
 + if( $file{0} != '.' && preg_match('/(\.jpg|\.jpeg|\.gif|\.png)$/i', $file)) {
 + $imgArray[] = $file;
 + }
 + }
 + closedir( $handle );
 + }
 +
 + // RANDOM
 + if(count($imgArray) && ($imageinfo = is_random_image($imgArray, $imgpath))) {
 + if($tag) {  // normal output
 + return '<img src="'.$path.'/'.urlencode($imageinfo['imagename']).'" '.$imageinfo[3].' border="0" alt="'.html_specialchars($imageinfo["imagename"]).'"'.HTML_TAG_CLOSE;
 + } else {
 +
 + // LightBox output
 + if ($tagX === 2 OR $tagX === 3) {  // SRC-LB OR SRC-LBNP:
 + initializeLightbox();
 +// $x = '<img src="'.$path.'/'.urlencode($imageinfo['imagename']).'" '.$imageinfo[3].' border="0" alt="'.html_specialchars($imageinfo["imagename"]).'"'.HTML_TAG_CLOSE;
 +
 + // Type of image
 + $img_type = substr($imageinfo['mime'], 6); // e.g. image/jpeg -> jpeg
 + if ($imageinfo['2'] == 2) $img_type .= '&q=85'; // Only if jpg = type Nr 2
 +
 + // Proportional image size
 + $img_x = $imageinfo[0] / $width;  // z.B. 800 / 200 = 4,00
 + $img_y = $imageinfo[1] / $height; // z.B. 532 / 100 = 5,32
 +
 + if ($img_x < $img_y) $width = $imageinfo[0] / $img_y;
 + else $height = $imageinfo[1] / $img_x;
 +
 + $x  = '<a href="image_resized.php?format='.$img_type.'&imgfile='.$path.'/'.urlencode($imageinfo['imagename']).'" rel="lightbox[NextPrev]" target="_blank">';
 + $x .= '<img src="image_resized.php?format='.$img_type.'&imgfile='.$path.'/'.urlencode($imageinfo['imagename']).'" class="random-img" alt="'.html_specialchars($imageinfo["imagename"]).'" height="'.$height.'" width="'.$width.'"></a>'.LF;
 + $random_image = $imageinfo['imagename'];
 +
 + // LightBox with Next/Prev: Read all available images in path
 + if ($tagX === 3 ) {  // SRC-LBNP:
 + foreach ($imgArray as $key=>$value) {
 +
 + $imageinfo = @getimagesize($imgpath.$value);  // is it an image?
 +
 + if ($imageinfo) {
 +
 + $img_type = substr($imageinfo['mime'], 6); // e.g. image/jpeg -> jpeg
 + if ($imageinfo['2'] == 2) $img_type .= '&q=85'; // Only if jpg = type Nr 2
 +
 + if ($random_image != $value)  // No double image entry except the random image
 + $x .= '<a href="image_resized.php?format='.$img_type.'&imgfile='.$path.'/'.urlencode($value).'" rel="lightbox[NextPrev]" target="_blank"></a>'.LF;
 + // $x .= '<img src="image_resized.php?format=jpg&q=85&imgfile='.$path.'/'.urlencode($value).'" class="image_img" alt="'.html_specialchars($value).'" height="'.$height.'" width="'.$width.'"></a>'.LF;
 + }
 + }
 +
 + }
 +
 + return $x;
 + } elseif (($tagX === 1))  // SRC-R
 + return  $path . '/' . urlencode($imageinfo['imagename']);
 +
 + else // SRC:
 + return PHPWCMS_URL . $path . '/' . urlencode($imageinfo['imagename']);
 + }
 + }
 +
 + return '';
 +}
 +
 + // randomX Image Tag
 + $search = '/\{RANDOMX:(.*?)\}/e';
 + $replace = 'get_random_image_tagX("$1");';
 +
 + $content["all"] = preg_replace($search, $replace, $content["all"]);
 +// $string = str_replace('&#92;&#039;', '&#039;', $string);
 +// $string = str_replace('&amp;quot;', '&quot;', $string);
 +
 +
 +?>
 +</code>
 +
 +\\
 +
english/phpwcms_replacer_rts/frontend_render/random_image.1262607620.txt.gz · Last modified: 2018/06/03 18:08 (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