Любитель Fusion Сообщений: 353 Откуда: Москва, ВАО, Перово Зарегистрирован: 18 Октября 2007, 01:42:47 Сказали спасибо 51 раз Статус: offline
ICQ статус
Опубликовано 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, как лучше, как проще поступить с одной панелью, чтобы выводилась справа только на Главной странице сайта ?
Любитель Fusion Сообщений: 353 Откуда: Москва, ВАО, Перово Зарегистрирован: 18 Октября 2007, 01:42:47 Сказали спасибо 51 раз Статус: offline
ICQ статус
Опубликовано 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, чтобы менять это из админки, но этим уже неохота заниматься, мне достаточно вручную.
Любитель Fusion Сообщений: 353 Откуда: Москва, ВАО, Перово Зарегистрирован: 18 Октября 2007, 01:42:47 Сказали спасибо 51 раз Статус: offline
ICQ статус
Опубликовано 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'");
}
и наконец двумя строчками ниже находим строку
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";
Любитель Fusion Сообщений: 353 Откуда: Москва, ВАО, Перово Зарегистрирован: 18 Октября 2007, 01:42:47 Сказали спасибо 51 раз Статус: offline
ICQ статус
Опубликовано 20 Января 2008, 01:26:52
Да. В админке появляется возможность выбора для каждой панели. Фактически нужно для левых, правых.
Показывать её только на главной странице или на всех(как сейчас).
Правда переделал код ещё немного по сравнению с вышеописанным.
Любитель Fusion Сообщений: 353 Откуда: Москва, ВАО, Перово Зарегистрирован: 18 Октября 2007, 01:42:47 Сказали спасибо 51 раз Статус: offline
ICQ статус
Опубликовано 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'");
}
Этим мы включили в админку возможность переключения выбранных панелей одним стандартным кликом
в Админке в разделе "Панели".
Теперь нужно вставить код, который будет при формировании страниц сайта проверять - показывать ту или иную панель на данной странице или только на главной. Это формирование проверка осуществляется в 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++;
и аналогично заменяем в в side_left.php начиная примерно со строчки примерно 25
if ($p_data['panel_type'] == "file") {
и включительно до завершающей скобки к этому if
Разумеется перед всеми опреациями с указанными 3 файлами - сделайте их бэкап.