Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Menu w php
Poczatkujacy_Web
post
Post #1





Grupa: Zarejestrowani
Postów: 145
Pomógł: 0
Dołączył: 30.07.2012
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Witam mam menu zrobione w php, includuje je na każdje podstronie, plik menu wygląda mniej więcej tak:


  1. <?php
  2. if (isset($_GET['page_id'])) {
  3. $page_id = $_GET['page_id'];
  4. }
  5.  
  6. ?>
  7.  
  8.  
  9.  
  10. <li class="<?php echo ($page_id == 1) ? 'active' : 'no-active' ?>">
  11. <a href="index.php?page_id=1" >HOME</a>
  12.  
  13. </li>
  14.  
  15. <li class="<?php echo ($page_id == 2) ? 'active' : 'no-active' ?>">
  16. <a href="o-mnie.php?page_id=2" >O Mnie</a>
  17.  
  18. </li>
  19.  


Wyżej jak odczytuje a element li w zależności na której stronie jesteśmy dostaje klace active albo no-active.

Moim problemem jest jak zrobić aby po wejściu na stronę w momencie w którym nie mamy kliknięte w żadną podstronę, czyli żaden element id nie jest przekazywany domyślnie strona index.php dostała klasę active?
Go to the top of the page
+Quote Post
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. <?php echo (!isset($_GET['page_id'])) ? 'active' : 'no-active' ?>
Go to the top of the page
+Quote Post
Poczatkujacy_Web
post
Post #3





Grupa: Zarejestrowani
Postów: 145
Pomógł: 0
Dołączył: 30.07.2012
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Cytat(Turson @ 13.03.2014, 00:09:03 ) *
  1. <?php echo (!isset($_GET['page_id'])) ? 'active' : 'no-active' ?>



Ten kod dodaje napis active do każdej podstrony... ja chciałbym żeby dodawał klasę activ do elementu li strony index.php po wczytaniu strony przez przeglądarkę, próbuje przerobić to jakoś ale nie potrafię ;/

nie chce mi to działać w żaden sposób ;/
Go to the top of the page
+Quote Post
IProSoft
post
Post #4





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


  1. $page_id = isset($_GET['page_id']) ? $_GET['page_id'] : 1;

Go to the top of the page
+Quote Post
YourFrog
post
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 22
Dołączył: 10.01.2014

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


Dodam tylko dbaj o swój kod. Czytelność zaprocentuje w przyszłości.

  1. <?php
  2.  
  3. $page_id = (isset($_GET['page_id']) ? $_GET['page_id'] : 1);
  4.  
  5. $menu = array(
  6. array('page_id' => 1, 'name' => 'HOME', 'href' => 'index.php?page_id=1'),
  7. array('page_id' => 2, 'name' => 'O mnie', 'href' => 'index.php?page_id=2')
  8. );
  9.  
  10. $html = '';
  11. foreach($menu as $val)
  12. {
  13. $html .= '<li class="' . ($page_id == $val['page_id'] ? 'active' : 'no-active') . '">
  14. <a href="' . $val['href'] . '" >' . $val['name'] . '</a>
  15. </li>';
  16. }
  17.  
  18. echo $html;



@Edit
Notepad++ nie lubi tego forum jeśli chodzi o formatowanie (IMG:style_emoticons/default/tongue.gif)

Ten post edytował YourFrog 13.03.2014, 08:33:01
Go to the top of the page
+Quote Post
Poczatkujacy_Web
post
Post #6





Grupa: Zarejestrowani
Postów: 145
Pomógł: 0
Dołączył: 30.07.2012
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Cytat(YourFrog @ 13.03.2014, 08:30:57 ) *
Dodam tylko dbaj o swój kod. Czytelność zaprocentuje w przyszłości.

  1. <?php
  2.  
  3. $page_id = (isset($_GET['page_id']) ? $_GET['page_id'] : 1);
  4.  
  5. $menu = array(
  6. array('page_id' => 1, 'name' => 'HOME', 'href' => 'index.php?page_id=1'),
  7. array('page_id' => 2, 'name' => 'O mnie', 'href' => 'index.php?page_id=2')
  8. );
  9.  
  10. $html = '';
  11. foreach($menu as $val)
  12. {
  13. $html .= '<li class="' . ($page_id == $val['page_id'] ? 'active' : 'no-active') . '">
  14. <a href="' . $val['href'] . '" >' . $val['name'] . '</a>
  15. </li>';
  16. }
  17.  
  18. echo $html;



@Edit
Notepad++ nie lubi tego forum jeśli chodzi o formatowanie (IMG:style_emoticons/default/tongue.gif)


Dziękuje, bardzo mi pomogłeś (IMG:style_emoticons/default/smile.gif)

a jak z tego zrobić ładne linki? w .htaccess jakoś?
Go to the top of the page
+Quote Post
YourFrog
post
Post #7





Grupa: Zarejestrowani
Postów: 124
Pomógł: 22
Dołączył: 10.01.2014

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


Mod tego forum na swoim blogu opisał jak odczytywać ładne linki. Wydaje mi się że na początek ci to wystarczy. Oczywiście można przez .htaccess'a go robić ale moim skromnym zdaniem mija się to z celem.

Ewentualnie popatrz na system routingu w innych projektach jak symfony2 (maja dobry aczkolwiek ciężki system routingu).

Jeżeli natomiast chodzi o tworzenie ładnych url w kodzie to sposobów jest wiele i różnie ludzie to robią. Ja na początku projektu zawsze ustalam ładne linki i je bezpośrednio w kodzie sobie wpisuje. Jednak jeżeli chcesz mieć dynamiczne to niestety nie obędzie się bez jakieś klasy która to zrobi.

Prosty przykład oparty o klasy. Poniżej przedstawiam tylko sposób generowania linków abyś mógł to użyć w swojej aplikacji to już musisz dostosować
  1. <?php
  2.  
  3. namespace YourFrog\NiceUrl\Interfaces;
  4.  
  5. /**
  6.  * Interfejs opisujacy API linków
  7.  * @author Paweł Stelmasiak <YourFrog>
  8.  */
  9. interface Link
  10. {
  11. /**
  12. * Obowiazkowa metoda obsługujaca generowanie linków
  13. * @return string
  14. */
  15. public function create(array $arr);
  16. }
  17.  
  18. namespace YourFrog\NiceUrl;
  19.  
  20. use \YourFrog\NiceUrl\Interfaces\Link as I_Link;
  21.  
  22. /**
  23.  * Klasa obsługujaca linki w aplikacji
  24.  * @author Paweł Stelmasiak <YourFrog>
  25.  */
  26. class Link implements I_Link
  27. {
  28. /**
  29. * Tworzenie linków
  30. * @return string
  31. */
  32. public function create(array $arr)
  33. {
  34. $url = array();
  35.  
  36. foreach($arr as $key => $value)
  37. $url[] = $key . '-' . $value;
  38.  
  39. return implode('/', $url);
  40. }
  41. }
  42.  
  43. namespace YourFrog\NiceUrl;
  44.  
  45. /**
  46.  * Klasa odpowiedzialna za zwrócenie odpowiedniej klasy do obsługi linków
  47.  * @author Paweł Stelamsiak <YourFrog>
  48.  */
  49. class Factory
  50. {
  51. /**
  52. * Instancja klasy obsługujacej linki
  53. * @var ILink
  54. */
  55. static protected $_instance;
  56.  
  57. /**
  58. * Zwraca klasę obsługujaca linki
  59. * @return ILink
  60. */
  61. static public function factory()
  62. {
  63. if( self::$_instance === null )
  64. self::$_instance = new Link();
  65.  
  66. return self::$_instance;
  67. }
  68. }
  69.  
  70. namespace YourFrog\Menu;
  71.  
  72. /**
  73.  * Klasa reprezentujaca menu
  74.  * @author Paweł Stelmasiak <YourFrog>
  75.  */
  76. class Element
  77. {
  78. /**
  79. * Identyfikator strony
  80. * @var integer
  81. */
  82. protected $pageID;
  83.  
  84. /**
  85. * Nazwa elementu
  86. * @var string
  87. */
  88. protected $name;
  89.  
  90. /**
  91. * Konstruktor
  92. */
  93. public function __construct($pageID, $name)
  94. {
  95. $this->pageID = $pageID;
  96. $this->name = $name;
  97. }
  98.  
  99. /**
  100. * Zwraca nazwę podstrony
  101. * @return string
  102. */
  103. public function getName()
  104. {
  105. return $this->name;
  106. }
  107.  
  108. /**
  109. * Sprawdza czy podany identyfikator zgadza sie z tym w menu
  110. * @return boolean
  111. */
  112. public function isPage($pageID)
  113. {
  114. return ($this->pageID === $pageID);
  115. }
  116.  
  117. /**
  118. * Zwraca link do menu
  119. * @return string
  120. */
  121. public function getLink()
  122. {
  123. return \YourFrog\NiceUrl\Factory::factory()->create(array('page' => $this->pageID, 'title' => $this->getTitle()));
  124. }
  125.  
  126. /**
  127. * Zwraca tytul strony potrzebny do url'a
  128. */
  129. protected function getTitle()
  130. {
  131. $str = strtolower($this->name);
  132.  
  133. return str_replace(
  134. array(' ', 'ę', 'ś', 'ć'), //Reszte liter sam sobie dopisz
  135. array('_', 'e', 's', 'c'),
  136. $str
  137. );
  138. }
  139. }
  140.  
  141.  
  142. //Gdzieś w pliku menu.php
  143.  
  144. $pageID = (isset($_GET['page_id']) ? $_GET['page_id'] : 1);
  145.  
  146. $menu = array(
  147. new \YourFrog\Menu\Element(1, 'HOME'),
  148. new \YourFrog\Menu\Element(2, 'O mnie')
  149. );
  150.  
  151.  
  152. $html = '';
  153. foreach($menu as $val)
  154. {
  155. $html .= '<li class="' . ($val->isPage($pageID) ? 'active' : 'no-active') . '">
  156. <a href="' . $val->getLink() . '" >' . $val->getName() . '</a>
  157. </li>';
  158. }
  159.  
  160. echo $html;

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 1.10.2025 - 08:57