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

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Моды/Плагины | Плагины/Plugins
# 1 Тема: Как сделать вывод панели только на главной странице ?
classic
SF Team

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

Классик

SF Support Team

Любитель Fusion

Сообщений: 353
Откуда: Москва, ВАО, Перово
Зарегистрирован: 18 Октября 2007, 01:42:47
Сказали спасибо 51 раз
Статус: offline
ICQ статус 350192996
Опубликовано 18 Ноября 2007, 11:11:40
Есть плагин, например calendar_panel, но вообще не важно какой.
Он выводиться справа в виде панели (он прописан в Админке в Панелях справа).

Нужно чтобы он выводился там-же, но только на главной странице сайта,
то есть чтобы на остальных страницах он не выводился.

Где смотреть, где менять ?
 
^ наверх ^ 350192996
# 2  
classic
SF Team

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

Классик

SF Support Team

Любитель Fusion

Сообщений: 353
Откуда: Москва, ВАО, Перово
Зарегистрирован: 18 Октября 2007, 01:42:47
Сказали спасибо 51 раз
Статус: offline
ICQ статус 350192996
Опубликовано 18 Ноября 2007, 11:40:53
то есть такое впечатление что проверку можно осуществлять вроде как в файле side_right.php
имя панели там это вроде как $panel_name, а вот как проверить там Главная страница сайта или нет ?
Или можно как-то по другому, в коде самой панели это проверять ?

--

Или может лучше переделать код: добавить в таблицу $db_prefix."panels" ещё одно поле
"Выводить только на главной странице" и в админке его добавить в Панелях в виде галочки.
А в side_right.php вставить проверку этого поля для каждой Панели там же в цикле.(и в side_left.php )
Соответственно изменить код в panels.php и в panel_editor.php (добавить эту галочку)
Это решение - универсальное для всех панелей, тогда можно будет этот пункт выбрать в админке для любой панели, опять же остается вопрос - как проверить - Главная страница сайта или нет !

Но таже панель Приветствие - выводится только на главной.
В структуре движка не особо разобрался.

Что скажешь, Sky, как лучше, как проще поступить с одной панелью, чтобы выводилась справа только на Главной странице сайта ?


[Изменил(а) classic, 18 Ноября 2007, 11:54:11]  
^ наверх ^ 350192996
# 3  
classic
SF Team

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

Классик

SF Support Team

Любитель Fusion

Сообщений: 353
Откуда: Москва, ВАО, Перово
Зарегистрирован: 18 Октября 2007, 01:42:47
Сказали спасибо 51 раз
Статус: offline
ICQ статус 350192996
Опубликовано 18 Ноября 2007, 12:43:37
Для одной конкретной панели получилось вот так:
в side_right.php на строчке примерно 45 вместо
include INFUSIONS.$panel_name."/".$panel_name.".php";

пишем

if(dirname($_SERVER['PHP_SELF']).FUSION_SELF != "/index.php" && $panel_name == "calendar_panel")
eval(stripslashes($p_data['panel_content']));
else include INFUSIONS.$panel_name."/".$panel_name.".php";

вроде так работает, не знаю насколько это правильно.


[Изменил(а) classic, 18 Ноября 2007, 15:15:07]  
^ наверх ^ 350192996
# 4  
classic
SF Team

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

Классик

SF Support Team

Любитель Fusion

Сообщений: 353
Откуда: Москва, ВАО, Перово
Зарегистрирован: 18 Октября 2007, 01:42:47
Сказали спасибо 51 раз
Статус: offline
ICQ статус 350192996
Опубликовано 18 Ноября 2007, 15:52:44
В общем я это реализовал и для любой панели.

В таблицу $db_prefix."panels" добавил поле panel_main типа tinyint(1) UNSIGNED по умолчанию значение 1.
У тех панелей, которые должны выводиться только на главной странице сайта изменил значение этого поля на 0.

В side_right.php после строчки примерно 44
$panel_name = $p_data['panel_filename'];
вписал
$panel_main = $p_data['panel_main'];

и ниже на строчке примерно 45 вместо
include INFUSIONS.$panel_name."/".$panel_name.".php";
вписал:
if(dirname($_SERVER['PHP_SELF']).FUSION_SELF != "/index.php" && $panel_main == 0)
eval(stripslashes($p_data['panel_content']));
else include INFUSIONS.$panel_name."/".$panel_name.".php";

Все работает. Панели, у которых в указанном поле стоит 0 - показываются только на Главной странице сайта.
Для панелей слева наверное нужно тоже самое проделать в файле side_left.php

Можно конечно, чтобы не лазить в таблицу вручную, внести изменения в panels.php и в panel_editor.php, чтобы менять это из админки, но этим уже неохота заниматься, мне достаточно вручную.
 
^ наверх ^ 350192996
# 5  
classic
SF Team

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

Классик

SF Support Team

Любитель Fusion

Сообщений: 353
Откуда: Москва, ВАО, Перово
Зарегистрирован: 18 Октября 2007, 01:42:47
Сказали спасибо 51 раз
Статус: offline
ICQ статус 350192996
Опубликовано 18 Ноября 2007, 16:37:16
Все, добавил это и в админку, файл administration/panels.php

После строчки примерно 60 после
if ($step == "setstatus") {
$result = dbquery("UPDATE ".$db_prefix."panels SET panel_status='$status' WHERE panel_id='$panel_id'");
}
вставляем код:
if ($step == "setmain") {
$result = dbquery("UPDATE ".$db_prefix."panels SET panel_main='$status' WHERE panel_id='$panel_id'");
}

Далее, ищем строчки
<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><b>".$locale['405']."</b></td>
<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><b>".$locale['406']."</b></td>
после них вставляем:
<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><b>Others</b></td>

Далее - ищем строчки
echo "[<a href='".FUSION_SELF.$aidlink."&step=delete&panel_id=".$data['panel_id']."&panel_side=".$data['pan
el_side']."' onClick='return DeleteItem()'>".$locale['437']."</a>]\n";
echo "</td>\n</tr>\n";
$i++;

меняем их на

echo "[<a href='".FUSION_SELF.$aidlink."&step=delete&panel_id=".$data['panel_id']."&panel_side=".$data['pan
el_side']."' onClick='return DeleteItem()'>".$locale['437']."</a>]\n";
echo "</td>\n<td width='1%' class='tbl1' style='white-space:nowrap'>";

if ($data['panel_main'] == 0) {
echo "[<a href='".FUSION_SELF.$aidlink."&step=setmain&status=1&panel_id=".$data['panel_id']."'>".$locale
['436']."</a>]\n";
} else {
echo "[<a href='".FUSION_SELF.$aidlink."&step=setmain&status=0&panel_id=".$data['panel_id']."'>".$locale
['435']."</a>]\n";
}
echo"</td>\n</tr>\n";
$i++;

и наконец двумя строчками ниже находим строку
echo "<tr>\n<td align='center' colspan='7' class='tbl1'>[ <a href='panel_editor.php".$aidlink."'>".$locale['438']."</a> ]\n";
и меняем на
echo "<tr>\n<td align='center' colspan='8' class='tbl1'>[ <a href='panel_editor.php".$aidlink."'>".$locale['438']."</a> ]\n";

Всё. :)


 
^ наверх ^ 350192996
# 6  
yury
Пользователь

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

Магистр Дизайна и Верстки

Почетный SF

Сообщений: 1201
Зарегистрирован: 11 Января 2008, 15:57:19
Сказали спасибо 37 раз
Статус: offline
ICQ статус 371635405
Опубликовано 19 Января 2008, 11:13:11
Можно теперь в 2 словах что это все дает? То, что панель видна только на главной?


--------------------
Нужен сайт или красивый оригинальный дизайн?
Только лучший и оригинальный дизайн для php-fusion 6, 7, SF!
www.artcell.ru-правильный выбор!!!
^ наверх ^ 371635405 www.artcell.ru
# 7  
classic
SF Team

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

Классик

SF Support Team

Любитель Fusion

Сообщений: 353
Откуда: Москва, ВАО, Перово
Зарегистрирован: 18 Октября 2007, 01:42:47
Сказали спасибо 51 раз
Статус: offline
ICQ статус 350192996
Опубликовано 20 Января 2008, 01:26:52
Да. В админке появляется возможность выбора для каждой панели. Фактически нужно для левых, правых.
Показывать её только на главной странице или на всех(как сейчас).

Правда переделал код ещё немного по сравнению с вышеописанным.


[Изменил(а) classic, 20 Января 2008, 01:28:09]  
^ наверх ^ 350192996
# 8  
yury
Пользователь

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

Магистр Дизайна и Верстки

Почетный SF

Сообщений: 1201
Зарегистрирован: 11 Января 2008, 15:57:19
Сказали спасибо 37 раз
Статус: offline
ICQ статус 371635405
Опубликовано 21 Января 2008, 17:07:49
А можно аттач этого файла?)


--------------------
Нужен сайт или красивый оригинальный дизайн?
Только лучший и оригинальный дизайн для php-fusion 6, 7, SF!
www.artcell.ru-правильный выбор!!!
^ наверх ^ 371635405 www.artcell.ru
# 9  
classic
SF Team

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

Классик

SF Support Team

Любитель Fusion

Сообщений: 353
Откуда: Москва, ВАО, Перово
Зарегистрирован: 18 Октября 2007, 01:42:47
Сказали спасибо 51 раз
Статус: offline
ICQ статус 350192996
Опубликовано 21 Января 2008, 19:14:12
Аттач какого именно ???

Ещё раз по шагам:

1. В таблицу $db_prefix."panels" добавил поле panel_main типа tinyint(1) UNSIGNED по умолчанию значение 1.
У тех панелей, которые должны выводиться только на главной странице сайта изменил значение этого поля на 0.
Это поле для каждой панели будет означать - выводить панель только на главной странице сайта или на всех.

2. Файл administration/panels.php

После строчки примерно 60 после

if ($step == "setstatus") {
$result = dbquery("UPDATE ".$db_prefix."panels SET panel_status='$status' WHERE panel_id='$panel_id'");
}

вставляем код:

if ($step == "setmain") {
$result = dbquery("UPDATE ".$db_prefix."panels SET panel_main='$status' WHERE panel_id='$panel_id'");
}

Далее, ищем строчки
<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><b>".$locale['405']."</b></td>
<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><b>".$locale['406']."</b></td>

после них вставляем:

<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><b>Others</b></td>

Далее - ищем строчки

echo "[<a href='".FUSION_SELF.$aidlink."&step=delete&panel_id=".$data['panel_id']."&panel_side=".$data['pan
el_side']."' onClick='return DeleteItem()'>".$locale['437']."</a>]\n";
echo "</td>\n</tr>\n";
$i++;

меняем их на

echo "[<a href='".FUSION_SELF.$aidlink."&step=delete&panel_id=".$data['panel_id']."&panel_side=".$data['pan
el_side']."' onClick='return DeleteItem()'>".$locale['437']."</a>]\n";
echo "</td>\n<td width='1%' class='tbl1' style='white-space:nowrap'>";

if ($data['panel_main'] == 0) {
echo "[<a href='".FUSION_SELF.$aidlink."&step=setmain&status=1&panel_id=".$data['panel_id']."'>".$locale
['436']."</a>]\n";
} else {
echo "[<a href='".FUSION_SELF.$aidlink."&step=setmain&status=0&panel_id=".$data['panel_id']."'>".$locale
['435']."</a>]\n";
}
echo"</td>\n</tr>\n";
$i++;

и наконец двумя строчками ниже находим строку

echo "<tr>\n<td align='center' colspan='7' class='tbl1'>[ <a href='panel_editor.php".$aidlink."'>".$locale['438']."</a> ]\n";

и меняем на

echo "<tr>\n<td align='center' colspan='8' class='tbl1'>[ <a href='panel_editor.php".$aidlink."'>".$locale['438']."</a> ]\n";

Этим мы включили в админку возможность переключения выбранных панелей одним стандартным кликом
в Админке в разделе "Панели".

Теперь нужно вставить код, который будет при формировании страниц сайта проверять - показывать ту или иную панель на данной странице или только на главной. Это формирование проверка осуществляется в side_right.php
(для правой панели внизу где panel_side='4') и в side_left.php (для левой панели вверху где panel_side='1')

3. Файлы side_right.php и side_left.php

В side_right.php код, начиная примерно со строчки 43
if ($p_data['panel_type'] == "file") {
и до заврешающей скобки к этому if (включительно) и перед $pc++;

меняем на

if ($p_data['panel_type'] == "file") {
$panel_name = $p_data['panel_filename'];
$panel_main = $p_data['panel_main'];
//include INFUSIONS.$panel_name."/".$panel_name.".php";
if($panel_main == 0 && dirname($_SERVER['PHP_SELF']).FUSION_SELF != "/index.php")
eval(stripslashes($p_data['panel_content']));
else include INFUSIONS.$panel_name."/".$panel_name.".php";
} else {
$panel_main = $p_data['panel_main'];
if($panel_main == 0 && dirname($_SERVER['PHP_SELF']).FUSION_SELF != "/index.php") ;
else eval(stripslashes($p_data['panel_content']));
}

и аналогично заменяем в в side_left.php начиная примерно со строчки примерно 25
if ($p_data['panel_type'] == "file") {
и включительно до завершающей скобки к этому if


Разумеется перед всеми опреациями с указанными 3 файлами - сделайте их бэкап.


[Изменил(а) classic, 21 Января 2008, 19:15:21]  
^ наверх ^ 350192996
Перейти на форум:


122,725,360 уникальных посетителей
сейчас: 10 Июня 2026, 11:55:52
Генерация страницы: 0.66 сек.

Original size:40 кб.
GZipped size: 8 кб.
Compression:79%