BG Development


  Reply to this topicStart new topicStart Poll

> Извличане на ърл за промяна
mhp
Публикувано на: 28-07-2010, 21:29
Quote Post



Име: иван
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 28.07.10



Здравейте,
искам да ви запитам за по-добро решение на проблемът, който имам.Ще представя и моето решение накрая.
Имам меню от сорта на:
CODE

<ul>
<li class="bold"> <a href="index.php">Link1</a></li>
<li><a href="index.php?id=shop">Link2</a></li>
<li><a href="asd.php">Link3</a></li>
</ul>

Целта на този клас "bold" , е че променя цвета на съответния линк в менюто.В случая на Link1.Целта ми е, когато сме отворили index.php Link1 да ползва "bold" класа, когато сме отворили index.php?id=shop Link2 да използва дадения клас, а другите не и така нататък за всички линкове от менюто.
До този момент използвах най-простото решение, тоест на всеки <li> таг правих проверка на текущия URL и съответно ако съвпада с този който съм задал, да речем index.php?id=shop, да добавя class="bold" .Проблемът идва от това, че линковете са много и ми се струва тъпо ако сме отворили 20тия линк, да трябва всички линкове от менюто да правят проверката.
Все ми се струва, че има по-оптимално решение, но не ми идва на ума.Така че дайте предложение.
Мерси
PMEmail Poster
Top
prf~
Публикувано на: 28-07-2010, 22:44
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 1
Регистриран на: 28.07.10



Най-простото за което се сещам сега е да сложиш линковете от навигацията в 1 масив и от там да обработваш.
CODE

<?php
      $menu = array(
            array('name'      =>      'Link 1', 'location'      =>      null),
            array('name'      =>      'Link 2', 'location'      =>      'loc1'),
            array('name'      =>      'Link 3', 'location'      =>      'loc2'),
      );
      
      $loc = $_GET['loc'];
      
      print '<ul>';
      foreach ($menu as $nav)
      {
            $styled = ($nav['location'] == $loc) ? ' class="bold"' : '';
            print '<li><a href="?loc='.$nav['location'].'"'.$styled.'>'.$nav['name'].'</a></li>';
      }
      print '</ul>';
?>
PMEmail Poster
Top
felore
Публикувано на: 28-07-2010, 22:48
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 388
Регистриран на: 22.10.09



CODE
<style type="text/css">
.qwe {
      font-size: 20px;
}
</style>

<?php
$menu = array(
      array("name0", "/d/index.php"),
      array("name1", "/d/index.php?id=qwe"),
      array("name2", "/d/index.php?id=asd"),
      array("name3", "/d/index.php?id=zxc")
);

$ptr = preg_replace("/(.*?\.php)(\?id=[^&]*)?.*/", "$1$2", $_SERVER["REQUEST_URI"]);
# echo $ptr;

echo "<ul>";
foreach ($menu as $row) {
     $tmp = preg_replace("/(.*?\.php)(\?id=[^&]*)?.*/", "$1$2", $row[1]);

      echo "<li><a ";
      if ($ptr == $tmp)
            echo 'class="qwe" ';
      echo 'href="' . $row[1] . '">' . $row[0] . "</a></li>";
}
echo "</ul>";
?>

Работи само ако id (по което се идентифицират) е винаги първа в листа с _get променливи :}

Редакция: оправих скрипта, сега идентифицира линковете по страница и по _get променливата ѝ id. Ако и това не те устройва най–добре пейстни всичките си линкове да ги видя :}

Това мнение е било редактирано от felore на 16-08-2010, 08:28
PMEmail Poster
Top
mhp
Публикувано на: 29-07-2010, 01:19
Quote Post



Име: иван
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 28.07.10



QUOTE (felore @ 28-07-2010, 22:48)

Работи само ако id (по което се идентифицират) е винаги първа в листа с _get променливи :}

Не всички линкове са са с ?id=... .Има и линкове, който водят към съвсем друга Php страница.
PMEmail Poster
Top
Bashev
Публикувано на: 29-07-2010, 10:26
Quote Post


Group Icon
Име: Костадин Башев
Група: VIP
Ранг: Почетен член

Мнения: 1857
Регистриран на: 16.06.04



Доколкото разбрах, начина по който го прави mhp е същия, който му предлага felore.


--------------------
Невъзможните неща ми отнемат време!
PMEmail PosterUsers WebsiteICQ
Top
gorgio
Публикувано на: 29-07-2010, 15:11
Quote Post



Име: Георги
Група: Потребител
Ранг: Активен

Мнения: 191
Регистриран на: 03.10.05



И аз ползвам този метод, не виждам какво толкова му е сложното?


--------------------
I reject your reality and substitute my own!
PMEmail PosterUsers Website
Top
mhp
Публикувано на: 15-08-2010, 20:47
Quote Post



Име: иван
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 28.07.10



Ами скриипта на felore работи, само че за линкове от типа на index.php?id=adsd
Нещо не мога да го наглася да работи и за линкове от типа на asd.php , sdsds.php и така на татък.
Малко помощ може ли?
Мерси
PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2008 | BG Development | All Rights Reserved
RSS 2.0