Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
Re: Captions with article_image?
Bloke wrote #324347:
In this instance, I agree it does appear redundant. Not entirely sure what we can do about this, though. We could make the assumption that if you’re wrapping statements in
<txp:if_article_image>that you’re likely to be using the article image inside it.
This is the form post-thumbnail from a project I have been working on.
<txp:evaluate test="images">
<div class="entry__thumb">
<a href="<txp:permlink />" class="entry__thumb-link">
<txp:images id='<txp:custom_field name="article_image" />' >
<img src="<txp:smd_thumbnail type='1x' display='url' />"
srcset="<txp:smd_thumbnail type='1x' form="img-srcset" /> 1x,
<txp:smd_thumbnail type='2x' form="img-srcset" /> 2x"
alt=""
/>
</txp:images>
</a>
</div>
</txp:evaluate>
Based on what we’ve been discussing I guess the id='<txp:custom_field name="article_image" />' is unnecessary since Destry’s example worked without specifying anything.
Or I could remove the <txp:images> code entirely and do this in the article form.
<txp:images>
<txp:output_form form="post-thumbnail" />
</txp:images>
Offline
Re: Captions with article_image?
michaelkpate wrote #324356:
Based on what we’ve been discussing I guess the
id='<txp:custom_field name="article_image" />'is unnecessary since Destry’s example worked without specifying anything.
The answer is… sort of!
If you wrap the entire block, including <txp:evaluate> in <txp:if_article_image> then yes it will work without the id. If, however, you do not wrap the conditional then there’s an outside chance it won’t work. The reason is subtle:
<txp:images> has the auto_detect attribute which defaults to article, category, author. What this means is that – without any other filter attributes to the contrary – it will:
- Look first in the article image field, then if it finds none;
- Will look in the URL to see if there’s an image-based /category list in use, and if it doesn’t find one of those;
- Consider images owned by the author given in the URL /author list, and if it fails to find one of those;
- Return all images in the database.
So, if you put your above code on a page that displays an article that has a missing article_image field, you’ll probably get all images displayed. The id guards against that by skipping the auto_detect feature in lieu of you explicit giving the image to fetch.
tl;dr
If you’re dealing with article images, either:
a) wrap the code in <txp:if_article_image> to avoid nasty surprises of retrieving all images by mistake.
b) specify a filter attribute which overrides the automatic detection of context (i.e. author, category, extension, id, name, realname, size, or thumbnail).
Setting auto_detect="" turns off the feature but will still return all images if no image filter attributes are present. You can also set auto_detect to check for stuff in a different order or to only consider some or all of those automatic contexts.
Last edited by Bloke (2020-07-07 15:52:04)
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
Online