ForumCała strona

Nawigacja

Aktualnie online

Gości online: 6

Użytkowników online: 0

Łącznie użytkowników: 25,359
Najnowszy użytkownik: kdomi

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

DJPromo
05.12.2021 13:37:54
Siemka Smile co tam słychać

JazOOn
08.11.2021 23:22:32
Widzisz a ja poszedłem w logistyke i transport Grin

Gander
07.11.2021 16:29:48
Aż się łezka w oku kręci. Wpadłem sprawdzić, od kiedy robię w PHP (rok założenia konta) Wink

JazOOn
04.11.2021 22:43:11
No ale Pieka to już tu z 5 miesięcy nie był

JazOOn
21.10.2021 22:40:48
Tak ,to ten sam JazOOn Grin

Pobierz nową wersję
Pobierz podręcznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Zobacz temat

Polski Oficjalny Support PHP-Fusion » PHP-Fusion v5.00-v6.01 Support » Modyfikacje skryptów
 Drukuj temat
MOD: kilka paneli nawigacyjnych
Wooya
//UWAGA! Archiwum zaktualizowane! Usunieto powazny bug :)

Ponieważ dość często był poruszany temat kilku paneli nawigacyjnych na stronie, postanowiłem wziąć sprawy w swoje "rence" B) Wiem, że już takie moduły powstały, ale postanowiłem podejść do tej sprawy bardziej "systemowo" (wszystko oparte na prawie niezmienionej,standardowej tabeli site_links). Podaję na podstawie skryptów z najnowszego PHP-Fusion v6.01.3, ale akurat menu strony nie zmieniło się (o ile dobrze pamiętam) od wersji 6.00.2xx, więc z niższymi wersjami też nie powinno być problemów.

1) wchodzimy do PA > Zarządzanie Panelami > Nowy panel wklejamy kod:

Pobierz kod źródłowy  Rozwiń Kod źródłowy


i robimy PODGLĄD. Jeżeli zobaczymy informację "Tabela została zmieniona", to wszystko poszło ok.

2) otwieramy plik administration/site_links.php i dokonujemy następujących zmian:
+ odnajdujemy linię #19:
if (!isset($action)) $action = "";

i zamieniamy na:
if (!isset($action)) $action = ""; if (!isset($menu_id) || !isNum($menu_id)) $menu_id = 1;


+ odnajdujemy linię #36:
$result2 = dbquery("UPDATE ".$db_prefix."site_links SET link_order='$i' WHERE link_id='".$data['link_id']."'");

i zamieniamy na:
$result2 = dbquery("UPDATE ".$db_prefix."site_links SET link_order='$i' WHERE link_id='".$data['link_id']."' AND link_menu_id='".$menu_id."'");


+ odnajdujemy linie #39-54:
redirect(FUSION_SELF.$aidlink);
} elseif ($action == "moveup") {
$data = dbarray(dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_order='$order'"));
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order+1 WHERE link_id='".$data['link_id']."'");
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order-1 WHERE link_id='$link_id'");
redirect(FUSION_SELF.$aidlink);
} elseif ($action == "movedown") {
$data = dbarray(dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_order='$order'"));
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order-1 WHERE link_id='".$data['link_id']."'");
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order+1 WHERE link_id='$link_id'");
redirect(FUSION_SELF.$aidlink);
} elseif ($action == "delete") {
$data = dbarray(dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_id='$link_id'"));
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order-1 WHERE link_order>'".$data['link_order']."'");
$result = dbquery("DELETE FROM ".$db_prefix."site_links WHERE link_id='$link_id'");
redirect(FUSION_SELF.$aidlink."&status=del");

i zamieniamy na:
redirect(FUSION_SELF.$aidlink."&menu_id=".$menu_id);
} elseif ($action == "moveup") {
$data = dbarray(dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_order='$order' AND link_menu_id='".$menu_id."'"));
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order+1 WHERE link_id='".$data['link_id']."' AND link_menu_id='".$menu_id."'");
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order-1 WHERE link_id='$link_id' AND link_menu_id='".$menu_id."'");
redirect(FUSION_SELF.$aidlink."&menu_id=".$menu_id);
} elseif ($action == "movedown") {
$data = dbarray(dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_order='$order' AND link_menu_id='".$menu_id."'"));
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order-1 WHERE link_id='".$data['link_id']."' AND link_menu_id='".$menu_id."'");
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order+1 WHERE link_id='$link_id' AND link_menu_id='".$menu_id."'");
redirect(FUSION_SELF.$aidlink."&menu_id=".$menu_id);
} elseif ($action == "delete") {
$data = dbarray(dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_id='$link_id' AND link_menu_id='".$menu_id."'"));
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order-1 WHERE link_order>'".$data['link_order']."' AND link_menu_id='".$menu_id."'");
$result = dbquery("DELETE FROM ".$db_prefix."site_links WHERE link_id='$link_id' AND link_menu_id='".$menu_id."'");
redirect(FUSION_SELF.$aidlink."&status=del&menu_id='".$menu_id."'");


+ odnajdujemy linie #62-70:
if ($action == "edit") {
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_name='$link_name', link_url='$link_url', link_visibility='$link_visibility', link_position='$link_position', link_window='$link_window' WHERE link_id='$link_id'");
redirect(FUSION_SELF.$aidlink);
} else {
if(!$link_order) $link_order=dbresult(dbquery("SELECT MAX(link_order) FROM ".$db_prefix."site_links"),0)+1;
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order+1 WHERE link_order>='$link_order'");
$result = dbquery("INSERT INTO ".$db_prefix."site_links (link_name, link_url, link_visibility, link_position, link_window, link_order) VALUES ('$link_name', '$link_url', '$link_visibility', '$link_position', '$link_window', '$link_order')");
redirect(FUSION_SELF.$aidlink);
}

i zamieniamy na:
if ($action == "edit") {
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_menu_id='$menu_id', link_name='$link_name', link_url='$link_url', link_visibility='$link_visibility', link_position='$link_position', link_window='$link_window' WHERE link_id='$link_id'");
redirect(FUSION_SELF.$aidlink."&menu_id=".$menu_id);
} else {
if(!$link_order) $link_order=dbresult(dbquery("SELECT MAX(link_order) FROM ".$db_prefix."site_links WHERE link_menu_id='$menu_id'"),0)+1;
$result = dbquery("UPDATE ".$db_prefix."site_links SET link_order=link_order+1 WHERE link_order>='$link_order' AND link_menu_id='$menu_id'");
$result = dbquery("INSERT INTO ".$db_prefix."site_links (link_menu_id, link_name, link_url, link_visibility, link_position, link_window, link_order) VALUES ('$menu_id', '$link_name', '$link_url', '$link_visibility', '$link_position', '$link_window', '$link_order')");
redirect(FUSION_SELF.$aidlink."&menu_id=".$menu_id);
}


+ po linii #103 dodajemy kod:
$menuid = "<select class='textbox' name='link_menu_id' onChange=\"location = '".FUSION_SELF.$aidlink."&menu_id=' + document.layoutform.link_menu_id.options[document.layoutform.link_menu_id.selectedIndex].value;\">";
$menuid .= "<option value='1'".($menu_id==1?" selected":"").">1</option>\n";
$menuid .= "<option value='2'".($menu_id==2?" selected":"").">2</option>\n";
$menuid .= "<option value='3'".($menu_id==3?" selected":"").">3</option>\n";
$menuid .= "<option value='4'".($menu_id==4?" selected":"").">4</option>\n";
$menuid .= "<option value='5'".($menu_id==5?" selected":"").">5</option>\n";
$menuid .= "<option value='6'".($menu_id==6?" selected":"").">6</option>\n";
$menuid .= "<option value='7'".($menu_id==7?" selected":"").">7</option>\n";
$menuid .= "<option value='8'".($menu_id==8?" selected":"").">8</option>\n";
$menuid .= "<option value='9'".($menu_id==9?" selected":"").">9</option>\n";
$menuid .= "</select>";


+ po wklejeniu, ok linii #118, po kodzie:
echo "<form name='layoutform' method='post' action='$formaction'>
<table align='center' cellpadding='0' cellspacing='0'>

wklejamy:
<tr>
<td class='tbl'>Menu ID:</td>
<td class='tbl'>".$menuid."</td>
</tr>
<tr>


+ odnajdujemy linię ok #164:
$result = dbquery("SELECT * FROM ".$db_prefix."site_links ORDER BY link_order");

i zamieniamy na:
$result = dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_menu_id='".$menu_id."' ORDER BY link_order");


+ odnajdujemy linie #186-207:
if (dbrows($result) != 1) {
$up = $data['link_order'] - 1;
$down = $data['link_order'] + 1;
if ($k == 1) {
echo "<a href='".FUSION_SELF.$aidlink."&action=movedown&order=$down&link_id=".$data['link_id']."'><img src='".THEME."images/down.gif' alt='".$locale['441']."' title='".$locale['443']."' style='border:0px;'></a>\n";
} elseif ($k < dbrows($result)) {
echo "<a href='".FUSION_SELF.$aidlink."&action=moveup&order=$up&link_id=".$data['link_id']."'><img src='".THEME."images/up.gif' alt='".$locale['440']."' title='".$locale['442']."' style='border:0px;'></a>\n";
echo "<a href='".FUSION_SELF.$aidlink."&action=movedown&order=$down&link_id=".$data['link_id']."'><img src='".THEME."images/down.gif' alt='".$locale['441']."' title='".$locale['443']."' style='border:0px;'></a>\n";
} else {
echo "<a href='".FUSION_SELF.$aidlink."&action=moveup&order=$up&link_id=".$data['link_id']."'><img src='".THEME."images/up.gif' alt='".$locale['440']."' title='".$locale['442']."' style='border:0px;'></a>\n";
}
}
$k++;
echo "</td>
<td align='center' width='1%' class='tbl1' style='white-space:nowrap'><a href='".FUSION_SELF.$aidlink."&action=edit&link_id=".$data['link_id']."'>".$locale['434']."</a> -
<a href='".FUSION_SELF.$aidlink."&action=delete&link_id=".$data['link_id']."'>".$locale['435']."</a></td>
</tr>\n";
}
} else {
echo "<tr>\n<td align='center' colspan='4' class='tbl1'>".$locale['436']."</td>\n</tr>\n";
}
if (dbrows($result)) echo "<tr>\n<td align='center' colspan='5' class='tbl1'>[ <a href='".FUSION_SELF.$aidlink."&action=refresh'>".$locale['444']."</a> ]</td>\n</tr>\n";

i zamieniamy na:
if (dbrows($result) != 1) {
$up = $data['link_order'] - 1;
$down = $data['link_order'] + 1;
if ($k == 1) {
echo "<a href='".FUSION_SELF.$aidlink."&action=movedown&order=$down&link_id=".$data['link_id']."&menu_id=$menu_id'><img src='".THEME."images/down.gif' alt='".$locale['441']."' title='".$locale['443']."' style='border:0px;'></a>\n";
} elseif ($k < dbrows($result)) {
echo "<a href='".FUSION_SELF.$aidlink."&action=moveup&order=$up&link_id=".$data['link_id']."&menu_id=$menu_id'><img src='".THEME."images/up.gif' alt='".$locale['440']."' title='".$locale['442']."' style='border:0px;'></a>\n";
echo "<a href='".FUSION_SELF.$aidlink."&action=movedown&order=$down&link_id=".$data['link_id']."&menu_id=$menu_id'><img src='".THEME."images/down.gif' alt='".$locale['441']."' title='".$locale['443']."' style='border:0px;'></a>\n";
} else {
echo "<a href='".FUSION_SELF.$aidlink."&action=moveup&order=$up&link_id=".$data['link_id']."&menu_id=$menu_id'><img src='".THEME."images/up.gif' alt='".$locale['440']."' title='".$locale['442']."' style='border:0px;'></a>\n";
}
}
$k++;
echo "</td>
<td align='center' width='1%' class='tbl1' style='white-space:nowrap'><a href='".FUSION_SELF.$aidlink."&action=edit&link_id=".$data['link_id']."&menu_id=$menu_id'>".$locale['434']."</a> -
<a href='".FUSION_SELF.$aidlink."&action=delete&link_id=".$data['link_id']."&menu_id=$menu_id'>".$locale['435']."</a></td>
</tr>\n";
}
} else {
echo "<tr>\n<td align='center' colspan='4' class='tbl1'>".$locale['436']."</td>\n</tr>\n";
}
if (dbrows($result)) echo "<tr>\n<td align='center' colspan='5' class='tbl1'>[ <a href='".FUSION_SELF.$aidlink."&action=refresh&menu_id=$menu_id'>".$locale['444']."</a> ]</td>\n</tr>\n";


Jedna część MODa z głowy :)

3) otwieramy plik infusions/navigation_panel/navigation_panel.php
+ w linii #14 dodajemy kod:
global $menu_displayed_id;
$menu_displayed_id++;


+ odnajdujemy kwerende (ok linia #18):
$result = dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_position<='2' ORDER BY link_order");

i zamieniamy na:
$result = dbquery("SELECT * FROM ".$db_prefix."site_links WHERE link_position<='2' AND link_menu_id='".$menu_displayed_id."' ORDER BY link_order");


Po tych wszystkich przeróbkach zyskujemy możliwość tworzenia do 9 paneli nawigacyjnych :) Aby mieć np. 2 panele nawigacyjne, jeden z lewej, drugi z prawej, wystarczy w PA > Zarządzanie Panelami dodać dwa razy Panel Nawigacyjny: po lewej i po prawej. Panele numerowane są kolejno od lewej do prawej, tzn. pierwszy dodany panel będzie wyświetlał linki ze zdefiniowanego menu nr 1, drugi z menu nr 2, trzeci z menu nr 3 itd.

W załączniku gotowe pliki do PF v6.01.3.
Wooya dodał/a następującą plik:

Edytowane przez Wooya dnia 10.11.2006 12:03:02
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ...
koder_1.png
 
proton
Ciekawy MOD napewno wiele osób z tego korzysta, jednak ja tam wolę zwykłe menu tworzone w html, w panelach.
 
http://www.mortek.pl
Wooya
Jeden woli kredki drugi akwarium Wink Fakt faktem, ze brakuje takiej opcji w PF... Bardzo ciekawie jest to rozwiazane w Joomla'i, choc sam panel admina jest gaszczem niezrozumialych dla mnie opcji Cool
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ...
koder_1.png
 
Spoczywaj w pokoju... wlodekp
Jest to bardzo profesjonalny panel. Mnie osobiście zastąpił wiele linii kodu w panelach-tyczących dostępu.
I mimo, że używam @proton
jednak ja tam wolę zwykłe menu tworzone w html, w panelach.
to mam na stronie oprócz tego diametralnie różne nawigacje dla pracowników i gości, mało tego dostępy podzielone na user, admin, superadmin, wyświetlanie już w skryptach if member, if admin else.
Panele nawigacyjne zainstalowane tylko po lewej, widoczne dokładnie tak jak chce i dla kogo chce w zależności od uprawnień.
Dzięki @Wooya-Twój panel rozwiązuje tego typy problemy definitywnie.
ps mały bug przy ALTER TABLE(klawiatura) jest : zamiast ;(parse error)
Używam tego w 307 z pliku z moda.zip i jest OK
Edytowane przez wlodekp dnia 14.07.2006 18:38:07
 
wlodekp.europa.pl
Mates2
Pomoże ktoś z tym bo sie troszke gubie Wink jak co to na PW Grin
 
Wooya
A co tu do gubienia jest? Sa zalaczone pliki. Wgraj je na serwer i tyle...

PS: jesli cos ci nie gra a wgrales pliki, to wgraj je jeszcze raz
Edytowane przez Wooya dnia 10.11.2006 08:49:31
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ...
koder_1.png
 
yogamaya
Wszystko działa Smile Dięki Wuja
Jedno pytanko:
- Panele nazywają się po aktywacji tak samo :"Nawigacja" , czy zmienić pliki językowe, czy w bazie, czy jak to wydłubać ?
 
http://yogamaya.pl/
Wooya
Mozna odpowiednio zmodyfikowac navigation_panel, aby pobieral swoja nazwe nie z locale, ale z nazwy panelu jaka nadales w zarzadzaniu panelami.
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ...
koder_1.png
 
Pieka
Przyklad:
Pobierz kod źródłowy  Rozwiń Kod źródłowy


Do tego wpis:
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Edytowane przez Pieka dnia 07.01.2010 18:08:43
Jestem jaki jestem Smile
 
www.php-fusion.pl
yogamaya
Dzięki Smile
 
http://yogamaya.pl/
zalew
Pieka napisał/a:
Przyklad:

Pobierz kod źródłowy  Rozwiń Kod źródłowy


Do tego wpis:
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Gdzie to wstawić ?
Edytowane przez zalew dnia 18.12.2006 18:13:40
 
Wooya
Ta kwerenda jest zbędna. W pliku navigation_panel.php znajdz na poczatku:
Pobierz kod źródłowy  Rozwiń Kod źródłowy

i zamien na:
Pobierz kod źródłowy  Rozwiń Kod źródłowy


Teraz nazwy paneli beda pokazywane takie jak je nazwales.
... Pomagam tylko przy najnowszych wersjach PHP-Fusion ...
koder_1.png
 
zalew
Bardzo dziękuje za pomoc, wszystko działa jak należy Grin.
 
El_Intero
Ja mam problem z punktem 1 Sad Otóż robie to co tu pisze, wklejam ten kod i wyskaukje mi: Duplicate column name 'link_menu_id'Tabela nie została zmieniona

Robie coś żle ??
Bardzo proszę o pomoc
 
Pieka
El_Intero napisał/a:
Ja mam problem z punktem 1 Sad Otóż robie to co tu pisze, wklejam ten kod i wyskaukje mi: Duplicate column name 'link_menu_id'Tabela nie została zmieniona

Robie coś żle ??
Bardzo proszę o pomoc


Po prostu masz juz te kolumne.
Jestem jaki jestem Smile
 
www.php-fusion.pl
losiuu
Wszystko zrobiłem sprawdzilem i siku :/ nic nie ma! :/ Sad ...
mam Fusion 6.01 , moze ktoś prześle wszystko odrazu zrobione wstawione?
 
szymon
a Działa to z new_navigation_panel??
 
www.zloteskrzydlo.pl
Sharky
Wszystko ok, ale jak zrobić, żeby ten drugi panel nosił inną nazwę?
Tzn. np. zamiast: "Nagiwacja", "Menu"? Smile
 
szymon
Wooya ?? Dużo zmian byłoby, zeby to przerobić na new_navigation_panel ??
 
www.zloteskrzydlo.pl
maq
hmm. A dałoby się używać składni bbcode w tym modzie? Bo chcę np. nadać linkowi pogrubienie, ale nie wiem jak, bo po wpisaniu zwyczajnego <b ></b > pokazuje się <b >Strona główna</b >

P.S Do n00bów: Spacje w znacznikach zrobiłem specjalnie Smile



/// Edit:

Poradziłem sobie, ale mam jeszcze jedno pytanie:

Czy da radę zrobić tak, żeby można było używać kolorów? Zrobiłem metodą @Pawkow'a bbcode i działa, ale jeszcze kolorki by się przydały. Wiecie może jak to zrobić?
Edytowane przez maq dnia 10.04.2007 13:28:17
"Różnica między seksem i miłością jest taka, że seks rozładowuje napięcie, a miłość je wywołuje" // Woody Allen
 
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl