{{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 '
';
$x .= '
';
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('"', '"', $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 '
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 .= '
'.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 .= '
'.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('"', '"', $string);
?>
\\