Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Дизайн | Темы оформления
# 1 Тема: Навигация сайта
Alexandro87
Пользователь

Avatar пользователя

Начинающий Web мастер

новичек

Сообщений: 6
Откуда: Северодвинск
Зарегистрирован: 24 Июля 2008, 22:35:26
Сказали спасибо 0 раз
Статус: offline
ICQ статус 425091860
Опубликовано 28 Июля 2008, 08:14:19
Здравствуйте!!!

У меня давно капают слюнки по навигации такого плана. Правда, в IE и Opera функционал немного различается... это не суть...
В html-ле это делается проще:

<html>
<head>
<style type="text/css">

.menu {width: 200px;} /*Ширина меню*/

.menu A {
display: block; /*Ссылка, как блочный элемент*/
width: 198; /*Ссылка на всю ширину меню*/
padding: 5px; /*Поля вокруг надписи*/
border-left : 10рх solid #13694e; /*Линия слева*/
border-bottom: 1px solid silver ; /*Линия между пунктами*/
background: #74a18e; /*Исходный цвет фона меню*/
color : white;
font-family: Arial; /*Исходный цвет текста меню*/
text-decoration : none } /*Убираем подчеркивание у ссылок*/

.menu A:hover {
border-left-color : orange; /* Меняем цвет линии слева */
background: #a18e74; /* Новый цвет фона под ссылкой */
color: #ffffcc } /* Новый цвет ссылки */
</style>

</head>
<body>
<div class=menu>
<div><a href=linkl.html>Главная</a></div>
<div><a href=link2.html>Новости</a></div>
<div><a href=link3.html>Реклама</a><div>
<div><a href =link4.html style="border-bottom: none">Контакты</a></div></div>
</body>
</html>


Этот код отображается и в Опере и в IE более-менее одинаково. Но вот как его прикрутить к PhpFusion?
за менюшку "отвечает" файл navigation_panel.php
За вывод пунктов меню отвечают строки
echo "<img src='".THEME."images/bullet.gif' alt=''> <a href='".$data['link_url']."'".$link_target." class='side'>".$data['link_name']."</a><br>\n";
} else {
echo "<img src='".THEME."images/bullet.gif' alt=''> <a href='".BASEDIR.$data['link_url']."'".$link_target." class='side'>".$data['link_name']."</a><br>\n";
}


выше идут некие проверки на наличие чего то там... (Линий раздела)... если честно, я в этих проверках немного запутался... так как в php ещё чайник (начал его изучение буквально недели две назад)
Если будет нетрудно, напишите хотябы комментарии к этим условиям... и куда можно вставить <div class=menu>( из html кода).
Можно просто комменты, с вставкой постараюсь разобраться сам.
Заранее благодарен
 
^ наверх ^ 425091860
# 2  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 28 Июля 2008, 16:03:06

echo "<Здесь_начало><img src='".THEME."images/bullet.gif' alt=''> <a href='".$data['link_url']."'".$link_target." class='side'>".$data['link_name']."</a></Здесь_конец_тега><br>\n";

echo "<Здесь_начало><img src='".THEME."images/bullet.gif' alt=''> <a href='".BASEDIR.$data['link_url']."'".$link_target." class='side'>".$data['link_name']."</a></Здесь_конец_тега><br>\n";



Это по div'y если нужно, просто ставишь туда парный тег и радуешься.
css грузи рядышком где нить, в смысле типа
<link rel='stylesheet' href='/styles.css' type='text/css'>



PS А вообще там все просто как в html, можешь поменять как нужно, только не ставь " такие кавычки, ставь ' такие (а то мало ли - вдруг не знаешь smiley )


[Изменил(а) Psc, 28 Июля 2008, 16:03:41]

--------------------
Retired
^ наверх ^
1 пользователь сказал спасибо Вам: Alexandro87
# 3  
Alexandro87
Пользователь

Avatar пользователя

Начинающий Web мастер

новичек

Сообщений: 6
Откуда: Северодвинск
Зарегистрирован: 24 Июля 2008, 22:35:26
Сказали спасибо 0 раз
Статус: offline
ICQ статус 425091860
Опубликовано 29 Июля 2008, 00:03:11
Psc, спасибо!!! Более-менее разобрался...

как определить, на какой странице находится посетитель, и не отображать в меню ссылку на неё?
я конечно копну плагин КТО? ГДЕ? просто вдруг кто-то занимался такимsmiley


[Изменил(а) Alexandro87, 29 Июля 2008, 00:03:57]  
^ наверх ^ 425091860
# 4  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 29 Июля 2008, 12:05:36
хе это конечно правильное дело, но придется перелопачивать панель нафигации и ее инклюд к верхней панели.

Проверка типа:

ЕСЛИ (страница где пользователь) ЕСТЬ_В (ссылка в навигации) ТО неотображать


подойдет?


--------------------
Retired
^ наверх ^
# 5  
Alexandro87
Пользователь

Avatar пользователя

Начинающий Web мастер

новичек

Сообщений: 6
Откуда: Северодвинск
Зарегистрирован: 24 Июля 2008, 22:35:26
Сказали спасибо 0 раз
Статус: offline
ICQ статус 425091860
Опубликовано 29 Июля 2008, 12:25:48
Вот это я и имел в виду...
Глянул модуль "КТО? ГДЕ?" Там если я не ошибаюсь, идёт запрос в БД, потом обрабатывается, итд...

Пока мысли такие:
1) Получить URL страницы, где находится пользователь(как? - буду читать учебник по PHPsmiley)
2) Выделить структуру типа домен.страница.php;
3) Проверить...
 
^ наверх ^ 425091860
# 6  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 29 Июля 2008, 12:46:46
Отлажено и сделано, можешь разобрать 2 строки кода:

$count_this_page = substr_count($_SERVER['REQUEST_URI'],$data['link_url'] );
if ($count_this_page != 1 ) {
здесь код ссылки из навигации (я под панель делал)
}




Все работает, но могут быть недочеты - тести, смотри.


--------------------
Retired
^ наверх ^
1 пользователь сказал спасибо Вам: Elermo
# 7  
Alexandro87
Пользователь

Avatar пользователя

Начинающий Web мастер

новичек

Сообщений: 6
Откуда: Северодвинск
Зарегистрирован: 24 Июля 2008, 22:35:26
Сказали спасибо 0 раз
Статус: offline
ICQ статус 425091860
Опубликовано 01 Августа 2008, 23:22:38
То, что хотел, то получил!!!
но возникла одна маленькая проблемка... и вопрос:
какой функцией определить путь к CMS ?

пока сайт находится на Denwer е, и путь к нему задаётся как localhost/fus/
так вот бы хотелось эту /fus/ и вычленить... зачем?
просто получается так, что если кроме основного index.php есть ещё и посторонние, скажем /plugins/index.php, то в результате работы функции
substr_count($_SERVER['REQUEST_URI'],$data['link_url'])

при нахождении юзера на страничке /plugins/index.php, при отображении меню в переменной $data['link_url'](а перебор идёт с начала), будет index.php, news.php, blablabla.php вплоть до /plugins/index.php
и стилем UserHere будут отражены два пункта меню. что, собственно и случилось у меня.
выход нашёлся - я "боролся" с Web статистикой, её URL - /fus/infusions/stats_info_panel/index.php

if ($count_this_page != 1 ) DrawItem($data['link_url'], $data['link_name'], $link_target, $menu_class);
else
{//код проверки на "чужой " index.php
if (substr_count($_SERVER['REQUEST_URI'],'infusion')==0)
{DrawHereItem($data['link_name'], $menu_class) ;}
else //4
{if (substr_count($data['link_url'],'infusion')==0 ) DrawItem($data['link_url'], $data['link_name'], $link_target, $menu_class);
else DrawHereItem($data['link_name'], $menu_class);
}//4
}



DrawItem и DrawHereItem - функции, отображающие соответственно пункт меню и посещаемый пункт меню.
флаг $menu_class - служит для корректного отображения тэгов <div class=Мой класс> </div> (без него исходный код полученной страницы был не очень корректный, но верный)

всё бы хорошо, да одно но. Появись ссылка типа /каталог/index.php, и данный код будет глючить.

поэтому я и хочу найти способ найти отобразить полный путь к папке с fusion (на некоторых хостингах он бывает довольно большой)...

и ещё... если я смогу узнать каталог установки fusion, смогу решить проблему вот такого захода на сайт
1) http://localhost/fus/
2) http://localhost/fus/index.php
и в том и другом случаях будет открыта index.php, только в последнем ссылка "Главная" будет неактивна

если кого заинтересует, могу выложить сам файл navigation_panel.php
----------
по ходу ещё спрошу: как прикрепить именно к моей теме ЭТОТ navigation_panel? как сделать ссылку из themes.php, чтобы грузить навигатион панел не из папки инфьжен, а из моей папки с темой?
 
^ наверх ^ 425091860
# 8  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 02 Августа 2008, 00:15:56
Отлично, найден буг smiley

Возможный фикс:

$count_this_page = substr_count($_SERVER['REQUEST_URI'],$settings['siteurl'].$data['link_url'] );
if ($count_this_page != 1 ) {
здесь код ссылки из навигации (я под панель делал)
}




$settings['siteurl'] - берется из настроек (переменная получает значение кажись в maincore), тот самый /fus/ или что угодно. Еще есть вариант сделать полный путь с именем серва, но это если не получится этот.
Синтаксис правда не проверил - может не заработать smiley

PS! Кстати об индексах! рекомендую их убрать , все равно по дефолту грузит index.php либо index.html (кто скажет что у него не так - будет глюпым smiley)
выставить пути в навигации типа /ssaylko/.

PPS Проверил - синтаксис верный , более того работает как надо (вроде)


[Изменил(а) Psc, 02 Августа 2008, 00:21:48]

--------------------
Retired
^ наверх ^
# 9  
Planet
Пользователь

Avatar пользователя




Местный

Сообщений: 13
Зарегистрирован: 09 Августа 2008, 16:25:36
Сказали спасибо 0 раз
Статус: offline
Опубликовано 30 Августа 2008, 12:29:26
Что то у меня ничего хорошего не получается по иписанию выше. Может быть есть где скачать готовый набор файлов для оформления как на офсайте в первом посте?


[Изменил(а) Planet, 30 Августа 2008, 12:30:03]  
^ наверх ^
Перейти на форум:


105,448,642 уникальных посетителей
сейчас: 22 Ноября 2024, 02:00:02
Генерация страницы: 0.28 сек.

Original size:35 кб.
GZipped size: 9 кб.
Compression:75%