2011-12-23 10 views
0

私はnav.phpを持っています。これは現在のページを決定し、クラスをli要素に適用します。これはコード:SmartyへのPHP、不明

<?php 
$page = basename($_SERVER['PHP_SELF']); 
$page = substr($page, 0, -4); 
//echo $page; 
?> 

<ul> 
    <?php if($page == 'dash'){echo '<li class="current"><a href="dash.php">Dashboard</a></li>'; } else {echo '<li><a href="dash.php">Dashboard</a></li>';} ?> 
    <?php if($page == 'boot'){echo '<li class="current"><a href="boot.php">Boot</a></li>'; } else {echo '<li><a href="boot.php">Boot</a></li>';} ?> 
    <?php if($page == 'account'){echo '<li class="current"><a href="account.php">Account</a></li>'; } else {echo '<li><a href="account.php">Account</a></li>';} ?> 
    <?php if($page == 'tools'){echo '<li class="current"><a href="tools.php">Tools</a></li>'; } else {echo '<li><a href="tools.php">Tools</a></li>';} ?> 
    <?php if($page == 'news'){echo '<li class="current"><a href="bews.php">News</a></li>'; } else {echo '<li><a href="news.php">News</a></li>';} ?> 
    <?php if($page == 'contact'){echo '<li class="current"><a href="contact.php">Contact</a></li>'; } else {echo '<li><a href="contact.php">Contact</a></li>';} ?> 
    <?php if($page == 'logout'){echo '<li class="current"><a href="logout.php">Logout</a></li>'; } else {echo '<li><a href="logout.php">Logout</a></li>';} ?> 


</ul> 

スマートに変換する必要があります - ご協力ありがとうございます。

解決済み、私だけばかげている!単に

<ul> 
    <li class="{if $page == 'dash'}current{else}nav{/if}"><a href="dash.php">Dash</a></li> 
    <li class="{if $page == 'boot'}current{else}nav{/if}"><a href="boot.php">Boot</a></li> 
    <li class="{if $page == 'account'}current{else}nav{/if}"><a href="account.php">Account</a></li> 
    <li class="{if $page == 'tools'}current{else}nav{/if}"><a href="tools.php">Tools</a></li> 
    <li class="{if $page == 'news'}current{else}nav{/if}"><a href="news.php">News</a></li> 
    <li class="{if $page == 'contact'}current{else}nav{/if}"><a href="contact.php">Contact</a></li> 
    <li class="{if $page == 'logout'}current{else}nav{/if}"><a href="logout.php">Logout</a></li> 
</ul> 

答えて

1

、PHPファイル:

<?php 
    $page = basename($_SERVER['PHP_SELF']); 
    $page = substr($page, 0, -4); 
    $smarty->assign('page', $page); 
?> 

テンプレートTPLファイル:

<ul> 
    <li {if ($page == 'dash')}class="current"{/if}><a href="dash.php">Dashboard</a></li> 
    <li {if ($page == 'boot')}class="current"{/if}><a href="boot.php">Boot</a></li> 
    etc... 
</ul> 

あなたの疑問は何でしたか?

+0

を男ねえ、私はそれが主だった、hosestであることを知りませんがそれが現在ではない場合は、しかし、私はあなたがクラス全体= "現在"の中に置くことによってそれを解決することを参照してください。私はすでにそれを解決しました、私は下の私の答えを投稿しますが、あなたの答えに感謝! – Prash

0

DRYの原則について聞いたことがありますか?

次の操作を行うことができSmarty3で

{$_pages = [ 
    'dash' => 'Dash', 
    'boot' => 'Boot', 
    'account' => 'Acccount', 
    'tools' => 'Tools', 
    'news' => 'News', 
    'contact' => 'Contact', 
    'logout' => 'Logout' 
]} 
<ul> 
    {foreach $_pages as $key => $name} 
     <li class="{if $page == $key}current{else}nav{/if}"><a href="{$key}.php">{$name}</a></li> 
    {/foreach} 
</ul> 

や、構造も、それを許可する場合:

{$_pages = [ 'Dash', 'Boot', 'Acccount', 'Tools', 'News', 'Contact', 'Logout' ]} 
<ul> 
    {foreach $_pages as $name} 
     {$key = {$name|lower}} 
     <li class="{if $page == $key}current{else}nav{/if}"><a href="{$key}.php">{$name}</a></li> 
    {/foreach} 
</ul> 
関連する問題