Изменение структуры ссылок

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Изменение структуры ссылок

Сообщение gen » 29 дек 2013, 13:56

Добрый день!
Как замечено вся структура ссылок имеет вид, либо допустим: домен/specialoffers, либо page/(допустим) 2.
При этом 2 это id (столбец) номера в таблице базы данных menu присваиваемых автоматически, a specialoffers (путь к модулю) это название в столбце href той же самой базы данных, устанавливаемого самостоятельно.
Собственно сам вопрос. Как сделать чтобы все ссылки имели вид только page/2, 3, 4 и т.д. без путей к модулю?

Заранее спасибо!
gen
Прохожий
 
Сообщения: 31
Зарегистрирован: 05 окт 2013, 20:15
Очки репутации: 1

Re: Изменение структуры ссылок

Сообщение andipas » 30 дек 2013, 11:04

Никак, т.к. specialoffers и page (модуль menumanager) это разные модули и отображают они разный контент - specialoffers объявления, page - страницы с текстом.

Правила формирования url можно задать в /protected/components/CustomUrlManager.php или в /protected/config/main.php ( urlManager )
Часто задаваемые вопросы. Для правки файлов notepad++, netbeans, phpStorm. Для правки CSS firebug.
Аватара пользователя
andipas
Разработчик
Разработчик
 
Сообщения: 695
Зарегистрирован: 28 дек 2011, 22:37
Очки репутации: 30

Re: Изменение структуры ссылок

Сообщение gen » 30 дек 2013, 11:17

Спасибо ! С наступающим Новым годом! Всего самого наилучшего в новом году!
gen
Прохожий
 
Сообщения: 31
Зарегистрирован: 05 окт 2013, 20:15
Очки репутации: 1

Re: Изменение структуры ссылок

Сообщение andipas » 30 дек 2013, 12:18

gen писал(а):Спасибо ! С наступающим Новым годом! Всего самого наилучшего в новом году!

Спасибо! И Вам того же.
Часто задаваемые вопросы. Для правки файлов notepad++, netbeans, phpStorm. Для правки CSS firebug.
Аватара пользователя
andipas
Разработчик
Разработчик
 
Сообщения: 695
Зарегистрирован: 28 дек 2011, 22:37
Очки репутации: 30

Re: Изменение структуры ссылок

Сообщение gen » 30 дек 2013, 15:01

Еще один вопрос по теме
В файле CustomUrlManager.php
Код: Выделить всё

$langRoute 
'/property/<id:\d+>'=>'apartments/main/view',  
$langRoute '/property/<url:[-a-zA-Z0-9_+\.]{1,255}>'=>'apartments/main/view',
 


где вывод /property/<id:\d+> в строку url а =>'apartments/main/view' - полный путь.

Возможно добавлять к каждой записи дополнительный параметр get метода, допустим /property/<id:\d+> &page=2 ?

Вот в такой конструкции не работает, как возможно это реализовать ?
gen
Прохожий
 
Сообщения: 31
Зарегистрирован: 05 окт 2013, 20:15
Очки репутации: 1

Re: Изменение структуры ссылок

Сообщение andipas » 30 дек 2013, 15:29

Примерно так:

Код: Выделить всё
$langRoute '/property/<id:\d+>' => array('apartments/main/view', 'defaultParams' => array('page' => 2)), 


подробнее о возможностях читайте http://www.yiiframework.com/doc/guide/1.1/ru/topics.url
Часто задаваемые вопросы. Для правки файлов notepad++, netbeans, phpStorm. Для правки CSS firebug.
Аватара пользователя
andipas
Разработчик
Разработчик
 
Сообщения: 695
Зарегистрирован: 28 дек 2011, 22:37
Очки репутации: 30

Re: Изменение структуры ссылок

Сообщение gen » 30 дек 2013, 16:17

andipas писал(а):Примерно так:

Код: Выделить всё
$langRoute . '/property/<id:\d+>' => array('apartments/main/view', 'defaultParams' => array('page' => 2)), 


подробнее о возможностях читайте http://www.yiiframework.com/doc/guide/1.1/ru/topics.url


Почитал, ниче так.

Запрос <? print_r($_GET); ?>
Показал что GET при использовании конструкции
Код: Выделить всё
$langRoute '/property/<id:\d+>' => array('apartments/main/view''defaultParams' => array('page' => 2)),  

не передает никаких параметров вообще.

Как же тогда быть ?
Вообще кроме модуля page
Код: Выделить всё
$langRoute '/page/<id:\d+>'=>'menumanager/main/view',
            
$langRoute '/page/<url:[-a-zA-Z0-9_+\.]{1,255}>'=>'menumanager/main/view'


Ни один модуль параметров не передает.
Тестовый вывод Array ( [id] => 15 )
Может есть еще пути решения?
gen
Прохожий
 
Сообщения: 31
Зарегистрирован: 05 окт 2013, 20:15
Очки репутации: 1

Re: Изменение структуры ссылок

Сообщение gen » 31 дек 2013, 16:22

Как обойти все то что было написано в верху.
Задача решается элементарным способом:

Теория и практика ORE ну и php тоже.
Все ссылки URL на вывод модулей на страницу за исключением модуля page записываются в столбец href таблицы menu и имеют вид к примеру /site/index.
Т.е. написав в строку URL http://ваш домен/site/index, и нажав enter браузер передает методом GET команду которая обрабатывается php скриптом и выведет главную страницу с имеющимися на ней модулями.
Get метод обрабатывается при помощи знака "?". Т.е. если вы пишете в URL http://ваш домен/ ?page=2 то серверный скрипт к примеру <?php $p = htmlspecialchars($_GET['page']); ?>
получает именно ту строку page с идентификатором равным 2. Допустим что у нас есть скрипт который обрабатывает вывод этих ссылок на экран.
То нам нужно добавить к строке site/index в столбце href базы данных menu продолжение строки ?page=2

Для этого в таблице menu добавим столбец допустим active_href, для обозначения активности? чтобы повторно не записать данные в столбец href и не попортить ссылки дублированием значений.

Делается это следующим способом:

Код: Выделить всё

          mysql_query
("UPDATE `menu` SET `href` = 
         CONCAT(`menu`.`href`, '?page=', `menu`.`id`) 
         WHERE `active_href` = 0"
);
       
       
mysql_query("UPDATE `menu` SET `active_href` = '1'
       WHERE `active_href` = 0"
);

 


Пояснения: UPDATE - обновление таблицы menu
SET - что обновляем
CONCAT - объединяем (в данном случае объединяем столбец href таблицы menu с текстовым значением '?page=', и со значением столбца id таблицы menu )
WHERE `active_href`равно нулю (добавленный столбец активности ссылок).

При загрузке сайта и нажатии на ссылки в меню сайта Главная, новости, вопросы и ответы, спец предложения и т.д. получаем допустим "Главная" - URL http://ваш домен/site/index?page=2? где 2 это номер id главной страницы в таблице menu

Второй скрипт SQL выполняется последовательно первому для установки 1 как активной, то есть первый скрипт проверив наличие 1 уже не будет добавлять никаких значений в ячейку href где в active_href есть цифра один.
gen
Прохожий
 
Сообщения: 31
Зарегистрирован: 05 окт 2013, 20:15
Очки репутации: 1


Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

cron