Template CMS 2 - маленькая и быстрая CMS!
Над ее разработкой занимаюсь в свободное от работы время.
Template CMS - маленькая, быстрая и расширяемая CMS.
Предназначение: сателлит, персональные странички/домашние странички, сайты визитки.
Template CMS легко расширяется плагинами(на столько на сколько позволяет Plugin API), фактически она вся состоит из плагинов.
Такой себе движок который работает за счет маленьких компонентов/плагинов.
А также легко переводится на другие языки.
Дистрибутив Template CMS всего ~167кб.
Template CMS основные возможности:
- Простота установки, использования и обновления.
- Удобный интерфейс администрирования.
- Минимальные требования к хостингу (без MySQL только PHP)
- Многоязычный интерфейс администрирования.
- Ключевые слова и описание как для каждой страницы так и для всех.
- Удобный редактор страниц (WYSIWYG - What You See Is What You Get)
- Возможность задать индивидуальный шаблон для любой страницы.
- Смена тем оформления в один клик.
- Легкость разработки и интеграции новых тем оформления.
- Расширяемость системы благодаря гибкому и удобному Plugin API
- Поддержка ЧПУ
Некоторые скриншоты админки
Template CMS распространяется на условиях GNU GPL 3
Офф. сайт
Template CMS - Главная
Документация
Template CMS - Документация
Плагины
Template CMS - Плагины
Офф. форум поддержки
Template CMS
Ожидаемая обратная связь
- Советы
- Критика
- Предложения
- Слова поддержки
дык.. она изначально и не собирался конкурировать с такими гигантами как Joomla, Drupal...
Ниша Template CMS
Предназначение: сателлит, персональные странички/домашние странички, сайты визитки.
а конкуренты его вот http://cmsbezmysql.ru/
Template CMS выигрывает уже своих конкурентов по таким парметрам:
1. Скорость
2. Легкая локализация и переносимость
3. Легкое разработка шаблонов
4. Расширяемость!
Замечу что Template CMS еще не релиз )
Подход подобный ущербен и убог. Хотя сама система быть может и интересна, но подобное отношение к потенциальным пользователям резко снижает их возможное количество
Но судя по исходному коду плагинов - говнецом малость попахивает:
1) В шаблонах помесь php и html, но в целом - это терпимо.
2) Примесь html и php в коде - вот это гавнецо.
// Get real thumbs size
// See: http://code.google.com/intl/ru-RU/speed/page-speed/docs/filter-image-optimize.html
$client_image = getimagesize($images_path.'thumbs/'.$image);
$client_size = 'width="'.$client_image[0].'" height="'.$client_image[1].'"';
}
echo '<td class="screenshot">';
echo ' <a href="'.$images_path.$image.'" rel="gallery" class="pirobox_gall">
<img '.$client_size.' '.$admin_width.' class="screenshot-image" src="'.$images_path.'thumbs/'.$image.'" />
</a>';
if($admin_area) {
htmlBr();
htmlButtonDelete(lang('simplegallery_delete'), 'index.php?id=pages&sub_id=simplegallery&action=delete&image='.$image);
}
echo'</td>';
3) '../'.TEMPLATE_CMS_DATA_PATH
Зачем в константе держать название папок (я так полагаю). Желательно, чтобы такие константы указывали абсолютный путь до папок, чтобы было меньше путаницы и меньше лишней писанины.
4)
echo '<style>
.screenshot {
margin: 3px;
padding: 3px;
text-align: center;
}
....
Ай-яй-яй. Какого фига функция содержит "Headers", а шлет вообще css-стили?
5)
А от XSS текст зачищается? А то проверить нельзя, регистрироваться не хочется.
Я пару лет назад тоже этим "страдал". И даже получилось что-то неплохое. Однако ничего кроме какого-то опыта мне это не принесло.
И вы уж если пишите что-то своё, ну воспользуйтесь каким-нибудь фреймворком. 21 век на дворе. Столько всяких вкусностей есть. Бери не хочу.
Не самый хороший совет. Если писать свою систему, чтобы опыт заработать, то фреймворки противопоказаны. Если писать для себя хорошую, быструю систему - фреймворкам точно также не место. А если надо сляпать по-быстрому что-то работающее - вот они самые и пригодятся.
Лично я если и делаю сайты кому-то, то только на базе своей системы потому что:
1) Она очень быстрая - писал я ее опираясь на семилетний опыт работы с кучей разных СУБД и собственный опыт разработки веб-систем
2) Я систему знаю досконально и в случае какой-либо проблемы - источник найду очень быстро
3) В системе нет явных и глупых дыр. Никакие инъекции, XSS и прочие радости в ней не прокатят.
С другой стороны я также хорошо знаю ее недостатки и недоработки и поэтому нигде никому ее не пиарю и не впариваю.
* Каждый программист должен написать тетрис, файловый менеджер и операционную систему.
* Каждый веб-программист должен написать форум, CMS и браузерную игру.
Ну.. ваше право - согласиться или нет. Но тут можно поспорить. Чем плохо использовать framework (например CodeIgniter) для разработки своей CMS ради получения опыта? Вы получите опыт в направлении проектирования, модели MVС, и многово другово.
Для себя - ну почему-же.. Я думаю что любую систему можно оптимизировать. Плюс фреймворков в том что если грамотно спроектировать систему, она будет мега-гибкая и расширяемая. Этого можно добиться если и с нуля писать, но зачем?
Признаюсь что сам я фреймворки сейчас не юзаю. Пишу своё (использую за основу имеющийся каркас, умеющий работать с БД, smarty, и прочие мелочи, и к нему уже дописываю необходимые модули). Но всё-же считаю что фреймворки вещь полезная и нужная. Рано или поздно сяду наверное за какой-нибудь :)
А знать досконально свою систему написанную на фреймворке - не такяа уж проблема. Нужно просто больше времени что-бы понять как и что работает в системе.
Freeman:
Дада, сюда-бы я ещё добавил:
* Каждый программист под windows должен написать свою открывалку/закрывалку сидирома :))))))) Я когда в школе учился ещё, и начинал только изучать winapi , эта утилита была одной из моих первых, написанных впрок.
Сегодня к вечеру заходил в тему на работе, боялся что щас попрет на ржач и все))
Думал отписывать или нет по теме....
Что тут можно сказать) Жесткач конечно. Народ меряется воображаемыми проектами, а также переходят на личности в первом же своем сообщении начиная хамить.
Разбирать конкретные меседжы думаю не стоит, скажу кратко:
UAS - открой для себя какой нибудь фремворк, может тогда поймешь кто до этого говнокодил и говнокодит дальше....
RussianSpy
Тебя никто не принуждает качать, банеров с прыгающими лозунгами "Качать" "Дай бабло $$$" не висят.
[q]
1) Она очень быстрая - писал я ее опираясь на семилетний опыт работы с кучей разных СУБД и собственный опыт разработки веб-систем
2) Я систему знаю досконально и в случае какой-либо проблемы - источник найду очень быстро
3) В системе нет явных и глупых дыр. Никакие инъекции, XSS и прочие радости в ней не прокатят.
[/q]
это про воображаемую CMS в вакууме ? какого хрена она имеет отношение к этому топику ?
Читай топик внимательно.! особено это
Ожидаемая обратная связь
- Советы
- Критика
- Предложения
- Слова поддержки
Сказал правильно +1
Ожидаемая обратная связь
- Советы
- Критика
- Предложения
- Слова поддержки
Сделайте возможность скачивать без регистрации на форуме - тогда и ответим. А пока судя по коду, который ребята показали, - обычная быдлоCMS коих море в интернете.
- Советы
- Критика
Т.е. я написал не критику и не советы? Я явно все указал. Ну, возможно, указание на говнокодство было для вас и обидным, но я-то уже в этом 6 лет и давно сам когда-то писал похожие проекты, так что опыт есть хороший, чтобы сразу видеть что как написано.
Без взгляда на саму CMS - сказать ничего более точно не могу. Могу сказать, что в целом все организовано (судя по модулю) более-менее человечно, т.е. это не тот сумбурный поток кода, который мне обычно приходится переделывать в сторонних заказах. Т.е., я бы, если бы вдруг дорабатывал сайт, сделанный на данной CMS, то не сильно бы матерился =)
Но применение html в php коде вне шаблонов - для меня дико. Вывод css в php-скрипте - это тоже очень плохо. Надо понимать, что программа должна быть разделена на части - это лучше позволяет управлять содержимым и поддержку с доработкой.
Позволяйте качать без регистрации - тогда можно дать взвешанные советы по самой цмс.
В моей жизни повелось поработать с тремя известными популярными CMS: Joomla, WordPress и Drupal. Так что я отлично знаю, кто до этого говнокодил, т.к. по кол-ву говнокода Джумла идет впереди планеты всей.
А уж опыта переделки и доработок чужих поделок очень много, так что я многое повидал уже и есть с чем сравнить.
Ну тут я бы поспорил. Есть еще такие прекрасные вещи как phpShop и phpNuke со своими клонами и форками. Вот там настолько адовый *дец, что словами не передать.
+1. Но я всетаки пересилю себя и посмотрю че там в транке SVN-а.
c репозитория сомневаюсь что у вас подымется нормально. Так как не все изменения закомитил еще.
можете скачать вот RC3: Template CMS 2 RC3
что вручную ? админка для чего ?
c репозитория сомневаюсь что у вас подымется нормально.
Спасибо, но мне всеравно неначем запускать (IIS7 стоящий дома на PHP настраивать лень) - я вообще из другой когорты: ASP.NET MVC 3 с Razor-ом на работе лечу :)
Код набивать типовой. Фиг знает, я наверно к другим инструментам привык просто (сериализаторы, XML-литералы).
Template CMS 2 все данные,настройки хранит в XML файликах, естественно что она сама их создает.:cool:
1)
* Updates the file modified time to the current time
* @param string $file The file name
* @return boolean
*/
function touchFile($file) {
return touch($file);
}
/**
* Determines if a file is writable
* @param string $file The file name
* @return boolean
*/
function writable($file) {
return is_writable($file);
}
/**
* Determines if a file is readable
* @param string $file The file name
* @return boolean
*/
function readable($file) {
return is_readable($file);
}
Совет, но в целом на любителя: у вас есть файл, содержащий набор функций по работе с файлами, Filesystem.php. Я бы это выделил в класс с набором статичных методов, просто как бы такая группировка будет логична и более удобна.
2)
Также не нравится использование global практически везде. Вот, допустим, в Uri.php: template_cms/ engine/ Uri.php
* Find url
* @global string $site_url site url
* @param string $url url - Uniform Resource Locator
* @return string
*/
function findUrl($url) {
global $site_url;
$site_url не объявлена в этом файле, где же мне тогда её искать? И так везде.
Тот же пример для другого файла:
* Get default page
* @global string $defpage page is loaded by default
* @param boolean $render displays the result of the function in the browser or not
*/
function getDefaultPage($render=true) {
global $defpage;
И т.д.
Я бы, лучше, создал бы какой-то класс, который обеспечивал бы доступ к данным, а не напрямую вот так.
У меня доступ к конфигу реализован при помощи класса-синглтона, который просто оборачивает все настройки + реализует все основные методы обработки конфига. Такой подход позволяет достичь большей расширяемости и, что самое главное, независимости участков кода.
3) template_cms папка предполагает наличие в ней шаблонов, почему же я в ней наблюдаю папки:?
engine
helpers
Не совсем логично.
Шаблон же лежит в themes. Просто у Вас двусмысленность в названиях.
4)
* Convert plain text to html
* @param string $str
* @return string
*/
function toHtml($str) {
return(html_entity_decode($str, ENT_QUOTES, 'utf-8'));
}
/**
* Convert html from $_POST to plain text. Use before save data from $_POST.
*/
function htmlPostText() {
$_POST = array_map('toText', $_POST);
}
Универсальнее бы было просто сделать одну функцию, которая могла бы принимать как массивы, так и строки.
5)
Имхо, проще и нагляднее юзать сразу $_GET
Ну вот в целом советы и наблюдения пробегом по исходнику.
Из плюсов могу выделить:
1) Для работы с XML используется SimpleXML, а не самопальная обработка.
2) Документирование ко всем функциям. Такое редко встретишь, за это большой +.
Не совсем пойму смысл данного:
1)
Да это может показаться странным, но! Это просто обертка под стандарт кода во всем проекте lowerCamelCase.
Так как стандартные функции PHP имеют разное написание и с цифрами и с пробелами(_) а иногда и в CamelCase. Каша в общем.
По этому те основные функции которые будут юзаться в проекте а особенно в плагинах приведены к нормальному стандартному виду.
Также не нравится использование global практически везде. Вот, допустим, в Uri.php: template_cms/ engine/ Uri.php
Ну с global надо еще просмотреть везде внимательнее. До RC3 их было намного больше по всему проекту.
не совсем понял про какой шаблон говорите.
/themes/ - шаблон сайта
/admin/templates/ - шаблон админки
во фреймворках есть такие плюшки, мне понравилась такая запись и я привык к ней)
post('name')
в место
$_POST['name']
/themes/ - шаблон сайта
/admin/templates/ - шаблон админки
Эмм. Не. Я имел в виду, что папка "template_cms" содержит различные служебные функции, необходимые для работы CMS. Т.е. здесь, по сути, расположен "движок". В то время как "template" подразумевает под собой "шаблон", т.е. с первого взгляда я предполагал, что здесь лежат шаблоны для вывода, ан нет, они лежат в themes.
Что нового в RC4 можно прочитать тут
Так же появились два новых плагина http://templatecms.webdevart.ru/download/plugins
Yandex share button и Comments
Cкачать: Template CMS 2 - Release candidate 4
Обновил все свои плагины что сейчас находятся в репозитории плагинов
Скачать:
Link1: Template CMS RC 4 + Patch
Link2: Template CMS RC 4 + Patch
мде.. видимо только вы не видите альтернативную ссылку
мде.. видимо только вы не видите альтернативную ссылку
а да увидел - сорри ;)
Мне понравилась его реализация. http://blog.fenixarts.ru/ Хотя это еще незаконченный вариант. :)
P.S. Удали и напиши заново - иногда очень помогает оптимизировать)
Как производились замеры?
По ссылке, указанной выше (по заверению Awilum этот сайт работает на его CMS), в правом нижнем углу есть данные (0.03 - 0.261), которые указывают на время генерации стр. (если я ошибаюсь, то сорри), так вот эти данные явно больше данных моей CMS, которую еще оптимизировать и оптимизировать.
А как же отличия в аппаратном обеспечении, параллельно запущенных сайтах на веб-сервере и других службах, работающих на сервере? ;)
Вот теперь ты рассказал на чем основаны твои "измерения", иначе фраза про "переписывание" выглядела совершенно голословно, впрочим её градус категроичности и теперь нисколько не уменьшился. :)
Я не создавал тему про [COLOR="DarkRed"]Template CMS 2[/COLOR] на серче!