Изменение картинки выбранного раздела

Mishanja

Новичок
Изменение картинки выбранного раздела

Здравствуйте уважаемые.

Вот столкнулся с такой проблемой, не знаю как лучше ее решить.
На сайте есть панель навигации. Навигация сделана в виде закладок.
Есть шаблон панели навигации, с HTML кодом, который подключается инкллудом в индексах сайта. Индекс каждого раздела хранится в своей папке. Т.е. линк, например, к разделу Новости выглядит так www.mysite.ru/news/index.php
Картинка выбранного раздела имеет имя news_sel.jpg, картинка неактивного просто news.jpg.
Задача: Сделать так, чтобы на каждом разделе, соответствующая разделу картинка изменяла свой внешний вид.
Пока вижу только одно решение:
1. Брать REQUEST_URI.
2. По нему определять где юзер.
3. Далее написать функцию, с IF или CASE которая в зависимости от выбранного раздела возвращает в массив названия для всех картинок, в том числе для выбранного раздела.
4. Далее в шаблоне разбирать массив и вместо имени картинки вставлять нужный елемент возвращенного функцией массива, который будет ее именем.

Проблема заключается в том, что при добавлении нового раздела, нужно менять все условия IF или CASE (добавлять в каждое условие новую картинку и писать новое условие для нового раздела).

Вот подумал, может быть есть более простой способ, а я пытаюсь изобрести велосипед, или может быть я просто лама.

Заранее спасибо.
 

Mishanja

Новичок
Смысл пункта 3 такой:

Функция делает следующее (поэтапно):
1. Определяет где находится юзер.
2. Если путь, например news, а всего разделов 7, то именно для этого случая создает массив в котором 0->"feedback.jpg", 1->"news_sel.jpg" и так далее.
3. Если путь не news а, например feedback, то в массив попадет 0->"feedback_sel.jpg", 1->"news.jpg"

Ну а далее в шаблоне, я разбираю массив и в HTML коде вместо имени файла картинки пишу print соответствующего элемента массива для каждой картинки.

Суть функции в том, что для каждого пути, она будет возвращать массив в котором картинка именно того раздела, в котором будет находиться пользователь будет изменяться.

Т.е. например, если функция отработала с условием, что пользователь сейчас в news, она и вернет массив в котором будут все элементы, а картинка раздела news будет вида news_sel.
Соответственно, если другой раздел будет выбран, то в массив попадет _sel именно той картинки, которая соответствуюет выюранному разделу.

Вот и вопрос мой в том, нужно ли так все запаривать или есть вариант попроще.

Потому как очень неудобно будет вставлять или удалять разделы новые.
 

Mishanja

Новичок
Это понятно.
Просто я не хочу в индексах HTML писать.

Логика такова:

Юзер кликнул на ссылку, запросил соответствующий индекс.
Этот индекс по кирпичикам собрал из шаблонов страничку, в том числе подключил шаблон который отвечает за навигацию.

Вот как мне дать понять шаблону навигации как ему надо выдавать картинки в шаблон навигации?

Можно конечно соответсвующий массив прямо в индексе собирать, но как-то не очень эстетично это по-моему.
 

ybilevych

Новичок
Не знаю, при чам сдесь IF или CASE
Можно просто в цикле пробежаться по названиях разделов, и сравнивая их с именем текущего файла (PHP_SELF мне больше нравится), определять, выбранный он или нет. То есть сдесь УЖЕ должен существовать массив с названиями разделов
 

Mishanja

Новичок
ybilevych

Как определить выбран раздел или нет я понимаю.

Я не могу понять как мне шаблону объяснить что вот для этого раздела нужна такая картинка, а для вот этого раздела, если он выбран - вот такая.

Т.е. шаблон в виде:

<table>
<tr>
<td><a href="/razdel1/"><img src="image1.jpg></a></td>
<td><a href="/razdel2/"><img src="image2.jpg></a></td>
<td><a href="/razdel3/"><img src="image3.jpg></a></td>
</tr>
</table>

Этот шаблон я подключаю индексом.

Мне надобно, чтобы в зависимости от индекса вместо, например, image2.jpg было image2_sel.jpg

Для этого прямо в шаблоне, вместо имени файла картинки для каждого раздела я хотел вставлять элемент массива, который собирает функция в зависимости от выбранного раздела.

Функцию написать можно, но потом становится трудно добавлять или изменять новые разделы.

Так ли надо делать, или умные люди сделали ли бы по-другому.
 

Mishanja

Новичок
hobobob

А если разделов 50. То для каждого раздела переписывать все переменные в каждом индексе?

Как-то не по уму.

Или я тупого включил.
 

Mishanja

Новичок
Для каждого раздела свой индекс. Некоторые шаблоны общие, некоторые нет. Ну вот навигация общая.
 

Фанат

oncle terrible
Команда форума
Проблема заключается в том, что при добавлении нового раздела, нужно менять все условия IF или CASE (добавлять в каждое условие новую картинку и писать новое условие для нового раздела).
если сделать имя картинки зависимым от названия раздела (news - news.jpg), то ничего добавлять не придётся, всё можно делать автоматом.
 

Mishanja

Новичок
Вот пришла гениальная мыль в прямую извилину:
Если все переменные задекларировать в шаблоне, а в индексе просто менять значение одной.

Но хочется красивую функцию, а руки не из плечей по ходу дела.

Фанат

Если я правильно понял твою мысль, то можна сделать так:

1. В функции пишу массив, в котором ключиком является название раздела, а значением - имя картинки.
2. Потом перебираю массив циклом и сравниваю название раздела которое пришло от индекса с ключиками массивов.
3. Ежели вдруг в цикле обнаруживается что название раздела соответствует какому-нить ключику массива, то к его значению (т.е. к имени картинки) прибавляю "_sel".
4. А ежели нет, то массив остается без изменений.
5. Ну а уж потом, уже в шаблоне достаю из массива значения и поочереди их вставляю в имена файлов всех картинок.

А когда надо добавить новый раздел, просто в массиве его добавляю, ну и рисую соотв. картинки.

Вроде хорошо получается

-~{}~ 27.04.06 16:14:

hobobob

Понял вашу мысль тоже.

Всем большое спасибо.
 
Сверху