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

alexshab

  • Осваиваюсь на форуме
  • 53
  • 0
Как вырезать часть url?
« : 29.06.2015, 12: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

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

alexshab

  • Осваиваюсь на форуме
  • 53
  • 0
Re: Как вырезать часть url?
« Ответ #2 : 29.06.2015, 18: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, 09:13:22 от alexshab »
*

alexshab

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

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

*

Paha_web

  • Осваиваюсь на форуме
  • 153
  • 1
  • Еще правок хотите?
Re: Как вырезать часть url?
« Ответ #4 : 15.07.2015, 21:12:24 »
Там в папке с компонентом есть файлик router.php в нем смотрели? И sh404 отключали?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться