Форум русской поддержки Joomla!® CMS
11.12.2016, 12:06:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2 3  Все   Вниз
  Добавить закладку  |  Печать  
Автор

k2 router - исключается /item /itemlist/category/ убираем id из ссылок, транлитерация для тегов

 (Прочитано 22050 раз)
0 Пользователей и 1 Гость смотрят эту тему.
lammer
Осваиваюсь на форуме
***

Репутация: +13/-0
Offline Offline

Сообщений: 95


« : 24.01.2013, 16:32:29 »

Всем доброго времени суток!
Я переписал немного стандартный k2 router под Joomla 2.5. В остальном это тот же стандартный router.php, только с тем отличием, что он исключает /item/,/itemlist/category/ из ссылок, вид ссылок становится вида /alias категории на английском/, /alias материала на английском.html, а также для уникальных alias/псевдонимов исключает id (делая ссылки без id), кроме этого переводит на английский в ссылках имена тегов (транслитирацией) согласно правилам Joomla 2.5, что дает более широкую поддержку среди компонентов и модулей, не до конца поддерживающих utf-8, ну и бонусы от поисковиков при индексации. Плюс все старые ссылки уже проиндексированные остаются доступными. Роутер брался из версии k2 2.6.2 и Joomla 2.5. Но не должен создавать проблемы и для k2 2.5. Скачать и опробовать можно в конце статьи k2 router под Joomla 2.5, или из вложений здесь.

[вложение удалено Администратором]
« Последнее редактирование: 24.01.2013, 16:42:44 от lammer » Записан
 
chilly_bang
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 113


« Ответ #1 : 25.01.2013, 14:55:54 »

скажи пожалуйста, а как твой рутер работает относительно проблемы с дублирующимися URL? тут на форума был хак для избавления от этой проблемы...ты как-нибудь вообще эту тематику при переработке рутера затрагивал?
Записан
lammer
Осваиваюсь на форуме
***

Репутация: +13/-0
Offline Offline

Сообщений: 95


« Ответ #2 : 25.01.2013, 17:33:47 »

Никак не затрагивал, так как надо сохранить и старый формат url. Почему? Потому что данный router для k2 можно использовать уже на проиндексированных проектах, где очень важно, чтобы ссылки сохраняли свою связь с содержимым. Перенаправляя же принудительно со старых ссылок на новые с 301 редиректом, если что то не так, мы рискуем вогнать посетителя в циклический редирект (или поисковой робот). Что не есть гуд. В карту же сайта будут уходить ссылки нового вида. Для того, чтобы избежать дублей максимально я в следующих версиях добавлю link rel="canonical" в шапку с новой ссылкой, даже если будет переход по старой. Буквально через пару дней. Просто еще тестирую этот следующий вариант.  
Но, скажу Вам честно, проблема у k2 с дублями url даже не в этом. Это так себе. Проблема с дублями идет со страниц с датами (календаря), страниц по авторам (из компонента и модулей), страниц с тегами. Их все нужно закрывать через rel="nofollow". Тогда процент дублей будет относительно не велик: процентов 10 - 15 всего (до 20 наберется). Уже проходили по нескольким сайтам на k2 эту проблему. И это не мой  router, это стандартный router k2 + изменение для более красивых тегов. А еще самые злостные дубли можно внаглую загнать в компонент редиректов в Joomla 2.5 (дубли категорий).
Записан
chilly_bang
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 113


« Ответ #3 : 25.01.2013, 17:55:43 »

будет ли это решение по убиранию дублей совместимо с вашим рутером?
Код
//full item:
//components/com_k2/templates/default/item.php (Где default - используемый шаблон материала)
 
 
<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>
 
//category
//components/com_k2/templates/default/category_item.php
 
 
<?php
$this->original_link = JRoute::_(K2HelperRoute::getCategoryRoute(JRequest::getVar('id'),
0));
if (JRequest::getInt('start') > 0) $this->original_link .= "?start=" . JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link,'','' ,true);
?>
 
 
Записан
lammer
Осваиваюсь на форуме
***

Репутация: +13/-0
Offline Offline

Сообщений: 95


« Ответ #4 : 25.01.2013, 18:02:22 »

будет ли это решение по убиранию дублей совместимо с вашим рутером?
Код
//full item:
//components/com_k2/templates/default/item.php (Где default - используемый шаблон материала)
 
 
<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>
 
//category
//components/com_k2/templates/default/category_item.php
 
 
<?php
$this->original_link = JRoute::_(K2HelperRoute::getCategoryRoute(JRequest::getVar('id'),
0));
if (JRequest::getInt('start') > 0) $this->original_link .= "?start=" . JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link,'','' ,true);
?>
 
 


Можно и плагином. Нет, там немного по другому будет сделан код. Так не получится, как здесь приведено. Почему? Потому что JRequest::getURI() вернет текущую ссылку, и даже если откинуть $_SERVER['QUERY_STRING'] из запроса, то все равно придется пересобрать ссылку заново через jRoute::_(), которому нужно "скормить" части ссылки. Я бы не делал жесткий редирект. Так как где-то может встретиться код с циклическим (бесконечным) перенаправлением. А как заработает стабильная версия с пересборкой ссылки (я сейчас ее тестирую, дней через пару выложу), то просто буду добавлять в шапку rel="canonical" с правильной ссылкой. Ждите решение скорее всего в тест завтра к утру. Я практически закончил. Думаю сижу, что мог упустить, и проверяю на тесте.
Записан
chilly_bang
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 113


« Ответ #5 : 25.01.2013, 18:17:09 »

а, если уж canonical в head запишется, можно при попытке доступа на неcanonical либо отдавать 404, либо переадресовывать на canonical?
Записан
lammer
Осваиваюсь на форуме
***

Репутация: +13/-0
Offline Offline

Сообщений: 95


« Ответ #6 : 25.01.2013, 18:45:39 »

а, если уж canonical в head запишется, можно при попытке доступа на неcanonical либо отдавать 404, либо переадресовывать на canonical?
А зачем? Я же ставлю себе какую цель: по уже проиндексированным ссылкам СОХРАНИТЬ содержимое. Обратную совместимость. 404 возвращать не нужно. О Redirect 301, 302 я ж говорю - лучше, не делать. Ибо могут возникать технические нюансы, когда перенаправление может стать циклическим. rel="canonical" самый подходящий выход из ситуации. Мы просто говорим: каноническая страница - здесь, все остальное - дубли.
Смотрите, приведу пример: посетитель оставил в закладках старую ссылку на Вашу статью, потом он переходит по ней, и тут ему 404 - он удивится? Да. Куда делась любимая статья? А если его еще и загоняют по редиректам, и в лучшем случае ему браузер напишет: неверное перенаправление на странице. Хорошо? Нет. А так для поисковых систем, которые все понимают rel="canonical" мы говорим - если встретите дубли, то каноническая страница переехала сюда, остальное можно не учитывать.
Записан
Очередной вебмастер
Завсегдатай
*****

Репутация: +54/-0
Offline Offline

Пол: Мужской
Сообщений: 790


лысый умный дядя


« Ответ #7 : 31.01.2013, 12:09:06 »

А зачем?  ... если встретите дубли, то каноническая страница переехала сюда, остальное можно не учитывать.
Абсолютно согласен и поддерживаю. Яндекс и Google оба хорошо учитывают rel=canonical
Кому нужны редиректы - сам сможет их настроить через htaccess...
Записан
Очередной вебмастер
Завсегдатай
*****

Репутация: +54/-0
Offline Offline

Пол: Мужской
Сообщений: 790


лысый умный дядя


« Ответ #8 : 01.02.2013, 07:19:10 »

Опа, походу не одному вам заколебались эти длинные ссылки:
Тоже роутер от коллеги из-за бугра
3 часа назад запостил об этом
Совпадение?
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 662


« Ответ #9 : 01.02.2013, 10:28:49 »

а нельзя-ли это дело плагином выполнить?

Показать текстовый блок

а если избавиться изначально от одноименных алиас категорий и материалов - это может уменьшить кол-во запросов к бд?
т.е. хакнуть файлы админки к2 чтобы при сохранении категории\матегиала была проверка на уникальность алиас, как это реализовано в менеджере меню Joomla (если алиас совпадает то выдает ошибку)

Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 662


« Ответ #10 : 01.02.2013, 10:35:57 »

Опа, походу не одному вам заколебались эти длинные ссылки:
Тоже роутер от коллеги из-за бугра
3 часа назад запостил об этом
Совпадение?
часто одни и теже открытия) совершились одновременно в разных точках мира.


//там на 1 запрос меньше
Записан
Очередной вебмастер
Завсегдатай
*****

Репутация: +54/-0
Offline Offline

Пол: Мужской
Сообщений: 790


лысый умный дядя


« Ответ #11 : 01.02.2013, 17:35:39 »

часто одни и теже открытия) совершились одновременно в разных точках мира.


//там на 1 запрос меньше
Там и роутер работает по другому, не как у Вас, я четно говоря в замешательстве, чье формирование URL более правильное.
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 662


« Ответ #12 : 01.02.2013, 17:48:38 »

не как у Вас

не у меня), я не ТС и не автор
я четно говоря в замешательстве, чье формирование URL более правильное.

а какие критерии? если результат одинаковый

1. кол-во запросов
2. .... ?
Записан
Очередной вебмастер
Завсегдатай
*****

Репутация: +54/-0
Offline Offline

Пол: Мужской
Сообщений: 790


лысый умный дядя


« Ответ #13 : 02.02.2013, 12:56:15 »

Вот именно что не одинаковый.
У ТС помоему разумнее построение урла: алиас меню/материал (если пункт меню является категорией) - вопрос только, что если пункт меню - это несколько категорий.
У западного коллеги работает по принципу Joomla/id-category/id-item
Записан
Очередной вебмастер
Завсегдатай
*****

Репутация: +54/-0
Offline Offline

Пол: Мужской
Сообщений: 790


лысый умный дядя


« Ответ #14 : 08.02.2013, 09:32:23 »

Они все таки взяли вариант от Роберто - http://gist.github.com/phproberto/4687829
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 662


« Ответ #15 : 08.02.2013, 14:58:32 »

Они все таки взяли вариант от Роберто - http://gist.github.com/phproberto/4687829
что-то у меня после замены на новый роутер 2.6.4 стало хуже:

категория:
category/content/2-category2.html

материл:
category2/acticle.html

а, было
category/category2.html

так и должно?
« Последнее редактирование: 08.02.2013, 15:01:41 от jurassik » Записан
Rex_One
Завсегдатай
*****

Репутация: +35/-0
Offline Offline

Пол: Мужской
Сообщений: 468


« Ответ #16 : 10.02.2013, 15:02:27 »

А у меня нормально работает.
В настройках может забыли включить работу роутера?
Кстати уже вышел новый К2 v. 2.6.5
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 662


« Ответ #17 : 10.02.2013, 15:20:47 »

В настройках может забыли включить работу роутера?
тогда бы ссылка на материал имела бы другой вид.

категорию вида:
category/content/2-category2.html
- это генерирует к2_tools - menu
Записан
dreamod
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 82


« Ответ #18 : 09.03.2013, 17:13:53 »

Роутер это замечательно, но подскажите как убрать вот это - "/component/k2/content/"??
Заранее спасибо!
Записан
jurassik
Завсегдатай
*****

Репутация: +49/-1
Offline Offline

Сообщений: 662


« Ответ #19 : 09.03.2013, 17:24:49 »

Роутер это замечательно, но подскажите как убрать вот это - "/component/k2/content/"??
Заранее спасибо!
создать пункт меню категории
Записан
dreamod
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 82


« Ответ #20 : 09.03.2013, 17:28:56 »

создать пункт меню категории
Т.е. делать изврат со спрятанным меню и в него перебить все категории?
Думал есть более изящное решение =)
Спасибо.
Записан
chilly_bang
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 113


« Ответ #21 : 09.03.2013, 19:32:52 »

@dreamod: а этот изврат специфичен не только для К2. Всё, что не имеет собственного пункта меню, обладает урлами, выглядящими так или похоже.
Записан
dreamod
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 82


« Ответ #22 : 10.03.2013, 00:18:55 »

@dreamod: а этот изврат специфичен не только для К2. Всё, что не имеет собственного пункта меню, обладает урлами, выглядящими так или похоже.
да вот припомнил что для вм нечто подобное делал когда не юзад sh404SEF
Записан
koskanalya
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #23 : 21.03.2013, 13:51:49 »

Не понимаю я что никак нельзя убрать /component/k2/ эту хрень из URL если материал не привязан к категории. Хочу чтобы сразу был мой-cайт/материал? Есть какие нибудь идеи кроме использования компонента sh404SEF?
Записан
kozhenevsky
Давно я тут
****

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 206



« Ответ #24 : 22.03.2013, 12:29:47 »

Здравствуйте. Скажите, а как убрать только ID? Мне нужно чтобы item присутствовал в ссылке.
Записан
delvig
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 28


« Ответ #25 : 11.04.2013, 12:51:46 »

Подскажите пожалуйста, а как еще убрать до кучи component/k2 из URL тегов.
Записан
chilly_bang
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 113


« Ответ #26 : 11.04.2013, 12:59:01 »

не убирайте ни ID, ни component/k2 из URL. Наживёте проблем. Google всё и так схавает, если контент интересный. А нагрузка на базу и количество 404 возрастёт как пить дать. Ну и вопросов тут ещё зададите штук стопицот, как от нагрузки и от 404 избавиться... патамушо если нет ID в URL, то и неясно, какой сайт из двух с одинаковыми алиасами грузить... поэтому загрузится первый, а вместо второго 404... ну и тэдэ и тэпэ. имхо.
Записан
delvig
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 28


« Ответ #27 : 18.04.2013, 12:10:41 »

Здравствуйте. Подскажите пожалуйста как вырезать параметр limitstart=0 из урл-ов первой страницы. К примеру, решил использовать плагин Pagebreak - MyJspace для разбиения большого материала k2 на страницы, т.к. стандартный в k2 не работает. В принципе все устраивает, кроме одной хрени. Когда переходишь на следующую страницу в пагинаторе на кнопках "В начало", "Prev" и "1" подсвечивается URL типа http://mysite.ru/category/title?limitstart=0
 Кроме того, в пагинаторе в категориях такая же хрень - на первую страницу идет ссылка с лимитстартом. Работа пагинатора организуется стандартным плагином k2, я так понимаю. Мне тут подсказали, что нужно либо роутер хакать, либо ставить SEF компонент (но делать этого не хочется). Поэтому думаю лучше в роутере пошаманить, подскажите пожалуйста, что и где надо добавить/убрать. Использую хакнутый роутер из первого поста.
Записан
delvig
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 28


« Ответ #28 : 28.04.2013, 22:47:10 »

Проблему решил.
« Последнее редактирование: 28.04.2013, 23:09:56 от delvig » Записан
chilly_bang
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 113


« Ответ #29 : 29.04.2013, 00:12:53 »

@ delvig: так опиши, как решил, не жадничай;) тут же форум, кому-то обязательно понадобится.
Записан
Страниц: [1] 2 3  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet