From: Tac T. <ta...@gm...> - 2013-04-16 22:47:00
|
Thanks, Joshua for that solution and the explanation. Like a few other people at the conference in NYC last month, I've got a lot of data I'm trying to figure out how to get into SMW, but moving from relational databases to SMW is a bit of a mindset shift. Great to get advice from the experts. I'll look at #switch as well, that might be a solution for me when the output of a property is a limited set of strings. Tac On Tue, Apr 16, 2013 at 6:39 PM, Joshua TAYLOR <jos...@gm...>wrote: > On Tue, Apr 16, 2013 at 6:25 PM, Tac Tacelosky <ta...@gm...> wrote: > > On Tue, Apr 16, 2013 at 5:34 PM, Joshua TAYLOR <jos...@gm...> > > wrote: > >> > >> On Tue, Apr 16, 2013 at 3:54 PM, Tac Tacelosky <ta...@gm...> > wrote: > >> > How do I check a property value in an ifeq? > >> > > >> > Photo Location: [[HasLocation::Exterior]] > >> > > >> > If this page is tagged with Exterior, I want to call an Exterior > >> > Template. > >> > I'm grasping here to figure out how to test the HasLocation property: > >> > > >> > {{#ifeq: ?HasLocation | Exterior | {{Exterior}} }} > >> > {{#ifeq: {{#show:{{{ PAGENAME }}} | ?HasLocation }} | Exterior | > >> > {{Exterior}} }} > >> > {{#ifeq: {{#show:{{ PAGENAME }} | ?HasLocation }} | Exterior | > >> > {{Exterior}} > >> > }} > >> > >> This is an interesting question, so I decided to play a bit with it. > >> I think you've got the right approach with the #show: query, but since > >> you're comparing with a string (Exterior), you may need to convert the > >> value of ?HasLocation to a string using ?HasLocation#. I've got the > >> following on a sandbox page, and it displays "yes". Is this what you > >> were looking for? > >> > >> [[has location::Exterior]] > >> {{#ifeq: {{#show: {{FULLPAGENAME}} | ?has location# }} | Exterior | yes > | > >> no }} > > > > I got it working with > > > > {{#ifeq: {{{ PAGENAME }}} | ?HasLocation | Exterior | {{Exterior1}} }} > > > > But David's solution seems better. I had read about format=template and > > template=, but hadn't thought about using it for this problem, since I > was > > trying to avoid a ul/li or table, but I guess format=template doesn't > > surround the output with anything except what the the template generates. > > > > Joshua, what does the # at the end do? > > I didn't see a response from a David, so I'm not sure what that > solution was. The # at the end of the property value makes it an > unformatted printout [1]. I didn't know what type your property > ?HasLocation had (e.g., whether it has Pages as values, or strings, or > numbers, or what). In the sandbox example that I used, the ?has > location property had the (default) type page, so the value that that > #ifeq: compared was the actual link text (the wikitext [[Exterior]], I > presume, but I'm not certain) which was not regarded as equal to the > string Exterior. By using the plain printout, I got the string > Exterior which, of course, is equal to the string Exterior. I didn't > show it in my example, but I did confirm that the then and else blocks > of #ifeq: could be template calls. You could probably use this same > technique with #switch:. I may end up using this on one of my wikis > before too long, actually, so your question was well timed for me. > > //JT > > [1] > http://semantic-mediawiki.org/wiki/Help:Displaying_information#Plain_.28unformatted.29_printouts > -- > Joshua Taylor, http://www.cs.rpi.edu/~tayloj/ > |