Как изменить css класс картинки при помощи php ?

kpripper

Новичок
Простой вопрос. Есть меню, класс active стоит на картинке которая отвечает за главную, при переходе на другие страницы выделенной так и остается главная. Как передать класс active той картинке, которая соответсвует странице ?

В общем делаю так:


<a href="/index.php" class="but1" {if $url == "/index.php"} class="but1 active"{/if}><img src="templates/beez_20/images/spacer.gif" alt="" width="106" height="42" /></a> <?print $url ?>



Переменная с помощью print $url выводится на каждой странице правильно, но класс не передается.

Что не так в коде ?
 

kpripper

Новичок
Корректно работает такой вариант

<a href="/index.php" <? if($url == "/index.php") print 'class="but1 active"'; else print 'class="but1"'; ?>><img src="templates/beez_20/images/spacer.gif" alt="" width="106" height="42" /></a>
 

Ruslan

Новичок
Корректно работает такой вариант

<a href="/index.php" <? if($url == "/index.php") print 'class="but1 active"'; else print 'class="but1"'; ?>><img src="templates/beez_20/images/spacer.gif" alt="" width="106" height="42" /></a>
Если $url будет /index.php?param=value то хер что будет подсвечиваться. А зачем делать то, что не всегда работает?
 

antson

Новичок
Партнер клуба
kpripper {if ....} - в фигурных скобках напоминает смарти или подобный шаблонизатор. Если работает через <?, то - это нативный php
Вопрос . Что вы правите ?
 

kpripper

Новичок
А как же правильно сделать ? Никакие шаблонизаторы не использую.
 

KorP

Новичок
А как же правильно сделать ?
зависит от того - каким образом у тебя меню получается.
должен быть некий идентификатор, по которому ты можешь определить:
PHP:
if ($page == $_GET[page])
    $class == 'but1 active';
else
    $class == 'but1';
приблизительно как то так, в тупую так не делай
 

Ruslan

Новичок
А как же правильно сделать ? Никакие шаблонизаторы не использую.
preg_match_all()
1. Все урлы имеют одинаковую логику формирования. В данном примере литерал латинского алфавита.
PHP:
$mathes = array();
preg_match_all("/^([\w]+).php/", $url, $matches, PREG_PATTERN_ORDER);
$class = 'but1';
switch($matches[1][0]){
    case 'index':
        $class .= " active";
        break;
}
2. Все урлы формируются хрен знает как

PHP:
switch(true){
    case preg_match("/^index.php/", $url):
        $class = 'but1 active';
        break;
    ..... 
}
Индексы в matches ставил по памяти, могут не совпадать.


зависит от того - каким образом у тебя меню получается.
должен быть некий идентификатор, по которому ты можешь определить:
PHP:
if ($page == $_GET[page])
    $class == 'but1 active';
else
    $class == 'but1';
приблизительно как то так, в тупую так не делай
Поставь оператор присваивания вместо сравнения.
 

artnik7

Новичок
Вот еще можно попробовать, не тестировал
PHP:
<a href="/index.php" class="but1<?= $url == '/index.php' ? ' active' :'' ?>"> текст ссылки </a>
Возможно проблема была в том, что у вас в коде в ссылке дважды используеться class="", т.е. ошибка не в php а в html
 

baev

‹°°¬•
Команда форума
Сверху