2016-07-21 20 views
0

ホームページのアンカーにスクロールスクロールするナビゲーションリンクと、他のすべてのページの個々のページにリンクするナビゲーションリンクが必要なサイトに取り組んでいます。私はこれを無駄にするための様々な戦術を試みました。私がこれを試みたいくつかの方法があります。URLに基​​づくSmarty設定nav href

URLは.htaccessで作成されます。ホームはリクエストURIを持たないため、サイトのインデックスページです。 PUBLIC_URLが設定ファイルに設定されています。

HTTP_HOSTPUBLIC_URLに等しいかどうかをチェックし、他のページにパラメータが渡されていないことを確認します。

どんなのparamsは(論理的 PUBLIC_URLとして動作しない定数であるため、常にこの場合はfalseを返します)があるかどうかの確認
{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} 

{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} 

処理中のテンプレートに基づいて移動します(論理的には、ナビゲーションは独自のテンプレートファイルに含まれているため機能しません)。

{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} 

リクエストURIが存在しないかどうかを確認してください。まだfalseを返します。

{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} 

私は時間のカップルのために、この上で立ち往生してきた、とGoogle、SO、およびSmartyのフォーラムで私の検索の問い合わせを使い果たしてしまいました。どんな方向にも大変感謝しています。

答えて

0

まあ、それはあなたのホームページにあるときにあなたのPHPファイルでsmartyに変数を渡すことはできません?

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

して、テンプレート内

{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> 
関連する問題