SkyBlueCanvas бесплатная opensource CMS с классической функциональностью, не использующая базу данных MySQL
Достоинства: простая и понятная система. Имеет встроенный визуальный редактор TinyMCE. Позволяет создавать древовидную структуру, однако древо не визуализируется в админке. Позволяет создавать многоуровневые меню, однако с использованием небольшого php-программинга. Не использует Базу Данных.
Недостатки: англоязычная, проблемы с кириллицей, требующие модификаций ядра, не все они решены. Отвратительная документация и, как следствие, проблемы с установкой плагинов. И еще автор CMS 28 марта 2011 г. выставил проект на продажу, так как не имеет ресурсов для его дальнейшего корректного развития. Update: кто-то приобрел движок и взялся за его дальнейшее развитие. Что ж, отлично, будем ждать новых релизов с поддержкой Юникода!
Внимание! Разработка системы брошена, официальный сайт www.skybluecanvas.com продан. Вот так тоже бывает :(
И это грустная история. Один энтузиаст сделал эту систему, всем понравилось, она бурно развивалась, у проекта была огромная посещаемость но... разработчику было интересно писать код, а не заниматься монетизацией. А система брала у него все больше времени и сил, а как на этом заработать он не мог или не хотел придумать.
В итоге он в какой-то момент сорвался, закрыл проект и кажется, выставил домен на продажу...
FAQ
Проблема с кириллической кодировкой" hide="Проблема с кириллической кодировкой
Заменить в /includes/xml.parser.php со строчки 147:
{
if ($k != 'description' &&
$k != 'type' &&
$k != 'id' &&
trim($k) != '')
{
$indent = '';
if (isset($obj->id) ||
$i != 0)
{
$indent = str_repeat(' ', 6);
}
$xml .= $indent.$k.'="'.htmlentities($v).'"';
$xml .= ($i + 1) != $count ? "\r\n" : '' ;
$i++;
}
}
на
{
if ($k != 'description' &&
$k != 'type' &&
$k != 'id' &&
trim($k) != '')
{
$indent = '';
if (isset($obj->id) ||
$i != 0)
{
$indent = str_repeat(' ', 6);
}
$xml .= $indent.$k.'="'.htmlentities($v, ENT_COMPAT, "UTF-8").'"';
$xml .= ($i + 1) != $count ? "\r\n" : '' ;
$i++;
}
}
Проблема с mod_rewrite и 404
Если htaccess существует (путь даже пустой), SkyBlueCanvas своим движком включает переписку ссылок в разделах, что на кириллице глючит. Пришлось залезть в ядро и вырезать этот кусок, чтобы 404 заработала.
core.php, 331 строчка: сделать условие всегда false.
Зачем я это сделал? Затем, что хотел включить 404. Пришлось сделать это таким кодом в htaccess:
ErrorDocument 404 http://www.nightrun.ru/index.php?pid=21
, где 21 - это ID-шник 404 страницы из админки.
Установка плагина FormBuilder (для создания форм регистраций) ext_formbuilder.zip
Инструкции не верны. Ставить так:
- Install the 'forms' Manager in /skyblue_root/managers/
- Install the 'forms' Fragment in /skyblue_root/data/skins/your_skin/fragments/
- Install the 'plugin.formbuilder.php' in /skyblue_root/data/plugins/
- Install the 'plugin.fragments.php' in /skyblue_root/data/plugins/
{plugin:fragment(forms,head,2)}
- это в
{plugin:fragment(forms,body,2)}
- а это в визуальном редакторе в страницу.
Остальное в соответствии с инструкциями.
Похоже, чтобы заполненная форма как-либо обрабатывалась (например, сохранялась), необходимо программировать отдельный плагин. Well, it should be researched...
Установка плагина Fragmentor (для передачи нескольких параметров включаемому фрагменту) plugin_fragmentor.zip
Инструкции не верны и не полны. Ставить так:
- скопировать по ФТП файл plugin.fragmentor.php в \data\plugins
- для вывода фрагмента внутри html-макета, использовать синтактсис
<!--fragment(name=phphgallery&view=view)-->
, причем директория с фрагментом не должна содержать никаких спец.символов, даже дефиса! - для вывода фрагмента из контента использовать конструкцию
{fragment(name=phphgallery&view=view)}
, но при этом вывод контента для этой странице в ~html-макете также должен обязательно производиться через fragmentor, вот так:<!--fragment(name=page&view=view)-->
, иначе код не отпарсится.
Интеграция простой бесплатной фотогалереи bolGallery
- установите плагин Фрагментор
- создайте в data\skins\ваш_скин\fragments\ директорию phphgallery
- создайте в ней следующие файлы:
functions.php:
defined('SKYBLUE') or die('Bad file request');
// вытаскиваем параметы из строки вызова фрагмента:
$folder = Filter::get($params, 'folder');
$columns = Filter::get($params, 'columns');
$width = Filter::get($params, 'width');
$height = Filter::get($params, 'height');
?>
view.php:
// bolGallery for SkyBlueCanvas
// use this syntax inline: {fragment(name=phphgallery&view=view&folder=source_pic_folder&columns=5&width=160&height=120)}
defined('SKYBLUE') or die('Unauthorized file request');
include("bolGallery.php");
chdir('./bolGallery/');
bolGallery("./$folder/", "$columns", "$width", "$height", 1);
chdir('../');
?>
bolGallery.php
исходник скрипта, в котором 132 и 133 строчки заменены на:
$HTML .= "\t\t\t\t<IMG src=\"/bolGallery" . substr($thumbnail, 1) . "\" title=\"" . $alt . "\" border=0>\n";
- создайте директорию bolGallery в корне сайта, а в ней - по одной директории для каждой фотогалереи. Например, создайте директорию photo2010 и положите в нее фотки
- теперь вызов галереи из контента страницы можно производить следующим кодом:
{fragment(name=phphgallery&view=view&folder=photo2010&columns=5&width=160&height=120)}
, где задается имя директории с картинками, число колонок в таблице, размер превьюшек.
Дальнейшую настройку bolGallery можно произвести в соответствии с документацией на http://bolgallery.free.fr/ Для использования lightbox из комплекта ext_galleria.zip окружите всю таблицу <div id=\"lightbox\"> код таблицы </div>
, удалите java-скрипт перед ней, в ссылках на картинках замените вызов JS на class="lightbox"
Установка lightbox из комплекта ext_galleria.zip
Инструкции не верны и не полны. Ставить так:
- скачайте архив и разархивируйте
- скопируйте *.js файлы из директории lightbox в /skyblue_root/data/skins/your_skin/js/
- скопируйте *.css файл из директории lightbox в /skyblue_root/data/skins/your_skin/css/
- скопируйте директорию imgs-lightbox to /skyblue_root/data/skins/your_skin/images/
- в файле jquery.lightbox-0.4.js пропишите соответствующие пути к катинкам
- пропишите вызов всех скопированных файлов в заголовок html-шаблона. Примерно так:
<script type="text/javascript" src="[[site.url]][[skin.path]]js/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="[[site.url]][[skin.path]]js/jquery.lightbox-0.4.js"></script>
Для активации lightbox, помещайте ссылку в DIV с id="lightbox", ссылке назначайте class="lightbox"