Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
#253 2021-03-20 16:56:18
Re: smd_xml : extract data from XML feeds
etc wrote #329097:
Certainly too late, but for the record:
<txp:etc_query url="https://vimeo.com/api/oembed.json?url=http%3A//vimeo.com/336049258" query="." markup="json">...
Not as late as I am on this one. I have just noticed it.
Thanks so much, the snippet does work!
Here is my first effort.
<txp:etc_query url="https://vimeo.com/api/oembed.json?url=http%3A//vimeo.com/336049258" query="." markup="json">
<img src="{thumbnail_url?}" width="{thumbnail_width?}" height="{thumbnail_height?}" class="my classes" />
{description?}
</txp:etc_query>
The problem now is figuring out how to load high res images which do not appear to be supported with their default OEmbed.
Yiannis
——————————
NeMe | hblack.art | EMAP | A Sea change | Toolkit of Care
I do my best editing after I click on the submit button.
Offline
#254 2022-03-15 14:17:06
Re: smd_xml : extract data from XML feeds
I have this xml feed and would like to extract the <content>
node, but only the first one with attribute type="text"
.
I have tried this snippet
<txp:smd_xml data="https://itunes.apple.com/it/rss/customerreviews/page=1/id=1226931245/sortby=mostrecent/xml" record="entry" fields="title, content"><dt>{title}</dt><dd>{content}</dd></txp:smd_xml>
but as expected it concatenates both <content>
nodes and concat="0"
is useless for my needs.
I guess the match
attribute might help, but unfortunately I found no examples. Will you please help me fix my snippet?
Thanks.
Offline
#255 2022-03-15 18:00:31
Re: smd_xml : extract data from XML feeds
You’ll require a trick. I’d use ontagstart
and ontagend
so that you can check the attribute value and only output it if it matches text
. So tweak your smd_xml tag like this:
<txp:smd_xml data="https://itunes.apple.com/it/rss/customerreviews/page=1/id=1226931245/sortby=mostrecent/xml" record="entry" fields="title, content, content|type" ontagstart="filtertext|content" ontagend="showtext|content" />
A few things to note:
- It’s now a self-closing tag.
- You pull out the
content
tag twice: once for the full node data, and once for just the attribute name. ontagstart
then says to call a Form calledfiltertext
every time you encounter thecontent
tag. This will set a variable that contains the content attribute’stype
.ontagend
then says to call a Form calledshowtext
every time you encounter thecontent
tag. This will test the variable made infiltertext
and only output your content if it istext
.
So your filtertext
form would look like this:
<txp:variable name="thisfilter">{content|type}</txp:variable>
And your showtext
form would be:
<txp:if_variable name="thisfilter" value="text">
<dt>{title}</dt><dd>{content}</dd>
</txp:if_variable>
That should do the trick. Bit of a hack, but it’ll work. You can call the forms anything you like, just change their names in your smd_xml tag.
If that’s too convoluted, try the etc_query plugin, which will be a lot more compact, albeit you’ll need to have a rudimentary understanding of XSL to filter out the nodes you want.
Hope that helps.
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
#256 2022-03-15 20:06:57
Re: smd_xml : extract data from XML feeds
Thank you, works like a charm.
Please one more thing if you can: I have tweaked smd_xml tag so that now it looks like this
fields="title, content, author->name, content|type"
and showtext
form looks like this
<txp:if_variable name="thisfilter" value="text">
<dt>{title}<br />{author->name}</dt><dd>{content}</dd>
</txp:if_variable>
The smd_xml tag breaks. What am I doing wrong?
Thanks.
Offline
#257 2022-03-15 20:51:37
Re: smd_xml : extract data from XML feeds
Ah, this is subtle.
You have two things going on here. Firstly, you have correctly requested author->name
– i.e. name beneath author – in the field
attribute, but when you come to display it, the node name is only {name}
. No distinction is made of the hierarchy when it comes to output.
Secondly, since you’re now using the plugin as a single (not container) tag, ontagstart
and ontagend
process their content immediately as soon as the nominated tag is encountered (at their start or end, respectively) when the feed is being parsed.
Look at the structure of your data feed and notice that the <content>
node you are using as a trigger comes before the author
node. This means that at the moment the ontagend
form is invoked – when the first <content>
tag ends – the author name is unknown; it hasn’t been read yet.
So you’ll need to go back to your <txp:smd_xml>
tag and tweak your ontagend
so it triggers when the author
tag is done:
ontagend="showtext|author"
That should fix it.
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
#258 2022-03-16 07:50:38
Re: smd_xml : extract data from XML feeds
Thanks.
Unfortunately smd_xml tag is still broken.
I have tweaked it so that
ontagend="showtext|author"
and showtext
form now looks like this
<txp:if_variable name="thisfilter" value="text">
<dt>{title}<br />{name}</dt><dd>{content}</dd>
</txp:if_variable>
but to no avail.
I have turned on debug mode, but no error message appears on the page.
Seems like extracting and outputting the author’s name is causing the issue. Any idea how to fix it?
Thanks.
Offline
#259 2022-03-16 07:55:35
Re: smd_xml : extract data from XML feeds
Weird. It worked for me using your exact setup. I’ll have to look later.
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
#260 2022-03-16 11:48:18
Re: smd_xml : extract data from XML feeds
No need for you to take a look. It was a Textile issue. Fixed it and now it’s working fine. Thanks.
Last edited by gilibaus (2022-03-16 11:48:58)
Offline
#261 2022-03-17 14:34:57
Re: smd_xml : extract data from XML feeds
From a syntax point of view, how do I handle replacement tags – in this case {im:rating} – in a javascript snippet? In my showtext
form I have this code:
<script type="text/javascript">
...
var val = {im:rating};
...
</script>
and it does not seem to work. I guess brackets are the culprit, but I cannot find a solution. Thanks for any help.
Offline
#262 2022-03-17 14:55:19
Re: smd_xml : extract data from XML feeds
Does it work if you double or single quote the value?
var val = "{im:rating}";
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
#263 2022-03-17 17:51:48
Re: smd_xml : extract data from XML feeds
Unfortunately no. In the xml feed, im:rating is an integer number between 1 and 5.
Offline
#264 2022-03-17 20:12:11
Re: smd_xml : extract data from XML feeds
gilibaus wrote #332933:
From a syntax point of view, how do I handle replacement tags – in this case {im:rating} – in a javascript snippet? In my
showtext
form I have this code:
var val = {im:rating};
Long shot guess: Does {im:rating}
work elsewhere outside the javascript block, i.e. will it output to the page on its own? If so, maybe try putting that in a txp:variable and then using the txp:variable in the javascript block? If not, your problem may lie elsewhere.
TXP Builders – finely-crafted code, design and txp
Offline