Нова система роутінга в Joomla! 3.8

  1. Вступ
  2. Увага!
  3. Зміни в URL
  4. Як включити новий роутинг в Joomla! 3.8
  5. Примітка
  6. Що очікує роутинг Joomla! в майбутньому?
  7. висновки
  8. Примітка

З виходом версії Joomla! 3.8 було зроблено одне з найбільш очікуваних поліпшень для цієї CMS - нова система роутінга URL адрес (посилань) сайту. Як завжди, при розробці нової можливості була залишена сумісність зі старим варіантом роутінга, що дозволить нормально функціонувати компонентам, які ще не перейшли на новий роутер. При цьому системні компоненти (Матеріали, Контакти, Користувачі і Стрічки новин) вже підтримують новий роутер з усіма його можливостями, які більш детально розглянуті нижче.

Вступ

Нова система роутінга дозволяє розробникам спростити процес написання коду роутера, а адміністраторам використовувати більше параметрів роутінга для настройки процесу формування URL адрес (в тому числі і дуже важливу можливість видалення ID елементів з URL адреси).

Починаючи з Joomla! 3.8, для компонентів, що підтримують новий роутер, є можливість його запуску в одній з трьох різних конфігурацій:

  • поточна система роутінга (яка залишатиметься за замовчуванням для нових установок і рекомендована при оновленні існуючих сайтів)
  • нова система роутінга
  • нова система роутінга з віддаленим ID елементів

В результаті оновлюватися можна не побоюючись, що на сайті несподівано змінюватися URL адреси сторінок.

Увага!

Нові URL адреси, що генеруються новою системою роутінга, не на 100% сумісні з існуючим роутером. У зв'язку з цим для існуючих сайтів не рекомендується переходити на новий роутер без попередньої ретельної перевірки всіх існуючих URL адрес. При переході на новий роутер потрібно усунути зміни URL або виконати 301 редирект ( Moved Permanently ) Зі старого URL на новий.

Для нових сайтів рекомендується використовувати нову систему роутінга.

Зміни в URL

Розглянемо кілька прикладів URL адрес при включеній опції SEF. Це дві сторінки з набору тестових матеріалів з кожної з перерахованих вище опцій роутінга:

  • Сторінка категорії Animal Photo Gallery
    • Поточний роутинг - / article-categories / 72-park-site / photo-gallery / animals
    • Новий роутинг з ID елементів - / article-categories / 26-park-site / 28-photo-gallery / 72-animals
    • Новий роутинг без ID елементів - / article-categories / park-site / photo-gallery / animals
  • Сторінка Koala Article
    • Поточний роутинг - / article-categories / 72-park-site / photo-gallery / animals / 25-koala
    • Новий роутинг з ID елементів - / article-categories / 26-park-site / 28-photo-gallery / 72-animals / 25-koala
    • Новий роутинг без ID елементів - / article-categories / park-site / photo-gallery / animals / koala

Числа в URL - це ID відповідних категорій і статей в базі даних Joomla !.

Якщо новий роутер і опція Remove ID включені, ідентифікатори видаляються з URL сторінки. Це дозволяє створити більш чисті і дружні URL адреси, що буде корисно як для користувачів сайту, так і для SEO.

Як включити новий роутинг в Joomla! 3.8

Роутінг для URL адрес в Joomla! включається як завжди в загальних налаштуваннях сайту. Якщо ж потрібно включити його новий алгоритм роботи, наприклад, для матеріалів Joomla !, то потрібно зайти в налаштування компонента матеріалів. Для цього в головному меню адміністративної частини сайту переходимо до пункту Матеріали / Менеджер матеріалів і натискаємо на кнопку Налаштування в правій верхній частині сторінки. Після цього переходимо на вкладку налаштувань Інтеграція і бачимо новий пункт URL Routing зі значеннями Stable і Experimental.

Після цього переходимо на вкладку налаштувань Інтеграція і бачимо новий пункт URL Routing зі значеннями Stable і Experimental

При виборі Experimental варіанти настройки URL Routing стає доступним пункт Remove IDs from URLs. При встановленні значення в Та, ID елементів (в даному випадку категорій і матеріалів) будуть видалені з URL адреси матеріалу.

Аналогічні настройки доступні для компонентів Контакти, Користувачі і Стрічки новин.

Примітка

Ще раз відзначимо, що застосування нового алгоритму роутінга Joomla! може змінити URL сторінки, в слідстві чого існуючий (і проіндексований пошуковими системами) URL сторінки може віддавати 404 відповідь (сторінка не знайдена). Розробники продовжують обговорювати ідеї плану міграції, щоб зберегти старі URL адреси.

Що очікує роутинг Joomla! в майбутньому?

судячи з інтерв'ю з Hannes Papenberg (Який і є провідним розробником нового роутера) в Joomla! 4 планується повністю позбутися від старої системи роутінга. Це цілком логічно, оскільки при зміні мажорній версії в релізі підтримка забезпечення сумісності є не обов'язковою, а видалення старого коду спрощує підтримку і подальшу розробку CMS. У підсумку з виходом Joomla! 4 розробники розширень повинні будуть врахувати ці зміни і внести відповідні правки до свого код, щоб забезпечити підтримку нової системи роутінга.

Тут же Hannes Papenberg акцентує увагу на перевагах нового роутера для розробників додатків і адміністраторів сайтів, серед яких можна вижеліть:

  • менше коду при написанні роутера, сам код більш простий і зрозумілий
  • роутер пишеться у вигляді php класу на основі базового, слідуючи принципам ООП
  • сторонні розробники отримають можливість модифікації поведінки роутера без правки файлів ядра додатки
  • більш продуктивний код
  • відсутність дублів контенту

Після видалення старого роутера в Joomla! 4 команда розробників планує приділити увагу розширенню опционального функціоналу нового роутера.

висновки

Власникам сайтів перед оновленням Joomla! до версії 4 варто перевірити всі розширення на коректність роботи з новим роутером, налагодити процес міграції старих посилань на нові і переходити на новий роутинг Joomla !. До цього часу всі популярні компоненти Joomla! вже повинні будуть використовувати можливості нової системи роутінга і вирішити питання коректного переїзду при зміні URL адрес. Панікувати тут точно не варто, оскільки завжди є варіант 301 редиректу зі старих URL на нові. Питання тільки в автоматизації процесу.

Варто також відзначити, що наявний (старий) алгоритм роутінга у системних компонентів (Матеріали, Контакти, повідомлення та т.д.) вже давно дозволяють домогтися того, щоб прибрати ID елемента з URL адреси сторінки. На цей рахунок написана маса матеріалів, шукати варто ключове слово sef_advanced_link. Це ім'я параметра, який можна додати в конфігураційний файл компонента і домогтися бажаного ефекту. Для тих, хто користується цією можливістю, перехід на новий роутер повинен бути абсолютно безболісний, якщо в новому роутере вибрати параметр видалення ID елементів. У цьому випадку посилання сторінок повинні залишитися незмінними.

Примітка

Зверніть увагу, що при додаванні параметра sef_advanced_link, наприклад, в компонент матеріалів Joomla! ви ніяк не торкаєтеся код самого роутера, все потрібне вже є в ньому. Але поскольу самого параметра sef_advanced_link в конфігураційному файлі немає, то він може бути знищений при оновленні Joomla !. Якщо в конфігураційний файл компонента матеріалів будуть внесені зміни розробниками і він потрапить в черговий реліз Joomla !, то після поновлення параметр sef_advanced_link пропаде з файлу і зі сторінки налаштувань, але (УВАГА!) Не з бази даних, де зберігаються настройки після збереження. Виходить, що після поновлення Joomla! параметра на сторінці налаштувань немає, але діяти він продовжує. Проблеми можуть виникнути, тільки якщо повторно зберегти настройки після оновлення Joomla !. У цьому випадку значення налаштувань будуть переписані в базі даних вже без параметра sef_advanced_link, а в коді буде використовуватися його значення за замовчуванням - 0. В цьому випадку ID елементів (наприклад, матеріалів на сайті) знову будуть додані в URL адреси. Так що будьте уважні, зберігаючи налаштування компонента матеріалів (або інших системних компонентів, де необхідно прибрати ID елементів з URL) після поновлення Joomla!

В майбутньому?
В майбутньому?