Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z nowym menu w punBB
Katsuro
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.05.2011

Ostrzeżenie: (0%)
-----


Witam.

Posiadam forum (punBB), które staram się udoskonalać. Stworzyłem animowane menu w jQuery, którym zamierzałem zastąpić stare. Jednak pojawił się problem z dwoma odnośnikami: profil oraz wyloguj. Obydwa linki posiadają różne końcówki, w zależności od użytkownika, co nie pozwala mi ich dodać do mojego nowego menu. Wiem jak usunąć te odnośniki, zmienić im nazwę (kod podaje niżej), ale jak dodać je do nowego menu, które nie łączy się ze starym nie mam pojęcia. Czy ktoś potrafi rozwiązać mój problem? Byłbym niesamowicie wdzięczny.

(kod na usunięcie "wyloguj" z menu)
Kod
<style>
#brdmenu li#navlogout a {
font-size: 0; }

#brdmenu li#navlogout a:before {
content: "nowa nazwa";
font-size: 11px; }
</style>


Forum testowe, na którym pracuje: http://www.katsuro.pun.pl

Przepraszam za nachalność, ale czy nikt nie potrafi mi pomóc? Spędziłem na szukaniu rozwiązania wiele godzin, ale nic z tego i to forum to moja ostatnia deska ratunku...

Ten post edytował Katsuro 31.05.2011, 18:13:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Nie za bardzo rozumiem, co chcesz dokładnie zrobić. Co oznacza słowo zastąpić w stwierdzeniu "zastąpić menu". Opisz dokładniej problem. Z góry uprzedzam, że samym css-em tego nie zrobisz, a potrzebny będzie skrypt JavaScript. Będzie o tyle łatwiej, że jak sam napisałeś korzystasz z jQuery.
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Nie wiem, jak Ty to zmieniasz. Za wygenerowanie menu w punBB odpowiedzialna jest funkcja generate_navlinks() znajdująca się w pliku functions.php w katalogu include. Linki są generowane z wypisanego "na sztywno" HTML-a, który jest łączony ze zmiennymi globalnymi (dla całego forum). W sumie to wystarczy odpowiednio tę funkcję zmodyfikować. Jeśli zmieniasz menu inaczej, to pokaż tutaj kod odpowiedzialny za te zmiany.
Go to the top of the page
+Quote Post
mortus
post
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


To w takim razie w miejscu, gdzie znajduje się kod na menu jQuery możesz pobrać adres odnośnika wyloguj, który później musisz przypisać do nowego odnośnika.
[JAVASCRIPT] pobierz, plaintext
  1. var logout_link = document.getElementById("navlogout").childNodes[0];
  2. // zakładamy, że element o identyfikatorze nowe_wyloguj to odnośnik <a>
  3. document.getElementById("nowe_wyloguj").setAttribute("href", logout_link);
[JAVASCRIPT] pobierz, plaintext

Jeśli w tym miejscu możesz korzystać z jQuery, to sprawa będzie dużo prostsza (w przeciwnym razie trzeba korzystać z DOM i obsługujących go funkcji).

Jak się dowiedziałem, na pun.pl nie ma możliwości modyfikacji plików forum w tym functions.php. Po prostu nie ma do nich dostępu.

Ten post edytował mortus 2.06.2011, 20:42:19
Go to the top of the page
+Quote Post
mortus
post
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2. // ...
  3. // Twój kod menu jQuery
  4. // ...
  5. var logoutLink = "#";
  6. if($("#navlogout a").lenght > 0) {
  7. logoutLink = $("#navlogout a").attr("href");
  8. }
  9. $("ul.topnav li:last a").attr("href", logoutLink);
  10. // ...
  11. });
[JAVASCRIPT] pobierz, plaintext

Oczywiście trzeba być zalogowanym, żeby to zadziałało.

EDIT
$(document).ready(... już masz.

Ten post edytował mortus 2.06.2011, 21:31:47
Go to the top of the page
+Quote Post
mortus
post
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Kod dobrze wkleiłeś i nic nie trzeba dodawać, ale jest literówka w kodzie. Zamiast lenght powinno być length.
Go to the top of the page
+Quote Post
mortus
post
Post #7





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Prawie dobrze, ale:
[JAVASCRIPT] pobierz, plaintext
  1. $("ul.topnav ul.subnav li:first a").attr("href", profileLink);
[JAVASCRIPT] pobierz, plaintext

Co do ukrywania, to można sprawdzać, czy jest dostępny odnośnik do logowania i jeśli jest, to usuwać pozycje menu:
[JAVASCRIPT] pobierz, plaintext
  1. if($("#navlogin").length > 0) {
  2. // tutaj ukrywamy przycisk wyloguj
  3. $("ul.topnav li:last").css("display", "none");
  4. }
[JAVASCRIPT] pobierz, plaintext


Trzeba mieć na względzie to, że wszystkie powyższe modyfikacje działają tylko dla tego menu, które już istnieje na Twojej stronie. W praktyce oznacza to, że dodanie kolejnego odnośnika do menu lub przesunięcie pozycji "Profil" w menu rozwijanym na np. koniec tego menu, będzie wymagać ponownej modyfikacji skryptu.

Ten post edytował mortus 3.06.2011, 13:07:53
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 01:12