PHP для Smarty, не уверен - PullRequest
       3

PHP для Smarty, не уверен

0 голосов
/ 23 декабря 2011

У меня есть nav.php, который определяет текущую страницу и применяет класс к элементу li. Это код:

<?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>

Нужно конвертировать его в Smarty - благодарю за любую помощь.

Решено, я просто глупая!

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

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Просто, 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 голосов
/ 24 декабря 2011

Вы слышали о принципе СУХОЙ ?

В 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>
...