Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Display content based on URL snippet
Having a bad head day – can’t figure out what must be a simple problem.
I have this code in a gallery page, which pulls out a couple of Flickr sets, and displays thumbnails:
<txp:if_section name="gallery">
<txp:vdh_flickr_thumbnails nsid="123@N05" thumbnails_form="flickr_gallery_view" open="lightbox" set="1234" />
<txp:vdh_flickr_thumbnails nsid="123@N05" thumbnails_form="flickr_gallery_view" open="lightbox" set="12345" />
</txp:if_section>
That works fine. What I would like to though is enter URL’s like so in some articles: http://domain.com/gallery/?set=123456
The goal is this:
- If accessing the /gallery page, show the two sets as in the code above
- If accessing /gallery/?set=123456, display only the set called in the URL, and not the other two sets
Must be easy, but I can’t figure it out today. With the use of txp:variable perhaps? Have not tried the new 4.07 tags much yet..
Offline
Re: Display content based on URL snippet
This was traditionally something for chs_if_urlvar. I think a few others have since surfaced, including smd_if/smd_var and … another one I saw released only recently but that I can’t find now.
Last edited by jakob (2008-12-07 12:06:15)
TXP Builders – finely-crafted code, design and txp
Offline
Re: Display content based on URL snippet
Thanks Julian. I have started to play around with txp:variables for the first time, and came across adi_gps. Seems like we can be in business ;-)
So far, I have this code at the top of the page:
<txp:variable name="from_article" value='<txp:adi_gps />' />
And this further below:
<txp:if_section name="test">
<txp:if_variable name="from_article">
<txp:vdh_flickr nsid="12345@N05" thumbnails_form="flickr_gallery_view" open="lightbox" set="12345" />
</txp:if_variable>
</txp:if_section>
I notice you can’t put an <txp:else />
in the middle of the if_variable conditional? At least, it does not work in my testing.
Question: How to assign the from_article variable to the Flickr set name? Does not work in testing.
Last edited by jstubbs (2008-12-07 01:05:34)
Offline
#4 2008-12-07 00:27:39
- els
- Moderator
- From: The Netherlands
- Registered: 2004-06-06
- Posts: 7,458
Re: Display content based on URL snippet
jstubbs wrote:
I notice you can’t put an
<txp:else />
in the middle of the if_variable conditional? At least, it does not work in my testing.
Yes you can. But with this line: <txp:if_variable name="from_article">
you are checking if the variable exists. Even if the value is empty, the variable still exists. So this condition will always return true. If you want to check if it has a value, you can do this:
<txp:if_variable name="from_article" value="">
<txp:vdh_flickr nsid="21914846@N05" thumbnails_form="flickr_gallery_view" open="lightbox" set="72157603482231616" />
<txp:else />
<txp:vdh_flickr nsid="21914846@N05" thumbnails_form="flickr_gallery_view" open="lightbox" set='<txp:variable name="from_article" />' />
</txp:if_variable>
Offline
Re: Display content based on URL snippet
Sigh. Not quite working :-(
<txp:if_section name="test">
<txp:if_variable name="from_article" value="">
<txp:vdh_flickr nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set='<txp:variable name="from_article" />' />
<txp:else />
<txp:vdh_flickr_thumbnails nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set="12345" />
<txp:vdh_flickr_thumbnails nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set="54321" />
</txp:if_variable>
</txp:if_section>
If there is a variable, I get the “failed to connect to Flickr” error. If no variable, I get ALL Flickr sets displaying, rathe than just the two. Very odd!
Offline
#6 2008-12-07 02:34:48
- els
- Moderator
- From: The Netherlands
- Registered: 2004-06-06
- Posts: 7,458
Re: Display content based on URL snippet
jstubbs wrote:
Sigh. Not quite working :-(
Just shuffle your code around a bit :)
<txp:if_section name="test">
<txp:if_variable name="from_article" value="">
// the value is empty == URL: /gallery/
<txp:vdh_flickr_thumbnails nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set="12345" />
<txp:vdh_flickr_thumbnails nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set="54321" />
<txp:else />
// the value is not empty == URL: /gallery/?set=something
<txp:vdh_flickr nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set='<txp:variable name="from_article" />' />
</txp:if_variable>
</txp:if_section>
Offline
Re: Display content based on URL snippet
Half way there! Your code shuffling almost works…but not quite.
If I visit /test, I get “the value is empty == URL: /test/” and the two sets display correctly.
If I visit /test/?set=12345—-, I get the same output – “the value is empty == URL: /test/” and the two sets….
The variable is set at the top of the page like so:
<txp:variable name="from_article" value='<txp:adi_gps />' />
.
Reckon its going wrong there?
Offline
Re: Display content based on URL snippet
I fixed it! Here is what I have now:
Top of page, I changed the variable name to set, which reflects the actual variable name:
<txp:variable name="set" value='<txp:adi_gps />' />
Then, to source the sets according to the URL:
<txp:if_section name="test">
<txp:adi_gps name="set" list="1" />
<txp:if_variable name="set" value="">
the value is empty == URL: /test/
<txp:vdh_flickr_thumbnails nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set="1234" />
<txp:vdh_flickr_thumbnails nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set="12345" />
<txp:else />
the value is not empty == URL: /test/?set=something
<txp:vdh_flickr nsid="123@N05" thumbnails_form="flickr_galleri_view" open="lightbox" set='<txp:variable name="set" />' />
</txp:if_variable>
</txp:if_section>
For anyone else reading, the key part was discovering that adi_gps has a list attribute for debugging: <txp:adi_gps name="set" list="1" />
. Awesome! Thanks Els!!
Offline
Re: Display content based on URL snippet
… and another one I saw released only recently but that I can’t find now
… and came across adi_gps.
That’s it! Nice write-up on txp tips too.
TXP Builders – finely-crafted code, design and txp
Offline
#10 2008-12-07 14:41:51
- els
- Moderator
- From: The Netherlands
- Registered: 2004-06-06
- Posts: 7,458
Re: Display content based on URL snippet
Ah, now I get it! I thought that <txp:adi_gps />
displayed just the GET variable, but I overlooked that it created the txp variable as well:
<txp:adi_gps name="myvar1" />
- extract a variable called myvar1 from URL, create a TXP variable of the same name and display it’s value.
…which means that this:
<txp:variable name="set" value='<txp:adi_gps />' />
is superfluous and won’t work at all of course. If you still have that on your page, you can remove it.
EDIT: Jonathan, you might want to update your TXP Tip ;)
Last edited by els (2008-12-07 14:54:21)
Offline
Re: Display content based on URL snippet
Sigh! I still don’t totally get this variable stuff, but I guess that’s ok since its my first day playing with it :-)
Can you check the TXP Tip again for veracity?
Offline
#12 2008-12-07 15:48:29
- els
- Moderator
- From: The Netherlands
- Registered: 2004-06-06
- Posts: 7,458
Re: Display content based on URL snippet
It looks very clear to me. I assume you verified that it was OK to remove the first variable tag? ;)
You haven’t chosen the simplest example of the use of the variable tag to begin with, for because of the adi_gps plugin you don’t actually see the variable being set (in the code). But you’ve made it clear in your text that the plugin does that.
I like the way TXP Tips is growing!
Offline