xen:link canonical not returning full URL - advise please

skicomau

Active member
#1
Using the following in template ad_below_content returns only the base url for all pages.

Code:
<div class="OUTBRAIN" data-widget-id="TF_6" data-src="{xen:link 'canonical:threads', $thread}" data-ob-template="Ski.com.au" ></div>
result

Code:
<div class="OUTBRAIN" data-widget-id="TF_6" data-src="http://forums.ski.com.au/xf/threads/" data-ob-template="Ski.com.au" ></div>
I'm thinking that thread data is not being passed

any advise appreciated.

thanks
 

Sim

Well-known member
#3
Using the following in template ad_below_content returns only the base url for all pages.
Don't forget that ad_below_content is a page-container level template and isn't specific to threads.

If you're viewing anything other than a thread (eg forum list or forum view), there won't be any thread data.

Of course, if you're only trying to show it on thread pages with a template conditional, that's fine.
 

skicomau

Active member
#4
Yeah this is most likely it.

If you edit the thread_view template and add anywhere:

Code:
<xen:container var="$thread" value="{$thread}" />
That should make the $thread bar available there.
ooohhh

thank you, it felt so promising, but unfortunately did not work.

What I can't figure is this;

thread_view already has 'xen:link canonical:threads' in it twice, once for the canonical link, and once to set as a var for the open_graph_meta template


Code:
<xen:container var="$head.canonical">
    <link rel="canonical" href="{xen:link 'canonical:threads', $thread, 'page={$page}'}" /></xen:container>
<xen:container var="$head.description">
    <meta name="description" content="{xen:helper snippet, $firstPost.message, 155}" /></xen:container>
<xen:container var="$head.openGraph"><xen:include template="open_graph_meta">
        <xen:set var="$url">{xen:link 'canonical:threads', $thread}</xen:set>
They both parse fine, so it must be something to do with where in the tree ad_below_content finds itself.
 

skicomau

Active member
#5
Don't forget that ad_below_content is a page-container level template and isn't specific to threads.

If you're viewing anything other than a thread (eg forum list or forum view), there won't be any thread data.

Of course, if you're only trying to show it on thread pages with a template conditional, that's fine.
yep, thank you, figured that and was fine with it. Not important for list view etc (though ideally if I was actually skilled I would make it conditional from the get go).
 

Chris D

XenForo developer
Staff member
#6
I forgot that xen:container doesn't quite work the same as xen:set which allows non-string values to be passed in.

Try this instead:

Create a new template, named "ad_below_content_thread" with the code from your first post.

Edit thread_view and add this anywhere:
Code:
<xen:container var="$adBelowContentThread">
    <xen:include template="ad_below_content_thread" />
</xen:container>
Edit ad_below_content and add this:
Code:
{xen:raw $adBelowContentThread}
That should work.
 

Chris D

XenForo developer
Staff member
#8
Actually, the include template line probably confuses this a bit, it's not really necessary.

You wouldn't actually need the new template.

You could just do:

Code:
<xen:container var="$adBelowContentThread">
    <div class="OUTBRAIN" data-widget-id="TF_6" data-src="{xen:link 'canonical:threads', $thread}" data-ob-template="Ski.com.au" ></div>
</xen:container>
Then this bit remaints the same:
Edit ad_below_content and add this:
Code:
{xen:raw $adBelowContentThread}
 
Top