2016-07-21 35 views
0

Ich arbeite an einer Website, die die Nav-Links zum reibungslosen Scrollen zu Ankern auf der Homepage benötigt, und die Nav-Links zu einzelnen Seiten auf allen anderen Seiten verknüpft werden. Ich habe verschiedene Taktiken ausprobiert, um dies ohne Erfolg zu erreichen. Hier sind einige Möglichkeiten, wie ich das versucht habe.Smarty-Einstellung nav href basierend auf URL

URLs werden mit .htaccess erstellt. Home hat keinen Anforderungs-URI, da es sich um die Indexseite der Site handelt. PUBLIC_URL ist in einer Konfigurationsdatei festgelegt.

Überprüfen Sie, ob HTTP_HOST gleich PUBLIC_URL ist und dass keine Parameter für andere Seiten übergeben werden.

{if $smarty.server.HTTP_HOST == $smarty.const.PUBLIC_URL && $smarty.server.REQUEST_URI == ''} 
<a href="#locations">Our Locations <i class="ti-angle-down"></i></a></span> 
{else} 
<a href="{$public_url}locations">Our Locations <i class="ti-angle-down"></i></a></span> 
{/if} 

prüfen, ob es irgendwelche params ist (logisch funktioniert nicht wie PUBLIC_URL eine Konstante ist, und somit wird immer false zurück in diesem Fall).

{if $smarty.const.PUBLIC_URL == ''} 
<a href="#locations">Our Locations <i class="ti-angle-down"></i></a></span> 
{else} 
<a href="{$public_url}locations">Our Locations <i class="ti-angle-down"></i></a></span> 
{/if} 

der Vorlage Gehender Basis aus (logisch funktioniert nicht wie die nav in einem eigenen Template-Datei enthalten ist) verarbeitet werden.

{if $smarty.template == 'home.tpl'} 
<a href="#locations">Our Locations <i class="ti-angle-down"></i></a></span> 
{else} 
<a href="{$public_url}locations">Our Locations <i class="ti-angle-down"></i></a></span> 
{/if} 

Prüfen, ob keine Anfrage-URI vorhanden ist. Gibt immer noch falsch zurück.

{if $smarty.server.REQUEST_URI === ''} 
<a href="#locations">Our Locations <i class="ti-angle-down"></i></a></span> 
{else} 
<a href="{$public_url}locations">Our Locations <i class="ti-angle-down"></i></a></span> 
{/if} 

Ich habe für ein paar Stunden auf diese aufgeklebt, und habe meine Suchanfragen auf Google erschöpft, SO und Foren Smarty. Jede Richtung wird sehr geschätzt.

Antwort

0

Nun, können Sie nicht einfach eine Variable an Smarty in Ihrer PHP-Datei übergeben, wenn es die Homepage ist?

$smarty->assign('this_is_the_home_page',true); 

und dann in der Vorlage

{if $this_is_the_home_page} 
{$url="#locations"} 
{else} 
{$url=$public_url|cat:'locations'} 
{/if} 

<a href="{$url}">Our Locations <i class="ti-angle-down"></i></a></span>