Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z nowym menu w punBB
Forum PHP.pl > Forum > Przedszkole
Katsuro
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...
mortus
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.
mortus
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.
mortus
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.
mortus
[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.
mortus
Kod dobrze wkleiłeś i nic nie trzeba dodawać, ale jest literówka w kodzie. Zamiast lenght powinno być length.
mortus
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.