Чому я не люблю joomla, глюки joomla і архітектурні особливості

Нещодавно у мене з товаришем розгорілася дискусія з приводу доцільності використання Joomla, в процесі якої мені вдалося устаканить всі свої думки з приводу даної досить популярною CMS. Цими думками я і хочу з вами поділитися.

Однак у такого комбайна є досить велика кількість мінусів, які часто сягають корінням в архітектурні особливості самої системи (ці мінуси виправити досить складно) або в реалізацію якихось конкретних завдань (ці мінуси виправити легко). Дану статтю можна розглядати як заклик до розробників компонентів і розробникам самої Joomla поліпшити багато моментів в ній. Сподіваюся, до 4 версії даної CMS ці мінуси будуть виправлені.

1. Загальні проблеми

Великий мінус Joomla, про який часто говорять розробники сайтів - швидкість її роботи. При генерації простого блогу «з коробки» на одну сторінку використовується до 100 запитів до БД. Звичайно, є підтримка кешування, що частково вирішує ситуацію з продуктивністю, але, по-перше, не всі компоненти її використовують, а по-друге, зараз не так вже й просто знайти хостинг з підтримкою memcached. Звичайно, швидкість генерації сторінки в Joomla на хорошому хостингу, при правильній верстці і хороших компонентах - не критичні. Але для проектів середньої навантаженості (десятки тисяч відвідувань на добу) або для сайтів на слабких дешевих хостингах Joomla не підходить, ну а питання високонавантажених сайтів - тема окремого циклу статей.

Реальна проблема - дублі сторінок. Дублі сторінок в Joomla є скрізь: немає канонічного URL для компонентів, часто виникають глюки при пагінацію. Оскільки дублі сторінок негативно впливають на SEO, то проблеми з дублями доводиться вирішувати при допомогою милиць.

2. Роутери та меню

Чому я не люблю joomla, глюки joomla і архітектурні особливості

Не знаю, що курили розробники, коли структуру меню взяли за основу роутера і багатомовності в Joomla, проте так вже склалося історично і поміняти це не так вже й просто. Меню в Joomla - в першу чергу структурний елемент, а вже потім - елемент на сайті (для того щоб меню відображалося на сайті, крім самого меню, необхідно створити модуль меню). Ця особливість нав'язує своєрідний стиль розробки сайтів.

Я бачив багатьох програмістів, які билися головою об стіну, намагаючись вгадати думки розробників Joomla, створюючи багатомовний сайт. Для, наприклад, сайту на трьох мовах вам доведеться створити:

  • Сервісне меню, що посилається на головну сторінку без мов (меню із зірочкою). При чому, дане меню ніякого смислового навантаження не несе, але без нього Joomla працювати відмовляється.
  • По одному меню (в нашому випадку - 3 штуки) з головною сторінкою на різних мовах. Останнім часом я використовую «сервісне меню» (меню без модуля) для таких цілей, в якого розміщую ще й структуру сайту. Дуже зручно для створення графічної (HTML) карти сайту.
  • Якщо ви хочете створити карту сайту (XML карту сайту бажано створювати для прискорення індексації сайту), то вам доведеться створити ще одне сервісне меню для сторінок, які ви хочете виключити з карти сайту (наприклад, форму входу на сайт або сторінку «спасибі за заявку» або будь-які інші сервісні сторінки). Оскільки багатомовність в Joomla нав'язує величезна кількість пунктів меню, то зручніше створювати по одному такому меню для кожної мови.
  • Ну і вже в останню чергу, вам доведеться створювати меню для кожного «графічного» меню на сайті. Часто їх буває 3,4,5 і більше штук (1-2 меню в хеадер, всякі меню в футере і інші). З причин, описаним нижче (див. Мультічзичность) доводиться створювати по одному меню (НЕ пункту меню, а меню) для кожної мови.

Разом, для простого сайту на трьох мовах і двома (!) Меню на сайті ми маємо: 1 + 3 + 3 + 3 + 3 = 13 меню в адмінці і багато геморою.

Моя пропозиція розробникам самої CMS: люди, називайте речі по-людськи. Систему і структуру меню розділіть на 2 речі: структуру сайту і, власне, меню, оскільки і так їх доводиться розділяти.

Крім того, чи роутер, то чи меню в Joomla часто поглюківают і в результаті половина посилань може виглядати нормально (/ about, / contacts і т.п.), а половина в вигляді довгих незрозумілих посилань виду:

Зазвичай JRoute працює нормально для компонентів, а для модулів - через раз. Залежності я не знайшов, напевно, грає роль порядок завантаження модулів меню та інших модулів. Думаю, ці глюки можна легко поправити, проте поки що доводиться ставити «милиці».

3. Багатомовність

4. Компоненти і модулі

Варто віддати належне розробникам самої CMS. Ті компоненти, які постачаються «з коробки» написані на порядок краще, ніж компоненти сторонні. Однак ложка дьогтю є й тут: компоненти і модулі не використовують бібліотеки і всі запити до бази і кешу відбуваються прямо в моделях компонентів і файлах модулів. Отже, при наявності декількох модулів на сторінці, одні і ті ж запити викликаються по кілька разів. Це - те, що можна було б оптимізувати, не змінюючи загальної концепції.

Також не можна вивести 2 компонента на одній сторінці. До кожного пункту меню (який, як ми пам'ятаємо, в Joomla є структурною одиницею) можна прив'язати тільки 1 компонент. Ну і формат виведення компонентів і модулів не дозволяє нормально віддавати заголовок Last-Modified.

5. Обмежений функціонал

Звичайно, Joomla - це як великий трактор або навіть комбайн. Якщо чого в ній немає, то MVC-модель компонентів, велика кількість хуков для плагінів і велика спільнота дозволяє доробляти, допрацьовувати і доважують на неї багато і багато всяких булочок. Але оскільки більшість компонентів пишеться лівою п'ятою, то це, як правило, виливається в те, що сайт починає безбожно гальмувати або якісь хакери вішають на домашню сторінку велику дупу. Але я не про те. Я вважаю що стандартний набір компонентів повинен хоча б відповідати вимогам просунутого блога і хотілося б сказати, чого мені особисто не вистачає в Joomla за замовчуванням.

Підтримка тегів з'явилася тільки в 3 версії (кілька місяців тому) і поки сирувата (в останній версії, наприклад, роутер не генерує нормальних URL-ів).

Так навіщо ж вона потрібна така погана?

Як я вже говорив, Joomla - відмінне рішення для того, щоб за пару вечорів сваять сайт «на коліні», який буде виглядати і працювати більш ніж задовільно. На Joomla можна створити навіть маленький інтернет-магазинчик і він відразу ж буде приносити вам дохід. Простіше кажучи, Jooma - дешеве і швидке рішення, яке вирішить більшість запитів.

І, як на мене, цей блог на Joomla побудувати можна було б взагалі без проблем (ну, з невеликими милицями), проте програмування свого велосипеда мені приносить задоволення. Сподіваюся, скоро буде цикл статей по створенню своєї CMS, яка буде краще ніж Joomla, хоча б в даних речах.

@ Відповідь
На Джумла я сайти роблю далеко не перший рік, для вирішення багатьох завдань доводилося патчить ядро ​​вздовж і впоперек.

Як я говорив, Jooma - дешеве і швидке рішення, яке вирішить більшість запитів вебмайстрів.

Але для великих проектів Joomla не годиться. І для деяких маленьких теж. І багато, часто необхідні завдання теж в Joomla не вирішуються.

А що тоді використовувати для середніх і дрібних проектів? З безкоштовних CMS.

@Костянтин
На жаль, найбільший і єдиний досвід роботи у мене з джумла (

50 якісних комерційних сайтів), тому адекватно відповісти на питання "яка CMS краще" я не можу.

Але Джумла, як я і говорив, відмінно справляється із запитами більшості замовників і на ній можна зробити просто безліч сайтів.

Мінус тільки в тому, що з усіма мінусами Joomla доводиться миритися програмісту.

Спасибі за відповідь.
Буду далі на нашій улюбленій Джумла робити.