Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
#25 2010-12-07 04:49:05
- marshieparshie
- New Member
- Registered: 2010-12-06
- Posts: 3
Re: smd_horizon: What's that coming over the hill...
smd_if_start/end aren’t working for me. the most basic code i tried is:
<txp:smd_if_start type="category2">test</txp:smd_if_start>
this goes at the top of the article. the first article in category2 does not have “test” at the top. no article has it. in debugging i get
[<txp:smd_if_start type="category2">: false]
the article viewed is the first article posted, so it must be the start of category2, yes? there is another bit of code that checks if the article has a “category2” value, and it works fine.
Last edited by marshieparshie (2010-12-07 04:49:59)
Offline
Re: smd_horizon: What's that coming over the hill...
Hi,
I’m trying to get prev and next to work only within a category as well. First the plug in works in 4.03 right? The documentation, if i understand it correctly, says the current category is on by default. But when I use the smd_prev and next tags they pull up articles from all categories in that section.
Is there a way I can get smd prev next to only pull up articles in the current category and if so can i do it without using if category?
JanDW’s post looks interesting but I have multiple categories in each section of this site i’m working on.
Here’s the code im using, current is just a variable for the current category. any advice appreciated. Thanks.
<ul id="previous-next">
<li id="n-previous">
<txp:if_individual_article>
<txp:smd_prev category="CURRENT"><txp:link_to_prev>« Previous</txp:link_to_prev></txp:smd_prev>
<txp:else />
<div class="older"><txp:older>Older Projects »</txp:older></older>
</txp:if_individual_article>
</li>
<li id="n-next">
<txp:if_individual_article>
<txp:smd_next category="current"><txp:link_to_next>Next »</txp:link_to_next></txp:smd_next>
<txp:else />
<div class="newer"><txp:newer>«Newer Projects </txp:newer></div>
</txp:if_individual_article>
</li>
</ul> <!— end previous-next —>
its a bad hen that wont scratch itself.
photogallery
Offline
Re: smd_horizon: What's that coming over the hill...
kvnmcwebn wrote:
First the plug in works in 4.03 right?
4.3.0 yes; 4.0.3 not so sure.
The documentation… says the current category is on by default.
The documentation probably sucks. It’s true that it defaults to the current category but only if you are viewing a category via the URL, e.g. site.com/category/some-cat
. In that instance it will only navigate between all the articles with category1 or category2 set to some-cat
. If you’re viewing a normal individual article then it’ll only be using the section as a filter and will thus view all articles, exactly like the built-in tags do.
If you want to only navigate through the current category(ies) that belong to the currently viewed article you’ll need to populate the category
attribute of smd_next/smd_prev. You’ll probably need to be clever here, but watch out for pitfalls. Here’s an approach that seems on the surface to work, assuming that category1 is always populated and category2 might be populated:
<txp:smd_next
category='<txp:category1 />
<txp:if_article_category number="2">,<txp:category2/></txp:if_article_category>
'>
<txp:link_to_next>Next »</txp:link_to_next>
</txp:smd_next>
And the same for smd_prev of course. That tells it to use the current category1,category2 as filters so you’ll navigate between all articles in the current seciton that have either of the categories in the currently viewed article. Sounds good, right? But there’s a catch.
You probably won’t want to do this in real life because it means your nav gets funky if you move to the next article and it has a different pair of categories from the one that preceded it. It will always share one of them of course. Best way to demonstrate this is by example:
Article 1: cat1 = foo, cat2 = bar
Article 2: cat1 = foo, cat2 = baz
Article 3: cat1 = jim, cat2 = bob
Article 4: cat1 = jim, cat2 = baz
Starting at Article 1 and clicking Next through them, you would then see this sequence:
Article 1: Prev=empty, Next=Article2 (because foo is the same as the current cat1)
Article 2: Prev=Article1, Next=Article 4 (because baz is the same as the current cat2)
Article 4: Prev=Article3 (because jim is the same as the current cat1), Next: empty
So you can see that the next/prev changes depending on the combination of cat1 and cat2, which is pretty weird for your visitors. That’s why the best way to use smd_horizon is to use it when you are viewing a category list via site.com/category/foo
, otherwise you should probably pick one category (1 or 2) and force the navigation to use that. If you don’t — and you try to use both categories at once — things get very confusing very quickly!
Hope that helps and hasn’t confused you even further :-)
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Txp Builders – finely-crafted code, design and Txp
Offline
Re: smd_horizon: What's that coming over the hill...
thanks. ha ha I am confused further but it’s probably not your fault.
I only want to navigate through one category at a time and the category will be in the url. But there are up to 5 categories per section so if I don’t need to use if_category it will save a lot of code. Maybe all i need is this:
<ul id="previous-next">
<li id="n-previous">
<txp:if_individual_article>
<txp:smd_prev category='<txp:category1 />' ><txp:link_to_prev>« Previous</txp:link_to_prev></txp:smd_prev>
<txp:else />
<div class="older"><txp:older>Older Projects »</txp:older></older>
</txp:if_individual_article>
</li>
<li id="n-next">
<txp:if_individual_article>
<txp:smd_next category='<txp:category1 />'><txp:link_to_next>Next »</txp:link_to_next></txp:smd_next>
<txp:else />
<div class="newer"><txp:newer>«Newer Projects </txp:newer></div>
</txp:if_individual_article>
</li>
But actually i can’t test it because I see what the problem is that was making me wonder if the plug in wasn’t working. I’m feel a bit of an idiot. Actually when I select one of the articles from the http://www.url.eu/section/?c=category
the url changes back to
http://www.url.eu/section/article
hmm. so i’m not even sure how i wold get to the previous and next nav while staying in the current category….
guess i need to think some more, it would be messy to use sections for the categories, really messy so i hope i can come up with something.
its a bad hen that wont scratch itself.
photogallery
Offline
Re: smd_horizon: What's that coming over the hill...
kvnmcwebn wrote:
I only want to navigate through one category at a time and the category will be in the url. But there are up to 5 categories per section so if I don’t need to use if_category it will save a lot of code.
Hmmm, maybe the issue you’re hitting is the sort order (datasort
attribute)? It should work as you describe with the code you specified. If you set debug="1"
on you might get a clearer picture of what’s happening.
Can I just recap what you’re trying to achieve please? You want someone to see a list of articles in a particular category, vis-a-vis at URL site.com/category/trumpton you’ll get the following article list:
Huw
Pew
Barney McGrew
Cuthbert
Dibble
Grub
Those articles are sorted by Posted DESC and are listed where either cat1 OR cat2 contain ‘trumpton’. Now if you click on one of those, say ‘Cuthbert’, you’ll be transported to site/com/section/Cuthbert and you want smd_horizon to maintain the above order and have next=Barney McGrew, and Prev=Dibble?
In which case you may have to specify datasort="Posted,Category1"
for your smd_prev and smd_next tags. By default it sorts by Section, then Category1, then Category2, then Posted date which is not the same as TXP’s built-in sorting. Ideally, for seamless integration, you want the sort orders to match when navigating in this manner.
See how far you get by experimenting with the sort order. I should probably include an example like this in the help because it throws up a few subtleties on the way smd_horizon works. Sorry for the hair-pulling behaviour of the plugin.
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Txp Builders – finely-crafted code, design and Txp
Offline
Re: smd_horizon: What's that coming over the hill...
>>Those articles are sorted by Posted DESC and are listed where either cat1 OR cat2 contain ‘trumpton’. Now if you click on one of those, say ‘Cuthbert’, you’ll be transported to site/com/section/Cuthbert and you want smd_horizon to maintain the above order and have next=Barney McGrew, and Prev=Dibble?
nope :)
I’m working on a site that’s basically a portfolio. It has six sections a load of images in each section.
The sections contain categories to further organize the photos. So the section landing displays all the thumbs and each category displays the appropriate portion of them. Everything is working fine until you drill down to an individual article in a category page. Then previous and next navigates to the previous or next article in the Main level section.
So I guess the problem here is I have three levels. Your above example is only dealing with two as far as I can tell.
section: prev next works fine
http://www.graphx.macdesign.eu/signs/
category: prev next works the same as on the above but should be limited to the thumbs in that category page.
http://www.graphx.macdesign.eu/signs/?c=exhibit-signs
Last edited by kvnmcwebn (2011-03-05 21:10:42)
its a bad hen that wont scratch itself.
photogallery
Offline
Re: smd_horizon: What's that coming over the hill...
I’m starting to think the way to go might be make all the category pages sections. Although that would mean a lot more pages and code and would be sloppy. But I don’t see any way to maintain the current category page once an individual article is selected.
its a bad hen that wont scratch itself.
photogallery
Offline
Re: smd_horizon: What's that coming over the hill...
kvnmcwebn wrote:
Everything is working fine until you drill down to an individual article in a category page…. I’m starting to think the way to go might be make all the category pages sections.
We’re nowhere near ready to throw the towel in yet!
Thanks for the link to your site. That’s helped a lot. So the issue is that the site ‘forgets’ the category when you drill down. So all we need to do is help it remember. Perhaps on your list page, do something like this:
<txp:if_category>
<h3 class="entry-title"><a href="<txp:permlink />?cat=<txp:category />"><txp:title /></a></h3>
<txp:else />
<h3 class="entry-title"><txp:permlink><txp:title /></txp:permlink></h3>
</txp:if_category>
And then later in the page where you have the smd_prev/smd_next, read that variable in using <txp:adi_gps />
and then use it:
<txp:smd_prev category='<txp:if_variable name="cat"><txp:variable name="cat" /></txp:if_variable>' >
<txp:smd_link_to_prev urlvars="cat">« Previous</txp:smd_link_to_prev>
</txp:smd_prev>
Notice I’ve used <txp:smd_link_to_prev>
because we want to use the urlvars
attribute to preserve the ?cat
URL var in the links.
Through judicial use of the datasort
atribute as I mentioned above you should be able to limit the navigation to the given category.
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Txp Builders – finely-crafted code, design and Txp
Offline
Re: smd_horizon: What's that coming over the hill...
>>…So the issue is that the site ‘forgets’ the category when you drill down. So all we need to do is help it remember…
:) I like that.
Well I’ve got my homework now. Thanks a mill Steph.
its a bad hen that wont scratch itself.
photogallery
Offline
Re: smd_horizon: What's that coming over the hill...
Steph before moving on to step two using <txp:adi_gps /> is this how the individual article category urls should look?:
http://www.graphx.macdesign.eu/signs/signs-example-14?cat=business_signs
thanks
its a bad hen that wont scratch itself.
photogallery
Offline
Re: smd_horizon: What's that coming over the hill...
kvnmcwebn wrote:
http://www.graphx.macdesign.eu/signs/signs-example-14?cat=business_signs
That should do the trick, yes. I just chose cat=
because we can’t use c=
as it’s used internally by TXP. As long as that value is passed forward to each page that originates from a category list you can use that variable for whatever purpose you see fit. Just have to make sure that you aren’t passing any more messy vars about the place or you might end up making ?cat=business_signs?m=2
, which ain’t valid.
The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.
Txp Builders – finely-crafted code, design and Txp
Offline
Re: smd_horizon: What's that coming over the hill...
Well it’s passing the variable and keeping it for each article in the category but I’m not sure how the adi_gps is supposed to pass the variable to the if variable statement:
From what i read in the adi_gps docs it looks like its all done in the code you posted right:
<txp:smd_prev category='<txp:if_variable name="cat"><txp:variable name="cat" /></txp:if_variable>' >
<txp:smd_link_to_prev urlvars="cat">« Previous</txp:smd_link_to_prev>
</txp:smd_prev>
I mean that actually gets the var as well right?
its a bad hen that wont scratch itself.
photogallery
Offline