Как вырезать часть url?

  • 4 Ответов
  • 784 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн alexshab

Как вырезать часть url?
« : 29.06.2015, 14:49:33 »
Доброго времени суток?

Есть проблема с одним расширением - JA K2 Filter.
Заметил, что если из url, который он генерирует, убрать "&tmpl=component", то страница отображается корректно.
т.е
/jak2filter?category_id=1&lang=ru&limit=4&ordering=alpha&tmpl=component&xf_4=1&start=8
- не работает
/jak2filter?category_id=1&lang=ru&limit=4&ordering=alpha&xf_4=1&start=8
- работает
Вот и появилась задача вырезать эту часть из url.

Если решать через php, то как вырезать я представляю
$url = JFactory::getURI();
$url = rtrim( $url , '&tmpl=component');
но, как записать $url в думлу не знаю.


Пробовал решить через .htaccess, но что-то делаю не так.
Вот правило, которое я добавил после RewriteEngine On:

RewriteRule ^jak2filter(.*)&tmpl=component(.*)$ jak2filter$1$2 [R=301,L]но, оно почему-то не работает, &tmpl=component остается в строке.

Пробовал найти в компоненте, место где вставляется это выражение - "&tmpl=component", не нашел. Возможно оно добавляется не в нем.

Может кто-то может помочь решить эту задачу?

*

Оффлайн robert

Re: Как вырезать часть url?
« Ответ #1 : 29.06.2015, 19:19:19 »
url, наверное, для вывода в модальном окне. C помощью файлового менеджера ищите "tmpl=component", скорее всего, в папке views (компонент) или tpl (модуль).
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн alexshab

Re: Как вырезать часть url?
« Ответ #2 : 29.06.2015, 20:24:02 »
Я искал с помощью тоталкоммандера "tmpl=component" во всех папках фильтра: компонете, модуле и плагие. И кое-что находил, в т.ч. в его скрипте. Пробовал комментировать те строки. Но "tmpl=component" все равно где-то добавляется.
В скрипте, этот фрагмент упоминается единственный раз, и то, насколько я понимаю вырезается.
params = params.replace('&tmpl=component', '');Еще было в папке модуля фильтра - файле helper.php, там я удалил доклеивание.
//$url = 'index.php?option=com_jak2filter&view=suggestions&m_id='.$this->module->id.'&xf_id='.$field->id.'&tmpl=component';
$url = 'index.php?option=com_jak2filter&view=suggestions&m_id='.$this->module->id.'&xf_id='.$field->id;
Были еще в компоненте в файлах view.html.php и view.raw.php, но, думаю, они из другой области, но и там, на всякий случай убрал.
/*$addLink = JRoute::_('index.php?option=com_k2&view=item&task=add&tmpl=component');*/
$addLink = JRoute::_('index.php?option=com_k2&view=item&task=add');

Кроме файлов фильтра, код "tmpl=component" много раз встречается и в других компонентах.

P.S.
Перерыл все папки. Не трогал только VirtueMart и sh404. Везде поудалял или покометрировал. Все равно где-то добавляется в URL.
Я еще подумал, что удалять в других компонентах рискованно. Что лучше всего аккуратно вырезать через .htaccess только в тех урлах, которые начинаются фильтром.

Не могу понять, почему не работает правило. Уже упростил по максимуму, что бы вырезало хотябы слово "component"
RewriteRule ^(.*)component(.*)$ $1$2 [R=301,L]
Не вырезает.
Либо в правиле ошибка. Либо ему мешают другие правила из .htaccess
Я в этом не силен. Может есть специалисты?
« Последнее редактирование: 30.06.2015, 11:13:22 от alexshab »

*

Оффлайн alexshab

Re: Как вырезать часть url?
« Ответ #3 : 30.06.2015, 17:25:02 »
В целом проблему решил.
Но мне самому решение не очень нравится.
В шаблоне, в файле pagination.php, при генерации ссылок поставил условие и вырезал не нужный код из URL.

И еще нашел, как делается редирект в php:
header('Location: '.$url);

*

Оффлайн Paha_web

  • ***
  • 156
  • [+]1 / [-]0
  • Пол: Мужской
  • Еще правок хотите?
    • Просмотр профиля
Re: Как вырезать часть url?
« Ответ #4 : 15.07.2015, 23:12:24 »
Там в папке с компонентом есть файлик router.php в нем смотрели? И sh404 отключали?