Содержание
CMS на основе CodeIgniter — текущая ситуация / Хабр
На днях мне потребовалось установить движок для англоязычного блога. Проблема в том, что хостинг (VPS с объемом памяти 256 Мб) не тянет WordPress версии 2.6, а в 2.0.11 (которая, возможно, и заработала бы) работают не все нужные мне плагины. В общем, я решил посмотреть, какие сейчас существуют легкие CMS, причем на основе CodeIgniter, как наиболее быстрого и потребляющего мало памяти фреймворка PHP. Требования по функционалу у меня достаточно простые: возможность ведения блога, желательно с SEO-примочками (прописывание заголовков, мета-тегов, генерация Google Sitemap).
Для начала две CMS, которые я не рассматривал, как возможные решения:
MaxSite CMS — русскоязычная CMS, о которой я уже писал. Скажу сразу, что это самая продвинутая CMS на CodeIgniter из всех, перечисленных в этом обзоре, но для меня в данной задаче она не подошла по одной причине — ее русскоязычности, но об этом позже.
ExpressionEngine — замечательная CMS, у которой достаточно много поклонников, к тому же она создана теми же людьми, что и сам CodeIgniter. Но, во-первых, текущая версия (1.6.5) не реализована на CodeIgniter (разработчики планируют перейти на CI только в версии 2), а во-вторых, лицензия на ее коммерческое использование платная ($249.95), а персональный бесплатный вариант я использовать не могу.
Итак, какие варианты есть из того, что мне удалось найти:
Blaze — этот проект, похоже, уже умер, по крайней мере, последние новости системы датируются апрелем 2008 года. Зато он стал родоначальником для нескольких других CMS, которые рассматриваются ниже. Заставить нормально работать эту систему мне не удалось. Практически на любое действие возникали ошибки со ссылками, как с использованием mod_rewrite, так и без него.
Blogmer — честно признаюсь, эту CMS мне не удалось даже поставить, в дистрибутиве я не нашел файла index.php в корневой директории. Попытка подставить файл из самого CodeIgniter к успеху не привела. Информация об установке пакета при этом отсутствует.
Shanti CMS — попытка запуска системы выдает ошибку синтаксиса MySQL, инструкции об установке системы нет
CI-CMS — этот проект вроде бы достаточно живой, по крайней мере, автор периодически выкладывает свою работу в SVN (последние исправления — 23 октября). Система основана на Blaze, позиционируется как «модульная» (пока что есть только модули ядра, типа «блог», «страница» и т.д.). Поставилась легко, смог зайти в админку. Только вот незадача — найти в админке способ публикации материалов (блога и страниц) мне не удалось. Возможно, проблема в браузере, и нужно использовать IE (у меня FF), но это проверять я уже не стал 🙂
InkType — единственная полноценно работающая CMS из перечисленных. Ставится легко, я без проблем адаптировал для нее один из простых шаблонов от WordPress. Но толку от этого достаточно мало: в системе для сайдбара предусмотрено всего 4 виджета — recent posts, search, categories и blogroll, поддержка тегов в постах отсутствует, ну и вообще функционал очень скудный. Будем надеятся, что он будет развиваться, последняя версия системы — от 7 сентября 2008.
Выводы
1. Решения задачи в чистом виде я не нашел
2. InkType — это единственная из рассмотренных CMS, которой можно пользоваться, но только при очень скромных требованиях к функционалу.
3. Единственный выход на текущий момент — это использовать MaxSite CMS, но придется думать, как перевести ее на английский, хотя вероятно, это не так сложно.
MaxSite CMS и CodeIgniter
В последнее время почему-то активизировалась тема о том, что якобы MaxSite CMS идеологически неверно построена. Нужно было делать по туториалу CodeIgniter, а я, подлец, сделал по-другому и теперь, якобы нельзя совместно с MaxSite CMS делать «классические» CodeIgniter-приложения.
Основные претензии сводятся к тому, что в MaxSite CMS используется единый контролер, что не нравится фанатам CodeIgniter, которые не в состоянии продвинуться дальше прочтения хелпов.
Я решил, вместо того чтобы крутить пальцем у виска, объяснить и продемонстрировать использование MaxSite CMS с «классическим» CodeIgniter-приложением.
Но, для начала немного объяснялок.
Устройство CodeIgniter таково, то методы с контролерами определяются из URL вот по такой схеме:
example.com/class/function/id
Контролер — это файл с классом, который ассоциируется с URL. Например
example.com/blog/
Будет вызван файл controllers/blog.php в котором должен быть класс Blog. Если мне нужно вызвать контролер с явно указанным методом, то вызываем так:
example.com/blog/page
То есть контролер/класс Blog, в нем метод page. Еще можно указать прочие параметры, например id:
example.com/blog/page/id
В данном случае id будет передан как параметр метода page.
Это «классическая» схема работы CodeIgniter, где контролеры и их методы имеют жесткую структуру и, соответственно, предопределенный набор URL.
Любой, мало-мальски мыслящий человек понимает, что при таком подходе невозможно задать произвольные URL. Например я хочу, чтобы
example.com/hello
Выводилась страница с короткой ссылкой hello. А также
example.com/contact
Подгружался файл contact.php.
Потом появится другой клиент и скажет, что его не устраивает hello, пусть это будет about, а contact заменить на you_message. Потом появится третий и скажет вообще всё поменять к чёртовой матери и убрать этот contact, как источник спама.
Таким образом уже на этапе разработки необходимо предусмотреть возможнось произвольных методов/контролеров. Именно по этой причине в MaxSite CMS используется _remap(), метод который перекрывает «стандартное» определение методов контролера.
То есть мы можем определить один контролер и в его _remap() получать вызываемый метод. Дальше мы анализируем этот метод и решаем что с ним нужно делать.
Также в CodeIgniter можно задать дефолтный контролер. То есть вместо того, чтобы вызывать
example.com/blog/page/id
Мы можем указать в качестве дефолтного контролера — blog и тогда запросы сократятся до вида:
example.com/page/id
Делается это через роутинг в файле конфигурации routes.php. Для MaxSite CMS указан дефолтный контролер maxsite. Соответственно у нас есть и controllers/maxsite.php. В нем уже используется _remap(), дальше идет инициализация ядра системы и т.д.
Если вы дочитали до этого места и вы все равно не поняли, то вы либо невнимательны, либо не знаете даже азов CodeIgniter. Потому что уже сейчас вы должны сообразить как подключить произвольное CodeIgniter-приложение.
Продемонстрирую.
В комплекте CodeIgniter есть контролер welcome. Соответственно скопируем файл welcome. php в application/controllers и welcome_message.php в application/views. Я понятия не имею (условно) как и что там реализовано, но мне нужно вызвать по адресу example.com «содержимое» welcome.
Идем в routes.php и пишем:
$route['default_controller'] = "welcome";
Обновляем наш example.com и вуаля!, видим «Welcome to CodeIgniter! бла-бла-бла».
Ок, скажете вы, но теперь мы хотим получить доступ к MaxSite CMS! И будете правы, потому что роутер для MaxSite CMS настроен так, что если адрес содержит несколько сегментов, разделенных слэшем «/», то управление передается в контролер maxsite. Вы можете набрать example.com/admin и убедиться, что прекрасно попадает в админку MaxSite CMS.
Видите, изменили одну строчку, и уже какой результат!
Но, если вы делаете свое CodeIgniter-приложение, то скорее всего у вас должен быть другой роутер, например могут быть «blog», «post» и т. д. и всё это отдельные контролеры и их методы. Так что нужно сделать? Правильно, просто переписать условия в роутере!
Например мы хотим получать все запросы на welcome. Делается так:
$route[':any'] = "welcome";
Давайте теперь переиграем задачу. Пусть по умолчанию будет работать MaxSite CMS, а для перехода к welcome будем использовать адрес вида:
example.com/my
Меняем роутер так:
$route['default_controller'] = "maxsite"; $route['my:any'] = "welcome";
Переходим на заданный адрес и замечательно видим, как работает наш уже любимый welcome. При этом у нас также замечательно работает и MaxSite CMS.
Надеюсь, что данный экскурс в routes.php поставит большую и жирную точку на тех, кто утверждает, что в MaxSite CMS нельзя использовать «классические» CodeIgniter-приложения.
Создание сайтов (Украина) →
Создание галереи на MaxSite CMS с помощью XnView
MaxSite CMS один год!
FUEL CMS — система управления контентом CodeIgniter
Система управления контентом для веб-сайтов премиум-класса
Dashboard
Быстро просматривайте важную информацию, такую как трафик вашего сайта, статистику кампаний по электронной почте или ваши последние твиты.
Подробнее
Поиск
Фильтруйте большие списки с помощью быстрого поиска или даже используйте собственные фильтры расширенного поиска.
Подробнее
Восстановить из архива
Сделали ошибку и хотите восстановить предыдущую версию? Без проблем. FUEL по умолчанию архивирует предыдущие версии, что упрощает восстановление старых данных.
Быстрая навигация
Быстрый переход на другие страницы из режима редактирования.
Загрузить файлы просмотра
Создайте свой сайт статически с файлами просмотра, затем загрузите их в CMS для редактирования вашим клиентом, когда вы будете готовы.
Заменить
Немедленно заменить содержимое страницы содержимым другой страницы. Отлично подходит для перемещения черновых страниц на опубликованные страницы.
Многоязычная поддержка
Создавайте оптимизированный для SEO контент страницы на любом языке, который вы хотите. .. включая клингонский.
Подробнее
Поля макета
Выберите из широкого ассортимента настраиваемых встроенных полей формы или создайте свои собственные.
Подробнее
Блоки
Сохраняйте повторяющиеся части вашего сайта, такие как верхние и нижние колонтитулы, в виде блоков и управляйте ими либо как статические файлы, либо в CMS.
Узнать больше
Файлы навигации
Сохраните свою навигационную структуру в статическом файле для облегчения разработки, а затем загрузите в CMS для управления, когда будете готовы.
Подробнее
Переменные сайта
Настройте глобальные переменные страницы, такие как даты авторских прав и адреса электронной почты, и получайте к ним доступ на любой странице.
Подробнее
Простые модули
Превратите свои модели данных в простые модули и управляйте данными в CMS.
Подробнее
Войти как
Администраторы могут войти в систему как другой пользователь и немедленно диагностировать проблемы с разрешениями пользователей.
Узнать больше
Разрешения
Назначьте специальные разрешения на создание, редактирование, удаление и публикацию ваших модулей.
Подробнее
Изменение макета
Быстрое изменение макета страницы во время просмотра страницы.
Инструменты модуля
Запуск инструментов модуля в контексте страницы, таких как SEO-анализ страницы, проверка HTML и проверка ссылок.
Узнать больше
CMS или Framework? Да.
Построено на CodeIgniter
FUEL CMS построено на популярной веб-инфраструктуре PHP CodeIgniter и отлично работает с вашими существующими установками.
Для обоих типов людей
Редакторы контента любят FUEL CMS за ее привлекательный внешний вид и очарование. Разработчики любят его за открытость и продуманность.
Открытый исходный код
Разветвляйте, объединяйте, толкайте и тяните до тех пор, пока ваше сердце не будет удовлетворено. FUEL CMS размещена на GitHub, и ее можно загрузить и использовать совершенно бесплатно.
Вы в отличной компании
Каждый день все больше и больше компаний открывают для себя возможности FUEL CMS.
Alta Bicycle Share
Велопрокат — это инновационный подход к городской мобильности, сочетающий удобство и гибкость частного автомобиля с доступностью и надежностью общественного транспорта, что делает велопрокат идеально подходящим для городских сообществ.
Просмотр веб-сайта
Social Angels
Social Angels — это благотворительное онлайн-сообщество, поддерживающее цели, создающие новые возможности для благополучия людей, организаций и сообществ в Новой Зеландии.
Просмотр веб-сайта
Impression Real Estate
Impression Real Estate Ltd является лицензированным агентом по недвижимости (REAA 2008), отвечающим за управление более чем 1750 объектами недвижимости по всему Окленду.
Посмотреть сайт
Подписаться на @fuelcms
Хотите узнать больше? Потрясающий.
ТОПЛИВО
Осторожнее со спичками. Загрузите FUEL CMS ниже.
Начало работы
Форумы
Ищите ответы, задавайте вопросы и делитесь своими знаниями.
Посетите форумы
Будьте первыми, кто получит интересные обновления, горячие советы и краткие обзоры.
Мы будем использовать ваш адрес электронной почты только для уведомления вас об обновлениях FUEL CMS и для восхитительно редкого информационного бюллетеня.
Особенности: FUEL CMS — система управления контентом CodeIgniter
FUEL CMS — это система управления контентом с открытым исходным кодом, разработанная с функциями для обеих сторон мозга.
Редакторы контента
Разработчики
FUEL CMS
Простой интерфейс
Интуитивно понятный дизайн практически не требует обучения управлению сайтом.
Встроенное редактирование
Редактируйте данные вашей страницы на фактической странице и немедленно смотрите результаты.
Multi-Language
Создавайте оптимизированный для SEO контент страницы на любом языке… даже на клингонском.
Управление активами
Загружайте и управляйте изображениями ваших сайтов, PDF-файлами, таблицами стилей и javascript.
WYS
IS WYG
Переключение из WYSIWYG в интуитивно понятный режим редактирования HTML и обратно в зависимости от настроения.
Открытый исходный код
FUEL CMS с открытым исходным кодом и на GitHub. Сделайте форк и начните вносить свой вклад уже сегодня!
CodeIgniter + CMS
Мы создали FUEL CMS как гибрид поверх CodeIgniter, популярной среды PHP.
Хорошо задокументировано
Быстро освойтесь с подробным руководством пользователя.
Объектно-ориентированный
Простой доступ к функциям FUEL CMS в рамках собственного кода с помощью объекта Fuel .
Расширенная библиотека кода
Помощники по ресурсам, конструкторы меню, расширенные возможности моделей и многое другое.
Но подождите, есть еще
Страницы
- Создание страниц с помощью файлов статического представления или CMS
- Импорт файлов статического представления непосредственно в CMS
- Используйте разработку контроллера Opt-in для создания страниц без создания дополнительных контроллеров
- Вставьте переменные страницы, условные операторы и структуры циклов, используя механизм шаблонов FUEL
Макеты
- Легко создавайте формы для переменных макета и используйте их для построения страниц
- Код, использующий простую структуру массива или расширяющий один из базовых классов компоновки FUEL
Блоки
- Создание блоков в виде файлов статического представления или в CMS
- Импорт файлов блочных представлений в CMS
- Свяжите блоки с их собственными макетами для управления переменными макета
Модели
- Превратите таблицы базы данных в мощные модели
- Простое создание взаимосвязей между моделями
- Настройка объектов возвращенной записи
- Используйте встроенные возможности базы данных CodeIgniter без конфликтов
Формы
- Автоматическое создание форм на основе схем таблиц
- Выберите один из множества встроенных настраиваемых типов полей
- Расширение возможностей формы с помощью архитектуры настраиваемого типа поля
Навигация
- Вывод структуры одного меню в виде вложенного списка, навигационной цепочки или меню с разделителями
- Статическое управление навигационными структурами и импорт в CMS по готовности
- Настройка различных параметров отображения, включая параметры вывода CSS и HTML
Теги и категории
- Создавайте отношения «многие ко многим» с вашими модулями с помощью тегов
- Используйте категории для создания иерархических групп между модулями
Управление пользователями
- Управление возможностями пользователей по созданию, редактированию, публикации и удалению содержимого CMS
- Проверка разрешений пользователя с помощью функции «Войти как» (для администраторов)
Перенаправления
- Управляйте перенаправлениями так же, как маршрутами CodeIgniter
- Требовать подключения HTTPS для обслуживания определенных страниц
- Настройка предпочтительного домена
Безопасность
- Установка паролей разработки
- Ограничить доступ по IP-адресу
- Блокировать пользователей после пользовательского количества неудачных попыток
- Встроенная защита от XSS и SQL-инъекций
- Встроенное хеширование паролей с солью
Расширяемый
- Создание простых и расширенных модулей
- Расширение FUEL CMS с помощью модулей, хуков, информационных панелей и настраиваемых полей форм
- Просмотр последних данных о продажах или данных Google Analytics с помощью настраиваемых информационных панелей
Узнать больше