Jump to content
  • 0

Автоматическое присваивание параметра с адресной строки всем ссылкам на странице


Енот
 Share

Question

Всем привет! Нужна помощь, не хватает знаний сделать следующую вещь.

У меня в адресной строке, есть параметр, пример http://сайт.com/astrakhan/ru/?gorod=501.

?gorod=501 - тот самый параметр. 

Мне нужно, что бы скриптом, автоматически всем ссылкам на текущей странице присвоить в конце данный параметр, но нужно учесть, что id 501 будет меняться таким способом <a href='?gorod={$gorod->town_id}'>{$gorod->name}</a>

Буду очень благодарен за помощь.

 

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

может - при формировании урлов - проверять пустое ли значение 

$_SERVER['QUERY_STRING']

Если нет - то подставлять его с вопросом.    А ссылку для смены города оставить как есть

Link to comment
Share on other sites

  • 0

как то все накручено, мне просто нужно добавить всем ссылкам на странице, тупо в конец переменную {$gorod->town_id}

 

 

 

через if(isset) проверяете что POST['gorod'] равен 501, а циклом foreach формируете массив ссылок с вашими желаемыми параметрами.

 

gorod = 501 это изменяемый идентификатор. 

Edited by Енот
Link to comment
Share on other sites

  • 0

всем еще раз привет, наконец-то добрался до пк.

 

if(isset(POST['gorod'])) {

  foreach(что-то as что-то) {

    echo '<a href='?gorod={$gorod->town_id}'>{$gorod->name}</a>';

  }

}

Не понимаю логики, зачем в цикл выводить линк на присвоение параметров в url? 

Эта кнопка при нажатии, добавляет в урл параметры http://sire.ru/?gorod=501

Где 501 это {$gorod->town_id}.

Кто поможет готов заплатить

Link to comment
Share on other sites

  • 0
Не понимаю логики, зачем в цикл выводить линк на присвоение параметров в url?

потому что

всем ссылкам

т.е. массив с ссылками, который откуда-то берется :)

четче описывайте - больше будет понимания.

Link to comment
Share on other sites

  • 0

 

Не понимаю логики, зачем в цикл выводить линк на присвоение параметров в url?

потому что

 

 

всем ссылкам

т.е. массив с ссылками, который откуда-то берется :)

четче описывайте - больше будет понимания.

 

 

Прошу прощения, может не так выразился.

В общем что есть, страница, на которой есть некий список ссылок, который выводится циклом:

{foreach параметры}

<a href='?gorod={$gorod->town_id}'>{$gorod->name}</a>

{/foreach}

что получаем к примеру: 

<a href='?gorod=501'>Москва</a>

<a href='?gorod=21'>Киев</a>

<a href='?gorod=144'>Киров</a>

<a href='?gorod=9111'>Харьков</a>

 

при нажатии на любой из которых, в url дописывается http://sire.ru/?gorod=501 (501 - это пример, тут может быть любое другое число в зависимости от нажатия.)

После нажатия мы находимся на той же странице, на которой могут быть еннное количество ссылок <a href="линк">ссылка</a>, но уже с параметром в адресной строке.

Что нужно, тот самый параметр, добавить динамически сразу во все линки на странице которые могут быть, пример: <a href="линк?gorod=501">ссылка</a>

Надеюсь так понятней немного.

Edited by Енот
Link to comment
Share on other sites

  • 0

дак а в чем проблемма то)) вам же дали советы)))

проверяете через isset существование в адрессной строке города, если есть то записываете в переменную 

$city = "?gorod=501

иначе

$city = ""

 

И подставляете ко всем ссылкам на странице переменную $city
Но тут учесть нужно, возможно какие то плагины используют тот же подход, но формируются при создании модели (выборка sql) или обработке в контроллере(обработка модели)  вообщем на самом деле всё просто, нужно только смекалку применить =)

 

при экзотическом подходе по типу опенкарт - вообще можно через str_replace()

 

во. придумал

<?phpfunction  check_city($url){ if(isset($_GET["gorod"]) and !empty($_GET["gorod"])){     $city = "gorod=" . $_GET["gorod"];     preg_match("/?/",$url,$check_get);  // проверяем на наличие в строке знака вопроса     $url = count($check_get)>0? $url .= "&".$city : $url .= "?" . $city;  //подставляем с апперсендом или с вопросом    } return $url;   // возвращаем готовую ссылку}?><!-- в нужной ссылке подключаем через функцию --><a href="<?= check_city('/test1') ?>" >ссылка куда то</a><a href="<?= check_city('/test2') ?>" >ссылка куда то</a><a href="<?= check_city('/test3') ?>" >ссылка куда то</a>

upd: подправил код - апперсенд не в том месте поставил

поправка2:  возможно в паттерне preg_match знак вопроса нужно экранировать, точно не помню

Link to comment
Share on other sites

  • 0

Ох что то затянулись рождественские праздники. 

Вроде бы все работает, только

 

<b>Warning</b>: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Compilation failed: nothing to repeat at offset 0 in <b>/var/www/логин/data/www/сайт.com/123.php</b> on line <b>5</b><br />   /test3?gorod=511" >ссылка куда то</a>

И еще, это все бы на JS  :blush:

А то я хз, или php покатит на том движке, а его шаблоне.

 

5 строка это 

$url = count($check_get)>0? $url .= "&".$city : $url .= "?" . $city; //подставляем с апперсендом или с вопросом

 

P/s не решил :(

Edited by Енот
Link to comment
Share on other sites

  • 0

я ниже приписку сделал. экранировать нужно знак вопроса. так /\?/    ...  (а может и так /\\?/)

Да увидел, все норм... в общем пофиг что на пхп, как то приспособлю...

НО, только что вспомнил что никаких манипуляций с ссылками нельзя делать(

Т.е <?= check_city('/test1') ?> это я никак не сделаю, нужно что бы без редактирования тега <a>, есть вариант? Просто ссылок на странице оооочень много, и они генерируются движком на лету.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy