Тема: Деякі результати досліджень безкоштовних CMS
ДЕЯКІ РЕЗУЛЬТАТИ ДОСЛІДЖЕНЬ БЕЗКОШТОВНИХ CMS
З кінця 2010 року у вільний від основної і домашньої роботи час я почав досліджувати особливості безкоштовних CMS на мові PHP. В результаті було отримано наступні дані.
1. Головними причинами припинення підтримки версій CMS співтовариством Інтернет являються:
а) наявність шкідливих кодів (наприклад, Gres за повідомленням декількох антивірусів);
б) наявність множинних уязвимостей в програмних кодах (наприклад, Bitweaver);
в) наявність візуально неконтрольованих програмних кодів (наприклад, Eleanor);
г) виявлення в пакеті файлів по шаблонах
*.7z *.bat *.bin *.bz *.cmd *.com *.dll *.gz *.exe *.git *.github *.idea *.lnk *.rar *.scripts *.svn *.tar *.tx *.zip *_macos* *ds_store* cvs desktop.ini thumbs.db
Яскравим свідоцтвом останнього прикладу стали дві версії phpBB:
- 3.1.10 з файлом
vendor/symfony/console/Symfony/Component/Console/Resources/bin/hiddeninput.exe
- 3.2.0 з файлом
vendor/symfony/console/Resources/bin/hiddeninput.exe
2. CMS по суті є сукупністю об'єктів типу Каталог (Розділ):
Блоги, Веблинки, Галереї, Групи, Документи, Завантаження, Карти, Книги, Контакти, Налаштування, Новини, Опитування, Підписки, Користувачі, Ознаки, Довідки, Статті, Сторінки, Товари, Файли, Форуми і т.д.
Об'єктом типу Каталог (Розділ) є сукупність об'єктів типу Рубрика (Категорія):
Блог (персональний, подієвий, тематичний і т.п.), Веблинк (зовнішній, внутрішній, редирективний і т.п.), Галерея (аудіо, відео, фото і т.п.), Група (адміністратори, редактори, автори і т.п.), Документ (інструкція, ліцензія, сертифікат і т.п.), Завантаження (драйвер, програма, креслення і т.п.), Карта (місця розташування, папок і файлів, сайту і т.п.), Книга (анотація, реферат, текст і т.п.), Контакт (автор, видавництво, редактор і т.п.), Налаштування (відображення, обслуговування, зберігання і т.п.), Новина (наукова, політична, технологічна і т.п.), Опитування (регуляція, тематичний, технічний і т.п.), Підписка (внутрішня, зовнішня, поштова і т.п.), Користувач (ім'я, логін, пароль і т.п.), Ознака (ключ, тег, ярлик і т.п.), Довідка (питання-відповідь, підтримка, допомога і т.п.), Стаття (автор, рубрика, текст і т.п.), Сторінка (титул, рубрика, текст і т.п.), Товар (назва, виробник, вартість і т.п.), Файл (власник, дата, розмір і т.п.), Форум (автор, дата, тема і т.п.) і т.д.
Об'єктом типу Рубрика ("Категорія") є сукупність об'єктів типу Публікація (Повідомлення). Наприклад, Блок (Таблиця) з графічним і текстовим наповненням.
Меню сайту також відповідає вищезгаданій структурі:
CMS_МЕНЮ -> КАТАЛОГ_ВЕБЛИНКІВ -> БЛОК_МЕНЮ (ТАБЛИЦА_МЕНЮ)
Отже, для нормальної роботи CMS досить мати всього 3 функціональні процесори:
а) каталогів (розділів) - Каталогізатор;
б) рубрик (категорій) - Рубрикатор;
в) публікацій (повідомлень) - Публікатор, який можна реалізувати безпосередньо в HTML/CSS на базі блоків (таблиць) з графічним і текстовим наповненням в скинах, темах і шаблонах.
Подібний підхід дозволяє формувати потрібні розширення безпосередньо усередині самої CMS.
3. Необгрунтоване застосування допоміжних "контейнерів" і "шаблонизаторів" для об'єктів, що згадуються в попередньому пункті, завжди призводить до значних втрат продуктивності CMS. Наприклад, розробники Opencart ще в 2006 році показали, що при читанні динамічних сторінок в "шаблонизаторах" за рахунок додаткових перетворень втрачається не менше 40 % швидкодії, а спроби його відновлення за рахунок кешування статичних сторінок тягне за собою багатократне зростання вимог до об'ємів дискового простору і буферів оперативної пам'яті. На жаль, не усі розробники CMS ознайомилися з результатами цих досліджень, але ще можна заглянути в коди експериментальних релизів:
https://sourceforge.net/projects/php-opencart/files/
Відсутність "контейнерів" і "шаблонизаторов" дозволяє реалізувати прості логічні і математичні операції прямо в скинах, темах і шаблонах без втручання в коди движка CMS, наприклад:
- "Free announcements, articles, blogs, news and more in Opencart 2.3.x"
http://forum.opencart.com/viewtopic.php … p;t=166508
4. Особливий попит мають CMS з респонсивними скинами, темами і шаблонами, які дозволяють виконувати автоматичне масштабування і розміщення елементів зображення сторінки сайту на екрані дисплея. Хочу особливо відмітити, що надмірне впровадження JS для відображення сторінок сайту дуже часто призводить до неприємних спотворень зображення в різних браузерах і мобільних пристроях. Слід обов'язково перевіряти якість зображення сторінок сайту при відключених JS. Крім того, для CMS з респонсивними скинами, темами і шаблонами просто потрібний WYSIWYG редактор.
5. Деякі CMS містять вбудовані коди скриптів для виводу аудіо, відео, фото, а також графічної і текстової інформації з медіафайлів за допомогою серверів сторонніх провайдерів послуг типу Google, YouTube і т.п. Але не забуватимемо, що подібні CMS можуть стати базою для проведення масованих спамерных атак на ті ж сервери сторонніх провайдерів послуг. Тому завжди вибирають CMS з кодами скриптів для автономного відтворення аудіо, відео, фото, графічної і текстової інформації з медіафайлів. З цією метою можна використати наступні безкоштовні продукти:
а) AudioJS - форк VideoJS (див. нижче) для відтворення аудіо з усіма темами з VideoJS
https://github.com/kolber/audiojs/archive/master.zip
http://kolber.github.io/audiojs/
http://jedfoster.com/AudioJS/
https://github.com/jedfoster/audiojs
б) VideoJS - HTML5 і Flash відео програвач з відкритим початковим кодом
http://videojs.com/
http://docs.videojs.com/
https://github.com/videojs/video.js/releases
https://github.com/videojs/video-js-swf/releases
в) ViewerJS - компонент для читання документів у форматі PDF і ODF
http://viewerjs.org/getit/
http://viewerjs.org/examples/
https://github.com/kogmbh/ViewerJS
https://github.com/kogmbh/ViewerJS/releases
https://github.com/kogmbh/ViewerJS_release
https://github.com/kogmbh/ViewerJS_release/releases
https://github.com/Ryusei217/ViewerJS
на базі PDF.js і WebODF
http://mozilla.github.io/pdf.js/
http://webodf.org/download/
Для відтворення медіафайлів можна застосувати Flash програвачі, але майже усі з них з потрібними характеристиками є платними.
Любителям торгівлі буде цікаво ознайомитися з SimplecartJS:
http://simplecartjs.org/
https://github.com/wojodesign/simplecar … all/master
Як пишуть розробники, там немає баз даних, ніякого програмування і головного болю. Хоча в це віриться важко.
6. Більшість CMS мають серйозні проблеми з нумерацією сторінок у багатосторінкових публікаціях (повідомленнях), тобто неможливо відразу потрапити на сторінку з потрібним номером. З метою мінімізації рекомендується меню вибору сторінок виконувати за наступним шаблоном (наприклад, для 255 сторінок з поточною 127):
1 < [127] > 255
де
"1" і "255" - веблинки на першу і останню сторінки;
"<" і ">" - веблинки на попередню і подальшу сторінки;
[127] - редаговане поле з виведенням номера поточної сторінки за умовчанням для переходу на сторінку з потрібним номером.
7. Слід подумати про розподіл інформації між базою даних і файлами. Наприклад, у базі даних зберігати параметри налаштування сайту за умовчанням, дані користувачів, доступ груп, інформацію SEO і тому подібне, а у файлах - блоки (таблиці) з графічним і текстовим наповненням. Автоматичний розподіл файлів по окремих папах каталогів (розділів), рубрик (категорій) і публікацій (повідомлень) як мінімум виключить вірогідність появи багатотисячних груп файлів.
8. Деякі CMS (наприклад, Serendipity) реалізують багатомовність за допомогою кодів інтернаціоналізації (ISO 639-1, ISO 639-2, ISO 639-3):
https://en.wikipedia.org/wiki/Language_code
https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
https://en.wikipedia.org/wiki/ISO_639-3
Наприклад, запис за допомогою BB-кодів типу
Ukr CMS - [en]the best in the world content management system[/en][uk]краща у світі система управління контентом[/uk]
відтворюватиметься як
Ukr CMS - the best in the world content management system
при виборі англійської мови і як
Ukr CMS - краща у світі система управління контентом
при виборі української мови. Не забудьте врахувати мову сайту за умовчанням, якщо буде відсутній переклад мовою браузеру відвідувача.
9. Хорошою підмогою в просуванні безкоштовної CMS може служити її застосування в учбових процесах середньої і вищої шкіл, для чого потрібний хороший "мануал". Особисто мені дуже сподобалися описи:
- Yellow
https://developers.datenstrom.se/help/
- UliCMS
http://en.ulicms.de/
10. Практично усі сучасні CMS можна знайти тут: