Jump to content

Recommended Posts

Posted

Hi,

I'm still a newbie on PW and not very familiar with the syntax.

I have set up a gallery page and now I try to give it two links to sort the images by two different fields belonging to every image. This fields I have created with the ImageExtra Module: 

Name_1 contains the year,

Name_2 contains the place.

Now I put in a link <sort by name_1> and a link <sort by name_2> This should work with urlSegment2 (urlSegment1 I use to show a specific image)

	<?php 
	
	// output 'headline' if available, otherwise 'title'
	echo '<h1>' . $page->get('headline|title') . '</h1>';
	
	// galerie.php template file
	// overview - and single image view

	//get all segments and clean segments!
	$seg1 = $sanitizer->pageName($input->urlSegment1);
	$seg2 = $sanitizer->pageName($input->urlSegment2);
	$seg3 = $sanitizer->pageName($input->urlSegment3);
	
	// Links zur Sortierung:
	echo 'Sortierung nach <a href="'.$input->post(urlSegment2 = 1).'">Name 1</a> ';
	echo '<a href="'.$input->post(urlSegment2 = 2).'">Name 2</a> ';

	//check for the second urlsegment sort order
	// sortiere nach name_1:
if ($seg2 = 1)
	{$images = $page->images->sort("name_1");}
	
	// sortiere nach name_2:
elseif ($seg2 = 2)
	{$images = $page->images->sort("name_2");}
else {}

//check for the third urlsegment not needed
if ($seg3) {
	// unknown URL segment, send a 404
	throw new Wire404Exception();
}

	
	
	
	//normal content without first url segment!
if (!$seg1) {
	
	// output bodycopy
	echo $page->body; 
	
	// output images
	foreach($images as &$image) {
		$thumbnail = $image->height(100);
		echo '<div class="rahmen"><a href="'.$page->url . $image.'"><img class="shadow" src="'.$thumbnail->url.'" alt="'.$thumbnail->caption.'" title="'.$image->caption.'"></a></div>';
	}
	}

	//special view output with an url segment...
if ($seg1) { 
	// get the image in the correspondent position:
	$index = $input->$seg1;
	$image = $page->images->index($index); 
	
	// Link zum vorigen Bild:
	echo '<a href="'.$images->getPrev($images->$seg1).'"><img src="'.$config->urls->site.'templates/styles/links.gif" title="voriges Bild"></a> ';
	
	// Link zur Thumbnail-Seite:
	echo '<a href="'.$page->url.'"><img src="'.$config->urls->site.'templates/styles/index.gif" title="zurück zur Übersicht"></a> ';
	
	// Link zum nächsten Bild:
	echo '<a href="'.$images->getNext($images->$seg1).'"><img src="'.$config->urls->site.'templates/styles/rechts.gif" title="nächstes Bild"></a><br />'; 
	

	// Bild zeigen:
	echo '<img class="shadow" src="'.$image->url . $seg1.'" alt="'.$images->$seg1->description.'" title="'.$images->$seg1->description.'">';

	// Textfelder zu den Bildern anzeigen:
	echo '<h3>'.$images->$seg1->caption.'</h3>';
	echo '<p>'. $images->$seg1->description. '<br />'
			.$images->$seg1->name_1.' '
			.$images->$seg1->name_2.'</p>';
	}
?>

I get a syntax error: unexpected '=' in line 15.

Perhaps someone can help me.

Thanx in advance

Günter

Posted

You should put "==" here I guess:

if ($seg2 = 1)
elseif ($seg2 = 2)

And what is your goal here?

$input->post(urlSegment2 = 1)
Posted

Line 15 and 16 will need to be changed. You just want:

$input->urlSegment2

You don't want the "post" and you can't use "=" where you have it, hence the syntax error.

EDIT: Oops - tpr beat me!

Posted

For example, set your links like this:

kindheit/?order=1

kindheit/?order=2

and then set the order in your template file with

$sanitizer->name($input->get->order)
  • Like 1
Posted

@ tpr: Thanks for your hint, it helped me to sort my thumbnails.

But if I call a single image the order vanishes. I've tried to put the order-variable in the foreach-loop, but this did not work with the getNext and getPrev function.

This is one page: http://malabu.de/pw/kindheit/

and here comes my current template file:

<?php 
	
	// output 'headline' if available, otherwise 'title'
	echo '<h1>' . $page->get('headline|title') . '</h1>';
	

	//get all segments and clean segments!
	$seg1 = $sanitizer->pageName($input->urlSegment1);
	$seg2 = $sanitizer->pageName($input->urlSegment2);
	$seg3 = $sanitizer->pageName($input->urlSegment3);
	
	
	
	//check for the second urlsegment not needed
if ($seg2) {
	// unknown URL segment, send a 404
	throw new Wire404Exception();
}

//check for the third urlsegment not needed
if ($seg3) {
	// unknown URL segment, send a 404
	throw new Wire404Exception();
}

		// Sortierung übernehmen:
		$order = $input->get->order;
		
		// Links zur Sortierung:
		echo '<p>Sortierung nach <a class="tab" href="'.$page->url.'?order=1">Name 1</a> 
		<a class="tab " href="'.$page->url.'?order=2">Name 2</a></p>';
		
		// sortiere nach name_1:
		if ($order == 1) {
			$images = $page->images->sort("name_1");
			}
		
		// sortiere nach name_2:
		elseif ($order == 2) {
			$images = $page->images->sort("name_2");
			}

		// ohne Sortierung:
		else {}

	
	$images = $page->images;
	
	//normal content without first url segment!
if (!$seg1) {
	
	// output bodycopy
	echo $page->body; 
	
	// output images
	foreach($images as &$image) {
		$thumbnail = $image->height(100);
		echo '<div class="rahmen"><a href="'.$page->url . $image.'"><img class="shadow" src="'.$thumbnail->url.'" alt="'.$thumbnail->caption.'" title="'.$image->caption.'"></a></div>';
		// try to keep the order-variable:
		// echo '<div class="rahmen"><a href="'.$page->url . $image.'/?order='.$order.'"><img class="shadow" src="'.$thumbnail->url.'" alt="'.$thumbnail->caption.'" title="'.$image->caption.'"></a></div>';
	}
	}

	//special view output with an url segment...
if ($seg1) { 
	// get the image in the correspondent position:
	$index = $input->$seg1;
	$image = $page->images->index($index); 
	
	// Link zum vorigen Bild:
	echo '<a href="'.$images->getPrev($images->$seg1).'"><img src="'.$config->urls->site.'templates/styles/links.gif"  title="voriges Bild"></a> ';
	
	// Link zur Thumbnail-Seite:
	echo '<a href="'.$page->url.'"><img src="'.$config->urls->site.'templates/styles/index.gif" title="zurück zur Übersicht"></a> ';
	
	// Link zum nächsten Bild:
	echo '<a href="'.$images->getNext($images->$seg1).'"><img src="'.$config->urls->site.'templates/styles/rechts.gif" title="nächstes Bild"></a><br />'; 
	

	// Bild zeigen:
	echo '<img class="shadow" src="'.$image->url . $seg1.'" alt="'.$images->$seg1->description.'" title="'.$images->$seg1->description.'">';

	// Textfelder zu den Bildern anzeigen:
	echo '<h3>'.$images->$seg1->caption.'</h3>';
	echo '<p>'. $images->$seg1->description. '<br />'
			.$images->$seg1->name_1.' '
			.$images->$seg1->name_2.'</p>';
	}
?>

Can anyone help me with the correct syntax?

Günter

Posted

You should save the order to session, see

https://processwire.com/api/variables/session/

Thus the order will be always available in "$session->itemOrder" (or whatever you name it).

For prev-next links, I assume you should use this:

http://cheatsheet.processwire.com/page/built-in-methods-reference/page-next-pagearray/

Here you will need to set the order again in the $pageArray (here you can use $session->itemOrder). I have no experience with this so maybe I'm wrong.

  • 2 weeks later...
Posted

Thanks for your help.

I have now realized my gallery with a combination of url-segment (for choosing the image to enlarge) and get-procedure (for to change the order of the images).

Don't know, if this ist the best way to do it, but it works for me, and I understand, what I have done.

Here is the template to my site http://malabu.de/pw:

<?php include('./_head.php'); // include header markup ?>

<div id='index'>

	<?php 
	
	// output 'headline' if available, otherwise 'title'
	echo '<h1>' . $page->get('headline|title') . '</h1>';
	
	//get all segments and clean segments!
	$seg1 = $sanitizer->pageName($input->urlSegment1);
	$seg2 = $sanitizer->pageName($input->urlSegment2);
	$seg3 = $sanitizer->pageName($input->urlSegment3);
		
	//check for the second urlsegment not needed
if ($seg2) {
	// unknown URL segment, send a 404
	throw new Wire404Exception();
}

//check for the third urlsegment not needed
if ($seg3) {
	// unknown URL segment, send a 404
	throw new Wire404Exception();
}

		// Sortierung übernehmen:		
		$order = $input->get->order;
		
		// sortiere nach name_:
		if ($order >0) {
			$images = $page->images->sort("name_".$order);
			$session->set($order, $order);
			}

		// ohne Sortierung:
		else {
			$images = $page->images;
		}
	
	//normal content without first url segment!
if (!$seg1) {
	// output bodycopy
	echo $page->body; 
	
	// Links zur Sortierung:
	echo '<p>Sortierung nach <a class="tab" href="'.$page->url.'?order=1">'. $page->get('name_1').'</a> 
	<a class="tab " href="'.$page->url.'?order=2">'. $page->get('name_2').'</a></p>';

	// output images
	foreach($images as &$image) {
		$thumbnail = $image->height(100);
		echo '<div class="rahmen"><a href="'.$page->url . $image.'?order='.$session->get($order).'"><img class="shadow" src="'.$thumbnail->url.'" alt="'.$thumbnail->caption.'" title="'.$image->caption.'"></a></div>';
	}
	}

	//special view output with an url segment...
if ($seg1) { 
	// get the image in the correspondent position:
	$index = $input->$seg1;
	$image = $page->images->index($index);
	
	// Link zum vorigen Bild:
	echo '<a href="'.$images->getPrev($images->$seg1).'?order='.$session->get($order).'"><img src="'.$config->urls->site.'templates/styles/links.gif"  title="voriges Bild"></a> ';
	
	// Link zur Thumbnail-Seite:
	echo '<a href="'.$page->url.'?order='.$session->get($order).'"><img src="'.$config->urls->site.'templates/styles/index.gif" title="zurück zur Übersicht"></a> ';
	
	// Link zum nächsten Bild:
	echo '<a href="'.$images->getNext($images->$seg1).'?order='.$session->get($order).'"><img src="'.$config->urls->site.'templates/styles/rechts.gif" title="nächstes Bild"></a><br />'; 
	
	// Bild zeigen:
	echo '<img class="shadow" src="'.$images->url . $seg1.'" alt="'.$images->$seg1->description.'" title="'.$images->$seg1->description.'">';

	// Textfelder zu den Bildern anzeigen:
	echo '<h3>'.$images->$seg1->caption.'</h3>';
	echo '<p>'. $images->$seg1->description. '<br />'.$images->$seg1->name_1.'   '.$images->$seg1->name_2.'</p>';
	}
?>
</div><!-- end content -->
<?php include('./_foot.php'); // include footer markup ?>

If anyone knows to make it better, I'd like to hear about ...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...