Keyboard Penman
Keyboard Penman

Reputation: 329

How to use the output of a tiddlywiki widget itself as a value for another wikitext expression?

Currently I'm trying to create a macro. The macro will be used within a $list widget which will cycle through a collection of tiddlers (chosen as per certain filter criteria which themselves aren't relevant here).

Within the above $list widget, for each tiddler, the macro will go through all of the fields of the tiddler that have a certain prefix (which is "link_"). These fields contain as their value internet URLs.

Not only do I wish to display these URLs (for each tiddler) as a list, I wish them to act as hyperlinks to said URLs.

Now so far the below macro has worked for the moment:

\define myMacro(prefix:"")
<$list filter="[fields[]prefix[$prefix$]sort[title]]" variable="fieldName">

<$transclude field=<<fieldName>>/>

</$list>
\end

What the above does is simply print the value (the URL) of that field while making sure it also acts as a hyperlink to that particular URL.

BUT

I wish to improve this further. Instead of the text of those links being the link itself, I want it to be a custom text.

For eg:

https://en.wikipedia.org/wiki/Computer_programming

vs.

Computer Programming (hyperlink to the same page but with custom hyperlink text)

But doing the above is seemingly impossible with the above $transclude method unless there is a way of using the output of a widget itself as a value.

I've already checked something direct like:

[[Custom link name|<$transclude field=<<fieldName>>/>]]

or

<a href=<$transclude field=<<fieldName>>/> >Custom link name</a>

Doesn't work.

I've tried other methods too but they don't work. How do they not work?

Let's say there is a variable in that particular tiddler called list_1 and it's value is https://en.wikipedia.org/wiki/Computer_programming. I wish to use the https://en.wikipedia.org/wiki/Computer_programming as the href value of an <a> tag.

But with all the methods I've tried, at best I can access the value list_1 itself via <<fieldName>>.

Only the $transclude method itself allows me to use the value of list_1 itself (ie https://en.wikipedia.org/wiki/Computer_programming), but it doesn't allow you AFAIK to use it as a value in an another wikitext expression.

So how do I achieve my aforementioned objective? Is there a way to use the output of a widget itself as a value for another wikitext expression or is there some other way to accomplish my objective?

Thanks in advance.

Upvotes: 1

Views: 840

Answers (1)

Jens
Jens

Reputation: 2627

not sure I understand your goal but this is definately wrong:

<a href=<$transclude field=<<fieldName>>/> >Custom link name</a>

you should use the <$link widget to create links and a filter for attribute values

<$link to={{{[[title]get<fieldName>]}}}>Custom link name</$link>

or

<$link to={{{[<variableWithTitle>get<fieldName>]}}}>Custom link name</$link>

Edit: added title to filter

Upvotes: 2

Related Questions