Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Неактивная кнопка в меню на текущей странице
 
 автор: Clocker   (27.10.2005 в 22:05)   письмо автору
 
 

Отыскал интересный класс для вывода навигационной строки, все работает при одном но: если ссылка имеет вид напр. link.php; при ссылке вида ?page=link это не работает.

В качестве описания: Если ссылка в меню указывает на текущую страницу, то ссылка на эту страницу не выводится, т.е.выводится только текст ссылки.

Как сделать чтоб работало?

Вот собственно сам класс

<?php

class MainNav
{
var $buttons = array( 
                            'News'        => '?page=news',
                            'About'        => '?page=about', 
                            'Guestbook' => '?page=guestbook',
                            'Contacts'  => '?page=contact', 
                            'Links'         => '?page=links'                                
                            );


    function SetButtons($newbuttons) 
    { 
        $this->buttons = $newbuttons; 
    } 

    function Display() 
    { 
    $this -> DisplayMenu($this->buttons); 
    } 

    function DisplayMenu($buttons) 
    { 
        echo '
                <table border="0" cellpadding="2" cellspacing="1" width="100%" >
                    <tr>'; 
            $width = 100/count($buttons); 
                while (list($name, $url) = each($buttons)) 
                    { 
                    $this -> DisplayButton($width, $name, $url, !$this->IsURLCurrentPage($url)); 
                    } 
            echo '  
                    </tr>
                </table>
                    '; 
    } 


    function IsURLCurrentPage($url) 
    { 
        if(strpos( $GLOBALS['SCRIPT_NAME'], $url )==false) 
            { 
            return false; 
            } 
        else 
            { 
            return true; 
            } 
    } 

    function DisplayButton($width, $name, $url, $active = true) 
        { 
            if ($active) 
                { 
                echo '
                    <td class="mainmenu" width = "'.$width.'%"><a class="menulink" href = "'.$url.'">'.$name.'</a></td>

            '; 
            } 
            else 
                { 
                echo '
                    <td class="mainmenu" width = "'.$width.'%"><span class="menulink">'.$name.'</span></td>

                      '; 
                } 
        } 
}

?>


Собственно еще вопрос: а как можно упростить?

   
 
 автор: cheops   (28.10.2005 в 13:02)   письмо автору
 
   для: Clocker   (27.10.2005 в 22:05)
 

1) Хм... а почему URL такой странный '?page=news', может стоит перед ним $_SERVER['PHP_SELF'] добавить?
2) Упростить код можно, если преобразовать класс в функцию.