Flexo CMS — для небольших и средних сайтов

J
На сайте с 28.06.2011
Offline
83
9591

Пожалуй пришло время дебютировать и со «своей» CMS.

Корни Flexo CMS уходят к руби-приложению Radiant CMS. Канадец Philippe Archambault решил портировать систему на PHP — в результате получилась Frog CMS о которой, возможно, вы слышали. Было собрано сообщество, система развивалась, но на каком то этапе Philippe забросил проект, и дело стало. Сообщество начало развивать Wolf CMS, но за пару лет так не к чему более прогрессивному, чем Frog и не пришли. Вообщем все эти системы являются потомками династии простых и понятных, но тем не менее довольно мощных, систем управления контентом.

Flexo CMS не исключение. В основе лежат те же принципы, что и у Frog CMS — простота, расширяемость, небольшой размер.

«Что же в ней хорошего?», — спросите вы.

— Небольшой размер установочного архива (не больше мегабайта)

— Не ограниченный уровень вложенности страниц

— Удобное API для подключения плагинов (на основе хуков)

— Удобный доступ к дереву сайта для построения разнообразных меню

— Высокая скорость работы (можно включить плагин Cache — будет еще выше)

— Плагины подключения различных изображений и полей к каждой странице

— Удобный плагин файлового менеджера, который между прочим встроен в плагин TinyMCE, поэтому вставлять различный медиа-контент в редактор удобно

— Плагин TinyMCE с возможностью настройки панелей кнопок

— Возможность использовать PHP+HTML-код вместо WYSIWYG-редактора

— Несколько пользовательских ролей: Администратор, Разработчик, Редактор

— Полностью ваши шаблоны. Можно встроить все что угодно, шаблон любого типа, с любой HTML-разметкой, даже больше: есть возможность отдавать JSON, XML и т.п. данные

— Мини-MVC фреймверк, ООП подход

— Человеко понятные URL (как стандарт уже), но с одной поправкой: можно использовать и без включенного mod_rewrite

Вообщем система никак не ограничивает разработчиков, напротив: предлагает просто небольшую надстройку над PHP для организации структуры вашего сайта.

«Ммм... А что я могу на ней построить?»

Вообщем все что угодно. Например, предшественник Flexo — Frog CMS использовалась в большом количестве проектов: от личных блогов до новостных сайтов с несколькими языками. Что еще раз доказывает: система таит в себе довольно много возможностей.

Можете скачать, потестировать Flexo CMS и принять решение: пользоваться или нет.

А я отвечу на все ваши вопросы, если такие возникнут.

Скриншот:

И еще один скриншот, если стало интересно.

Требования:

— PHP 5+

— MySQL/SQLite

— PDO extension

SlaFko
На сайте с 06.07.2009
Offline
19
#1

при попытке скачать пишет следующее:

500. That's an error.

The server encountered an error and could not complete your request.

J
На сайте с 28.06.2011
Offline
83
#2
SlaFko:
при попытке скачать пишет следующее:

500. That's an error.
The server encountered an error and could not complete your request.

Попробуйте еще раз, обновите страницу — только что проверил — скачивание работает.

vold57
На сайте с 01.10.2007
Offline
261
#3

jmas, если я правильно понял, то:

1. Для разных страниц можно использовать разные шаблоны.

2. Есть функция отложенной публикации.

3. Страницу можно сделать неактивной.

Все верно?

Что представляет собой шаблон? Это один или несколько файлов? Со списком макросов можно ознакомиться?

Аудит сайтов - главная часть это тщательная ручная работа, а не отчеты сервисов и программ (https://vold57.com/audit). Продвижение сайтов (https://vold57.com/seo)
J
На сайте с 28.06.2011
Offline
83
#4
vold57:
jmas, если я правильно понял, то:
1. Для разных страниц можно использовать разные шаблоны.
2. Есть функция отложенной публикации.
3. Страницу можно сделать неактивной.
Все верно?

Что представляет собой шаблон? Это один или несколько файлов? Со списком макросов можно ознакомиться?

1. Да, для разных страниц можно использовать разные шаблоны. Можно наследовать шаблоны от «страниц-родителей»

2. Да, есть. Если установить будущую дату — страница получит статус «Ожидает»

3. Можно, статус «Скрыта» или «Черновик»

Шаблон представляет из себя HTML + простые PHP-вставки.

Примеры:

Получить все необходимые данные о странице:

<?php echo $this->title(); /* Получить заголовок страницы */ ?>
<?php echo $this->breadcrumbs(); /* Получить HTML хлебных крошек к странице */ ?>
<?php echo $this->slug(); /* Получить эквивалент заголовка в стрке браузера страницы */ ?>
<?php echo $this->keywords(); /* Получить ключевые слова страницы */ ?>
<?php echo $this->description(); /* Получить описание страницы */ ?>
<?php echo $this->url(); /* Получить полный URL к данной странице */ ?>
<?php echo $this->level(); /* Получить текущий уровень вложенности */ ?>
<?php echo $this->tags(); /* Получить тэги страницы */ ?>
<?php echo $this->content([[$part_name]], [[$inherit]]); /* HTML-контент страницы, в параметрах можно указать какую часть страницы взять, можно взять часть у страницы-родителя, если у страницы нет такой части */ ?>
<?php echo $this->hasContent([$part_name]); /* Проверить наличие контента конкретной части страницы */ ?>
<?php echo $this->date([$format], [$which_one]); /* Дата публикации страницы, в параметрах можно укзать формат */ ?>
<?php echo $this->link(); /* Тэг <A> — ссылка на данную страницу */ ?>

<?php echo $this->parent([$level])->title(); /* Получить заголовок страницы-родителя */ ?>
<?php echo $this->next()-title(); /* Получить заголовок следующей страницы в данном разделе */ ?>
<?php echo $this->previous()->title(); /* Получить заголовок пред идущей страницы в данном разделе */ ?>
<?php echo $this->children(); /* Получить всех потомков страницы */ ?>
<?php echo $this->find($uri); /* найти страницу по URI */ ?>

Есть так же константы, которые можно использовать в шаблоне:


<?php echo PUBLIC_URL; /* путь к директории public (хранятся файлы для контента) */ ?>
<?php echo CURRENT_URI; /* URI текущей страницы */ ?>

Например, чтобы построить простое меню для текущей страницы (вывести всех страниц-потомков), используем такой код:


<ul id="menu">
<?php foreach ($this->children() as $page): ?>
<li><?php echo $page->link(); ?></li>
<?php endforeach; ?>
</ul>

Чтобы вывести всех потомков главной:


<ul id="menu">
<?php foreach ($this->parent(0)->children() as $page): ?>
<li><?php echo $page->link(); ?></li>
<?php endforeach; ?>
</ul>

Параметр у метода parent - это level (уровень с которого нужно взять страницу-родителя). Можно конечно использовать $this->find('/')->children(), но это менее эффективный способ.

Можно использовать упрощенную запись для вывода информации о странице, пример:

<?=$this->title();?>

Что не намного сложней всех распространенных шаблонизаторов.

vold57
На сайте с 01.10.2007
Offline
261
#5

Поменять страницу-родителя для группы страниц возможно?

J
На сайте с 28.06.2011
Offline
83
#6
vold57:
Поменять страницу-родителя для группы страниц возможно?

Есть возможность копирования и сортировки. Можно «перетащить» страницы в другую категорию.

Второй вариант: скопировать полностью категорию с потомками в другое место, переименовать, старую категорию удалить. Но во втором варианте можно столкнуться с проблемами.

Третий вариант: реализовать плагин, который будет менять страницу-родителя для группы страниц. :)

Четвертый вариант — зайти в phpMyAdmin, в таблицу pages, сделать SQL-запрос:

UPDATE page SET parent_id = X WHERE parent_id = Y

где X — ID страницы, к которой собираетесь цеплять потомков, Y — ID страницы у которой эти страницы-потомки находятся.

vold57
На сайте с 01.10.2007
Offline
261
#7

jmas, спасибо за объяснения.

Скачал, обязательно протестирую за пару дней.

J
На сайте с 28.06.2011
Offline
83
#8
vold57:
jmas, спасибо за объяснения.
Скачал, обязательно протестирую за пару дней.

Было бы чудесно если бы вы написали небольшой отзыв сюда, желательно с пожеланиями для улучшения. ;)

vold57
На сайте с 01.10.2007
Offline
261
#9
Невозможно подключиться к Баде данных! SQLSTATE[28000] [1045] Access denied for user 'flexo'@'localhost' (using password: NO)

Есть инструкция по установке?

J
На сайте с 28.06.2011
Offline
83
#10

Установка Flexo CMS:

  • Скачиваем, распаковываем архив flexo-X.X.X[-beta].zip
  • Копируем файлы в директорию www или public_html на сервере
  • Удаляем файл config.php, если такой присутствует
  • Создаем новю базу данных MySQL (локально через phpMyAdmin и Денвер: http://localhost/Tools/phpMyAdmin/) и нового пользователя (или используем стандартного root : без_пароля)
  • Заходим по адресу http://yoursite.com/install/
  • Указываем адрес сервера БД, по умолчанию localhost
  • Указываем имя пользователя (обычно root) и пароль пользователя (локально на Денвере у пользователя root нет пароля)
  • Указываем имя новосозданной базы в поле «Имя базы данных»
  • Желательно указать префикс для таблиц «flexo_»
  • Нажимаем «Установить!»

Далее следуем инструкциям, которые появятся после установки.

Если вы устанавливаете систему локально на Денвер, то имя пользователя должно быть «root», а не «flexo», возможно вы просто перепутали его с полем «Имя базы данных».

Попробуйте еще раз!

Какие могут быть ошибки:

  • Can't connect to Database! (Не может подключиться к Базе Данных) — возможно директория защищена от записи или не существует. Проверьте путь еще раз.
  • Database schema file not found! (Файл со схемой БД не найден) — откройте директорию install/ и проверьте наличие schema_sqlite(mysql).sql. Если такого файла нет, извлеките из архива с системой и загрузите повторно (лучше это сделать со всеми файлами системы).
  • Problems with creating Database schema! (Невозможно создать схему БД) — в случае с MySQL, это может означать, что БД защищена от CREATE TABLE, либо файл schema_sqlite(mysql).sql битый.
  • Database dump file not found! (Файл с дампом БД не найден) — откройте директорию install/, проверьте наличие dump.sql. Если файл отсутствует, найдите в архиве соответствующий и положите в директорию.
  • Problems with importing Database dump! (Проблемы с импортированием дампа) — БД (в случае с MySQL) защищена от INSERT. Возможно файл install/dump.sql битый.
  • Can't write config.php file! (Не могу записать в файл config.php) — для корневой директории установить права на создание файлов. После установки их убрать.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий