Dewberry CMF

Движок для создания сайтов вроде портфолио или визитки.

Скачать
Версия 0.9 (532.66 КБ)
Наверх

Для поднятия GoodGirl.ru мы написали небольшой движок, в основе которого используеются XML-файлы для структуры данных и Berry.Tags - для шаблонов.

Принцип крайне прост. Движок обходит директории первого уровня и помещает их в меню, если директива skip не установлена. Директории ниже являются либо страницами, либо категориями, т.е. сами содержат другие работы. Например, страница /p/mnogoshop/ является категорией, а /p/mnogoshop/site/ - страницей.

Пример XML-файла

<title>Dewberry</title>
<image>image.jpg</image>
<date>2009-12-12</date>

<description>Движок для создания небольшого сайта вроде портфолио или визитки.</description>

<links
    license="1"
    svn="dewberry"
    forum="http://forum.goodgirl.ru"
/>

Ничего, кроме title не является обязательным. data служит для сортировки данных и указывается при выводе данных, а не в глубинах движка. links используется только в шаблоне отдельной работы, например:

<a href="license/" if="$b{tpl.links.license}">Лицензия</a>
<a href="http://svn.goodgirl.ru/${tpl.links.svn}/" if="$b{tpl.links.svn}">Subversion</a>
<a href="${tpl.links.forum}" if="$b{tpl.links.forum}">Форум</a>

Все немногочисленные настройки лежат в файле config.xml.

config.xml для GoodGirl.ru

<!-- Название сайта -->
<name>GoodGirl Inc.</name>

<!-- УРЛ -->
<link>http://goodgirl.ru</link>

<!-- Почта -->
<mail>mail@goodgirl.ru</mail>

<!-- Локаль, можно указать несколько через запятую -->
<local>ru_RU.UTF-8</local>

<!-- Шаблоны -->
<template>
    <!-- Слой - основной шаблон -->
    <layer>tpl/layer</layer>

    <!-- Шаблон отдельной работы -->
    <work>tpl/work</work>

    <!-- Шаблон списка работ -->
    <works>tpl/works</works>
</template>

<!-- Меню -->
<menu>
    <!-- Разделитель -->
    <separator><![CDATA[<span class="second-separator">→</span>]]></separator>

    <!-- Сортировка -->
    <order_by>sort asc</order_by>

    <!-- При построении меню игнорирует директории, в которых указана данная директива -->
    <skip>skip</skip>
</menu>

<!-- Папки с файлами -->
<folders>
    <!-- Общая папка -->
    <common>d</common>

    <!-- Папка отдельного проекта -->
    <download>d</download>
</folders>

<!-- Спец. теги -->
<tags>
    <!-- Теги, которые всегда считаются как множественные -->
    <items>thanks</items>

    <!-- Наследуемые теги -->
    <extends>is_docs</extends>
</tags>

<!-- Глобальные директивы, они попадут в шаблон вне переменной $config -->
<globals>
    <test>global value</test>
</globals>

<!-- Маршрутизаторы ссылок -->
<router>
    <!-- Поиск -->
    <re>(straw|dew)?berry(/(.*?))?</re>

    <!-- Подмена -->
    <route>c/\1berry\2</route>
</router>

Лицензия (LGPL)

Copyright © 2010 Alexey Gagin <lexazloy@gmail.com>.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Полный текст.