Page 1 of 1

Display random image from filemanager

Posted: Thu 19. Mar 2009, 14:15
by caramello
Does anybody have any tips on how to display a single random image from ONE the filebrowser's directories ?

I figure the RT {RANDOM will not do that as it needs a full pathe to a directory on the server and then will display a random image from all the image.

(r307)

Re: Display random image from filemanager

Posted: Fri 20. Mar 2009, 07:33
by juergen
Hi

this is not part of core code, needs to be coded

:)

Re: Display random image from filemanager

Posted: Thu 26. Mar 2009, 23:30
by breitsch
The following solution is not really a random image from a filemanager directory, but a random image from a contentpart 'pictures'
so you can set up a contentpart with a list of all your desired images and then tell the script to use only one random image of this list each time the contentpart is shown in frontend.

It's especially handy for header images when you want to give the user the possibility to change the header pictures easily - add a {SHOW_CONTENT:CP:#} to your template where the image should appear.

The bad news is: you need to hack the core code, but it's really just a few lines in three files:

include\inc_lib\content\cnt2.readform.inc.php

find (row 50):

Code: Select all

$content['tmp_images']		= array();
add before (row 49):

Code: Select all

$content["randomimage"] 		= empty($_POST["cimage_randomimage"]) ? 0 : 1;
find (row 126)

Code: Select all

$content['image_list']['crop']		= empty($_POST["cimage_crop"]) ? 0 : 1;
add after (row 127):

Code: Select all

$content['image_list']['randomimage']		= $content["randomimage"];

include\inc_tmpl\content\cnt2.inc.php

add in row 241:

Code: Select all

<tr>
	<td align="right" class="chatlist">Random Image:&nbsp;</td>
	<td valign="top"><table border="0" cellpadding="0" cellspacing="0" summary="">
			<tr>
				<td><input name="cimage_randomimage" type="checkbox" id="cimage_randomimage" value="1" <?php is_checked(1, $content['image_list']['randomimage']); ?> /></td>
				<td class="v10"><label for="cimage_randomimage" class="checkbox">random image from the list</label></td>
			</tr>
		</table>
	</td>
</tr>
note that 'Random Image:' and 'random image from the list' is hardcoded


include\inc_front\img.func.inc.php

find (row 370):

Code: Select all

foreach($imagelist['images'] as $key => $value) {
insert after:

Code: Select all

      if ($imagelist['randomimage']){
          $key = rand(0, $count_images-1);
      }
find (now row 536):

Code: Select all

		$capt_row 	.= $xct;
		$x++;
	}
insert after (row 539):

Code: Select all

      if ($imagelist['randomimage']){
        break;
      }

This will give you a new option in the images contentpart
Image

Re: Display random image from filemanager

Posted: Fri 27. Mar 2009, 08:35
by Oliver Georgi
OK, Breitsch war wieder fleißig :)

Ich habs übernommen und entsprechend adaptiert (na klar Ego sei Dank ;-) etwas anders). Macht aber das gleiche.
http://code.google.com/p/phpwcms/source/detail?r=310

Gruß
Oliver

Re: Display random image from filemanager

Posted: Fri 27. Mar 2009, 09:10
by juergen
310 -> ist auf der docu Seite ;)

Re: Display random image from filemanager

Posted: Fri 27. Mar 2009, 10:18
by flip-flop
Inspired of the contribution of breitsch here is an other general solution using the template for "image <div>" or "image special".

It is very pretty and more flexible:
- list of images from CP
- width/heigth parameters from CP
- lightbox (zoom only don´t run!!!).
- alt/title from CP
- bulid your own classes/IDs

- fallback image (please insert your image into the snippet at the end)

And if you wan´t more features, please play around with the other parameter like {THUMB_HEIGHT} or {IMAGE_HASH} and so on.

config: $phpwcms['allow_cntPHP_rt'] = 1;

E.g. template file: random_image.tmpl

Code: Select all

<!--IMAGES_HEADER_START//-->

<div class="images" id="images{ID}">

[PHP]

	$my_images = array();
	$my_counter = -1;

<!--IMAGES_HEADER_END//-->


<!--IMAGES_ENTRY_START//-->

	$my_counter++;
	$my_images[$my_counter][0] = '{IMAGE}';  // complete html string with image
	$my_images[$my_counter][1] = '{IMGID}';  // image-id

<!--IMAGES_ENTRY_END//-->

<!--IMAGES_ENTRY_SPACER_START//--><!--IMAGES_ENTRY_SPACER_END//-->
<!--IMAGES_ROW_SPACER_START//--><!--IMAGES_ROW_SPACER_END//-->


<!--IMAGES_FOOTER_START//-->

echo '<div class="imageEntry">'.LF;

if (!empty($my_images) ) {
	echo '<div id="img'.$my_images[$my_counter][1].'">'.LF;  // ID

//	srand(microtime()*1000000); // Only for php version < 4.2
	echo $my_images[rand(0,$my_counter)][0];  // iamge output

	echo '</div>'.LF;  // End ID
} 
else 
{ // ************* Please insert your fallback image *************
	echo '<img src="content/images/my_fallback_image.jpg" width="200" height="150" alt="My alt" title="My title" border="0" />';
}
echo '</div>'.LF;

unset ($my_images);
unset ($my_counter);

[/PHP]

</div>
<!--IMAGES_FOOTER_END//-->
And have a look to this parameters......

Code: Select all

	<!-- 
		Thumbnail image: {THUMB_NAME}
		  relative:      {THUMB_REL}
		  absolute:      {THUMB_ABS}
		  height/width:  {THUMB_HEIGHT}px/{THUMB_WIDTH}px
		  image ID:      {IMAGE_ID}
		  image Hash:    {IMAGE_HASH}
		
		If you are not sure wrap zoomed image:
		[ZOOM]
		Zoomed (big) image: {IMAGE_NAME}
		  relative: {IMAGE_REL}
		  absolute: {IMAGE_ABS}
		  height/width: {IMAGE_HEIGHT}px/{IMAGE_WIDTH}px
		[/ZOOM]		
	//-->
Parameters hand over from the range

<!--IMAGES_ENTRY_START//-->
$my_images[$my_counter][2] = '{THUMB_HEIGHT}'; // image-id
$my_images[$my_counter][3] = '{THUMB_WIDTH}'; // image-id
// and so on .......
<!--IMAGES_ENTRY_END//-->

into the range

<!--IMAGES_FOOTER_START//-->
echo 'Test thumb height'.$my_images[$my_counter][2].'<br />'.LF;
echo 'Test thumb width'.$my_images[$my_counter][3].'<br />'.LF;
<!--IMAGES_FOOTER_END//-->

Knut

Re: Display random image from filemanager

Posted: Fri 27. Mar 2009, 10:43
by update
Oliver Georgi wrote:OK, Breitsch war wieder fleißig :)

Ich habs übernommen und entsprechend adaptiert (na klar Ego sei Dank ;-) etwas anders). Macht aber das gleiche.
Good to know that this method is doing the trick ;)
Hey, there are some other contributions (similar to this really nice one done by breitsch) which will fit into this method too (the random CP for example) ;)
(not to mention some done by flip-flop and others)
Keep on tracking / truckin' :D