{{indexmenu_n>620}} ====== Random Images ====== FIXME translate ===== Random Images alias based ===== Tag: **{GET_RANDOM_ALIAS_IMG_URL:image-path}** E.g. {GET_RANDOM_ALIAS_IMG_URL:picture/images/test} Forum: [[http://forum.phpwcms.org/viewtopic.php?p=57124#p57124|{GET_RANDOM_ALIAS_IMG_URL}]] Authors: tinoo, pepe(starter), RCS robin c. sherwood //(adapting and mixing up the code)// \\ Last modified: 23.01.2006 created/mixed up Filename: rt_get_random_alias_img_url.php Folder: /template/inc_script/frontend_render/ Switch: $phpwcms['allow_ext_render'] = 1; (/config/phpwcms/conf.inc.php) ---- ---- Location: **/template/inc_script/frontend_render/rt_get_random_alias_img_url.php** -tag is required. --------------------------------------------- example: {GET_RANDOM_ALIAS_IMG_URL:picture/Image} or in an "HTML" contentpart. --------------------------------------------- The directories "alias1" "alias2" ... are subdirectories of picture/Image (you have to create them according to your given aliases "alias1" "alias2"... in admin/site structure). The complete path to the random pictures is then: www.yourdomain.com/picture/Image/alias1/ www.yourdomain.com/picture/Image/alias2/ and so on. The advantage of defining the alias-dirs in "picture/Image" is that this dir is used by fckeditor and you then can upload pictures per FTP and/or per fckeditor. It will deliver the pictures of the appropriately defined dir according to where you are in the site. --------------------------------------------- notice: name this file get_random_alias_img_url.php and copy it to phpwcms_template/inc_script/frontend_render --------------------------------------------- authors: tinoo, pepe(starter), RCS robin c. sherwood (adapting and mixing up the code) last modified: 23.01.2006 created/mixed up ********************************************/ // ---------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); } // ---------------------------------------------------------------- function get_random_image_url_based_on_alias($path) { // returns a random image url from the given path // it looks for image of following type: gif, jpg, jpeg, png $alias = $GLOBALS['content']['struct'][($GLOBALS['aktion'][0])]['acat_alias']; $mypath = ($path."/".$alias); $imgArray = array(); $imgpath = str_replace("//", "/", PHPWCMS_ROOT."/".$mypath."/"); $imageinfo = false; if(is_dir($imgpath)) { $handle = opendir( $imgpath ); while($file = readdir( $handle )) { if( $file != "." && $file != ".." ) { if( preg_match('/(\.jpg|\.jpeg|\.gif|\.png)$/', strtolower($file)) ) $imgArray[] = $file; } } closedir( $handle ); } if(sizeof($imgArray)) $imageinfo = is_random_image($imgArray, $imgpath); return ($imageinfo) ? "".$mypath."/".$imageinfo["imagename"]: ""; } $content["all"] = preg_replace('/\{GET_RANDOM_ALIAS_IMG_URL:(.*?)\}/ie', 'get_random_image_url_based_on_alias("$1");', $content["all"]); ?> \\ ===== Random Images level based ===== **This snippet can be used at places like background in css constructions where no -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. ---- \\ **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/** \\ **Condition:** -> [[http://www.phpwcms-docu.de/conf_inc_php_en.phtml|/config/phpwcms/conf.inc.php]] \\ * $phpwcms['allow_ext_init'] = 1; ---- **Author:** Knut Heermann (flip-flop) http://planmatrix.de \\ **Last modified:** 03.01.2010 created/mixed up \\ ==== Code ==== Location: **/template/inc_script/frontend_init/rt_get_random_level_img_url.php** -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 -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'] = ' '; ?> \\ ===== 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}]] Only images with the name "rand[0-25].jpg" are available (Folder: "images/skins/"). \\ Setup in **config/phpwcms/conf.template_default.inc.php** $template_default['body']['class'] = 'bg-image id-'; \\ ====== 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/"%% --> %%%% * **{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 // {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 ''.html_specialchars($imageinfo['; $x .= ''.html_specialchars($imageinfo['; 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('\'', ''', $string); // $string = str_replace('&quot;', '"', $string); ?> \\ ===== 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 // {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 ''.html_specialchars($imageinfo[ 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 = ''; $x .= ''.html_specialchars($imageinfo['.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 .= ''.LF; // $x .= ''.html_specialchars($value).''.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('\'', ''', $string); // $string = str_replace('&quot;', '"', $string); ?> \\