[php] Jak ustawić aktywny element menu w zależności od aktualnej strony

Muszę przyznać, iż długo zastanawiałem się nad tytułem – czy dobrze go sprecyzowałem.
Tak jak pisałem we wcześniejszym poście – będę teraz opisywał wszystkie zagwostki, które rozwiązuje podczas tworzenia strony botakchce.pl

Thank you for reading this post, don't forget to subscribe!

Opis problemu

W nowo stworzonym menu – chciałem aby wyróżniał mi się ten element menu – który tyczy się aktualnie przeglądanej strony.

Tu podaje obrazek dla zilustrowania problemu – aby nie było niejasności o co chodzi:
menustrony

  • Jedynka pokazuje ze aktualna strona to index.php – i dla tej strony aktywny element menu to “Strona Głowna”
  • Dwójka pokazuje, że aktualna strona to home.php – umieszczona w folderze erp – i dla tej strony aktywny element menu to “System ERP”

Rozwiązanie problemu – jedno z wielu możliwych

Dodałem do każdego pliku (do którego jest odnośnik z menu) – zmienną:

$activePage = "index";

Gdzie wartość zmiennej $activePage – można dowolnie zdefiniować wg własnego uznania – jednakże musi być unikatowa dla każdej strony
Teraz tylko wystarczy sprawdzić wartość zmiennej z podaną wartością w menu:

      

Dla małej podpowiedzi: class=”active” – tu należy zdefiniować style CSS dla tej klasy aby element się wyróżniał spośród innych.

A tu przedstawiam już kompleksowe rozwiązanie jakie u siebie zastosowałem:

Plik index.php

require_once 'class_display.php'; //klasy dla wyświetlania elementów strony
class show extends elements_site {
	public $activePage = "index"; //przypisanie nowej wartości dla zmiennej zdefiniowanej w klasie matce (elements_site)

//tu reszta kodu z obiektami....
	}
}  


$show = new show(); //nowy egzemplarz klasy
$show->display_site();   // wywołanie funkcji diplay_site() -zdefiniowanej w klasie elements_site - Odpowiedzialnej za wyświetlenie wszystkich elementów strony.

Plik class_display.php

class elements_site {
public $activePage='';
	public function display_site() {
		echo"\n";
		//.....dalsza czesc kodu
		$this->display_header($this ->activePage);
		//.....dalsza czesc kodu
		echo"";
		
	//end display_site()	
	}

public function display_header($activePage){

//tu elementy naszego menu:
// przy każdym elemencie sprawdzamy zmienna $activePage - czy zgadza się z aktualną stroną - jeśli tak: wstawia klasę dla znacznika 
  • : class="active" ?> .....

    Wszystkie nowe pliki wykonujemy analogicznie do pliku index.php - oczywiście zastępując zmienna $activePage odpowiednią wartością, oraz w zależności od potrzeby definiowaniem nowych funkcji itp..