Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Принципы построения CMS (КМС, Система Управления Сайтом).

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6

Открыть новую тему     Написать ответ в эту тему

6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Интересуют механизмы создания редакций системы.
Пока в голову пришло два варианта:
1. банальная проверка предустановленных переменных. Более-менее продвинутый пользователь самостоятельно может сконфигурировать тогда. Как выход - zend?
2. вариант по интерейсней. Имеется полнофункциональная система с метками в коде относительно редакций. Вся работа по реинжинирингу ведется именно с этой версией. Когда нужна определенная редакция - вырезаем регулярными выражениями помеченный код.
Должны же быть более красивые решения?
 
И в догонку: где найти информацию о создании коммерческих систем? Не в плане кода, а в плане кодирования, распространения, законодательства, защиты от нула и т.п. Может стоит создать отдельный топик по этому?

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 10:40 09-06-2007
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
здравствуйте, товарищи
а насколько корректно высказывать мысли по поводу темы, сославшись на свой продукт? понятно, что это будет выглядеть, как реклама - поэтому и осведомляюсь заранее...
просто работа ведётся уже чуть более 1.5 лет, и концентрат мыслей и идей в двух предложениях не очень то и скажешь... (проще сослаться на документацию)
так или иначе - ссылка есть в профиле

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 09:17 10-06-2007
petsam



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извините если не по теме. Вопрос такой. Разыскивается CMS с возможностью поддержки централизованной регистрационной базы пользователей для регистрации пользователей CMS в разных доменах.

Всего записей: 54 | Зарегистр. 18-02-2003 | Отправлено: 19:33 15-06-2007
Asvild

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:

admin/            - административный центр
    templates/    - шаблоны административной части сайта
    images/        - картинки административной части сайта
    modules/    - модули административной части сайта
 
cache/            - каталог, в который будет записываться кэш и компилированные шаблоны
 
uploads/        - каталог для загрузки пользовательских файлов
    files/        - файлы загруженные сайт
    images/        - картинки загруженные сайт
 
system/            - ядро системы
    mysql.class.php    - класс для работы с базой
 
language/        - каталог языковых файлов
    russian.lng    - язык
 
modules/        - модули фронтальной части сайта
    news/        - каталог с модулем
 
templates/        - шаблоны фронтальной части сайта
    tpl/        - шаблон
 

 
Прошу прокомментировать следуюшую структуру для КМС и по возможности предложить более стоюшую если эта на Ваш взгляд не идеальна и/или таит подводные камни.

Всего записей: 5 | Зарегистр. 26-10-2006 | Отправлено: 13:43 27-09-2007 | Исправлено: Asvild, 13:46 27-09-2007
Ternik



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Asvild
а какой язык вы используете?

Всего записей: 763 | Зарегистр. 25-09-2002 | Отправлено: 16:16 27-09-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Все почти как у меня, немного отличаются названия. Только у меня помещено ./admin/images в ./admin/templates/{tpl_name}/images

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 16:43 27-09-2007
Asvild

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
6epcepk
 
 

Цитата:
Только у меня помещено ./admin/images в ./admin/templates/{tpl_name}/images

 
собственно я так и предполагаю делать, своем варианте я так написал потому что предполагаю сделать картинки админки статичными а оформление уже индивидуалиным т.е. чтоб если уж потребуется пользователю изменить то изменялбы их в централизованном каталоге а не в каталоге шаблона админки таким образом мы избавимся от путаницы с шаблонными картинками
 
 
Ternik
PHP + MySQL
в последствии планирую привязать Аякс сразу этого не реализую так как в нем я пока не чувствую себя комфортно )
 
Добавлено:
6epcepk
а возможноли гделибо ) ознакомится с вашей КМС?
 
я пока нахожусь только на стадии проектирования и детального разбора ПХП  
а сама идея родилась порядка года назат
 
честно говоря я не особо силен пока в нем но надеюсь все этапы изучения преодалею сейчас перебрал три шаблонизатора смарти, Хтемплате, и предлогаемый вариант от ДКЛаб Дмитрия Колисникова, но в силу некоторых пречин пришлось от них отказаться, так как предлагаемые реализации шаблонов мне не очень понравились хотя ХТемплате почти то что надо.
 
свой выбор остановил на шаблонизаторе от ДЛЕ точнее мне он больше по духу)  
 
только вот хотелосьбы услышать ваше мнение по поводу как его можно улучшить(дополнить), изменить, что по вашему в нем не хватает, в чем слаб, и чем плох)))) вот такой вот вопросец
 
Собственно сам код=
 

Код:
 
<?php
/*
=====================================================
 Copyright (c) 2004,2007 SoftNews Media Group
=====================================================
 Данный код защищен авторскими правами
=====================================================
 Файл: templates.class.php
-----------------------------------------------------
 Назначение: Парсинг шаблонов
=====================================================
*/
 
class dle_template {
    
    var $dir = '.';
    var $template = null;
    var $copy_template = null;
    var $data = array();
    var $block_data = array();
    var $result = array('info' => '',
                        'vote' => '',
                        'speedbar' => '',
                        'content' => ''
                        );
 
    var $template_parse_time = 0;
    
    function set($name , $var) {
        if (is_array($var) && count($var)) {
            foreach ($var as $key => $key_var) {
                $this->set($key , $key_var);
            } } else $this->data[$name] = $var;
    }
 
    function set_block($name , $var) {
        if (is_array($var) && count($var)) {
            foreach ($var as $key => $key_var) {
                $this->set_block($key , $key_var);
            } } else $this->block_data[$name] = $var;
    }    
    
    function load_template($tpl_name) {
    $time_before = $this->get_real_time();
 
        if ($tpl_name == '' || !file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die ("Невозможно загрузить шаблон: ". $tpl_name); return false;}
        $this->template = file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);
 
        if ( stristr( $this->template, "{include file=" ) ) {
 
            $this->template = preg_replace( "#\\{include file=['\"](.+?)['\"]\\}#ies","\$this->sub_load_template('\\1')", $this->template);
 
        }
        
        $this->copy_template = $this->template;
 
    $this->template_parse_time += $this->get_real_time() - $time_before;
    return true;
    }
 
    function sub_load_template($tpl_name) {
 
        $tpl_name = totranslit($tpl_name);
 
        if ($tpl_name == '' || !file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die ("Невозможно загрузить шаблон: ". $tpl_name); return false;}
        $template = file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);
        
        return $template;
    }
 
    function _clear() {
 
    $this->data = array();
    $this->block_data = array();
    $this->copy_template = $this->template;
 
    }
 
    function clear() {
 
    $this->data = array();
    $this->block_data = array();
    $this->copy_template = null;
    $this->template = null;
 
    }
 
    function global_clear() {
 
    $this->data = array();
    $this->block_data = array();
    $this->result = array();
    $this->copy_template = null;
    $this->template = null;
 
    }
    
    function compile($tpl) {
 
    $time_before = $this->get_real_time();
 
    foreach ($this->data as $key_find => $key_replace) {
                $find[] = $key_find;
                $replace[] = $key_replace;
            }
 
    $result = str_replace($find, $replace, $this->copy_template);
 
    if (count($this->block_data)) {
        foreach ($this->block_data as $key_find => $key_replace) {
                $find_preg[] = $key_find;
                $replace_preg[] = $key_replace;
                }
 
    $result = preg_replace($find_preg, $replace_preg, $result);
    }
 
    if (isset($this->result[$tpl])) $this->result[$tpl] .= $result; else $this->result[$tpl] = $result;
 
    $this->_clear();
 
    $this->template_parse_time += $this->get_real_time() - $time_before;
    }
 
    function get_real_time()
    {
        list($seconds, $microSeconds) = explode(' ', microtime());
        return ((float)$seconds + (float)$microSeconds);
    }
}
?>
 

 
также еще остается открытый вопрос о классе MySQL

Всего записей: 5 | Зарегистр. 26-10-2006 | Отправлено: 05:17 28-09-2007 | Исправлено: Asvild, 05:20 28-09-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Мою систему нет смысла смотреть, потому что это полностью веб 2.0 система в виде рабочего стола Windows, ее структура частично носит приведенную вами, но только структура папок.
 
По поводу системы шаблонов. Я остановился на XTemplates, меня она вполне устраивает, обсуждения их это отдельных длинный разговор который тянется у програмистов уже много времени, поэтому каждый останавливается на то, что его устраивает.
 
По поводу класса sql не совсем понятно. Интересует какой использовать или где хранить?
1. Использовать от Дмитрия Котерова.
2. Я храню в ./lib/mysql (или если универсальный клас - ./lib/sql)

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 16:50 28-09-2007
Asvild

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мою систему нет смысла смотреть, потому что это полностью веб 2.0 система в виде рабочего стола Windows
 
 
интерестно! я думал это какойто стандарт а тут такое возможноли ее увидеть в действии?
из вашего профиля видно только баннер описанной системы а в виде рабочего стола как задействовать?
 
 
 
  
 По поводу системы шаблонов. Я остановился на XTemplates, меня она вполне устраивает, обсуждения их это отдельных длинный разговор который тянется у програмистов уже много времени, поэтому каждый останавливается на то, что его устраивает.  
 
 
да тут нельзя не согласится на многих форумах и даже многие авторы книг статей по этому вопросу излогаются не однозначно но единственное что могу сказать , поработав и сделав сайт на смарти не понимаю чем он привлекает программистов на мой взгляд это ужас хоть он и гибок но работу разделить на прогамер и дизайнер нельзя т.к. дизайнеру надо также быть и программером. об этом хорошо изложился отлично в книге самоучитель пхп 4 котерова.
чтото я отвлекся от темы, всеж хотелбы выслушать ваше мнение по поводу выше приведенного.
да и в классе XTemplates как я понял если необходимо кэшировать шаблон то необходимо подключить не XTemplates.класс.пхп а XTemplates.кеше.пхп и в нем самом активироват функцию кеширования и еще вопрос почему при вставке названия дирректории непосредственно в функцию конструктора путь генерируется верно т.е. каталог подставляется а в саму переменную путь генерируется без этого каталога.
собственно из-за этой неястности я и отказался от него.
 
 
  
 По поводу класса sql не совсем понятно. Интересует какой использовать или где хранить?  
 1. Использовать от Дмитрия Котерова.  
 2. Я храню в ./lib/mysql (или если универсальный клас - ./lib/sql)
 
 
именно какой использовать, а хранится будетв соответствии сприведенной выше структурой в систем\
 
а где можно качнуть класс Котерова
или вы имеете ввиду класс предлогаемый на сайте dklab.ru но там я отдельного для mysql не видел а только  универсальный sql

Всего записей: 5 | Зарегистр. 26-10-2006 | Отправлено: 19:38 28-09-2007
webart77

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На сайте dklab.ru предлагается класс DBSimle - его суть в упрощении работы с любой БД, в т.ч. и с MySQL - просто скачайте его и посмотрите, сами увидите, он довольно простенький и не тяжелый.
А сам сайт очень даже полезный, там разные статьи есть, которые могут ответить сразу на разные ваши вопросы.

Всего записей: 1 | Зарегистр. 28-09-2007 | Отправлено: 23:29 28-09-2007
Asvild

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
На сайте dklab.ru предлагается класс DBSimle

 
Да действительно хорошая библиотека,
Цитата:
А сам сайт очень даже полезный
и информативый.
 
а вот еслиб вы предложили какое либо свое конструктивное предложение, боло еще лучше

Всего записей: 5 | Зарегистр. 26-10-2006 | Отправлено: 06:47 02-10-2007
Daiz13



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Asvild
6epcepk
по поводу стуктуры директорий - файлы ядра и модулей можно скрыть в невидимой через веб папке - можно разделить все файлы системы на две части:
1) те что лежат должны быть доступны через веб лежат в /var/home/public_html/ ;
2) ядро и модули в /var/home/cms/

Всего записей: 257 | Зарегистр. 06-06-2001 | Отправлено: 20:37 04-10-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Daiz13
А какой смысл? На каждый файл ставится проверка, и если он запущен не через index.php, то die. Листинг дирректории естественно запрещен.

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 17:19 05-10-2007
Asvild

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
6epcepk
Полностью Вас поддерживаю не вижу ни какого смысла разделения ! проверка все решит.

Всего записей: 5 | Зарегистр. 26-10-2006 | Отправлено: 07:17 12-10-2007
Daiz13



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
На каждый файл ставится проверка

это дело хозяйское - можно спроектировать так чтобы важные файлы были физически недоступны или писать проверки во всех файлах. Первый вариант требует затраты усилий в начале разработки системы, второй - постоянно.
Кроме того, если нет необходимости размещать файлы системы в жестко регламентированных папках то можна использовать одно ядро для работы нескольких сайтов.

Всего записей: 257 | Зарегистр. 06-06-2001 | Отправлено: 19:37 12-10-2007
KidTM



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А скажите. Мне не нравится функция по экранированию символов. Какую функцию нужно использовать чтобы можно было создать список возможных символов и проверять если введеные символы подходят то делать скрипт если нет выдавать ошибку. Вроде понятно объяснил. Мне нужна только функция, ну и может быть, какие данные и как туда вводить.

Всего записей: 40 | Зарегистр. 14-06-2008 | Отправлено: 10:08 12-07-2008
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KidTM
Вы про запросы к БД? Если да, то советую использовать библиотеку для работы с placeholders от Дмитрия Котерова.

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 11:43 12-07-2008
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KidTM
preg_match

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 14:30 12-07-2008
Towak



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ВОт по среди ночи стукнул такой вариант)))))Сильно не судить с  программированием знаком пару месяцев, за мою орфографию не ругать,только закончил школу)
и так))
Не буду писать тут организацию каталогов и прочей лабуды,просто опишу такую структуру.
Ядро:
-Пользователи
-Шаблонизатор
-Конфиг
-Бд
Ядро у нас служит для обьединения всего этого в одно + некоторые функции которые оно выполняет.
Суть архитектуры в сложности шаблонизатор,впринцепи все функции выполянет он + плагины к нему.
Здесь не будет использоваться ГЕТ параметров при инициализации модуля типа www.site.ru/mod=modul
а будут просто типа www.site.ru/moduls/news/index.php
В файле индекс просто инициализируем класс ядра и задаем шаблон для модуля допустим news.tpl в нем идет простой хтмл + вставка {newslist(10,small_news.tpl)}
где 10 - количество на страницу для навигации
small_text.tpl шаблон обормления кратких новостей)
Шаблонизатор проходит по коду шаблона натыкаеться на функцию,считывает ее название и параметры,подключет плагин newslist.php Выполняет все функции модуля формирует контент для вывода,и возвращет его в шаблонизатор,который вставляет получиный код на место куда нужно.... и все.И так формируеться контент.Каждый плагин может использовать методы ядра и прочие)

Всего записей: 2 | Зарегистр. 03-10-2010 | Отправлено: 02:20 03-01-2011
MisHel64



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прочитал тему.... Сам просто этой проблемой озабочен.
Откровенно много не понимаю. Сам когда-то был программистом, но не PHP.
Какая цель преследуется при написании собственной CMS?
И какой смысл вообще в вкладывается в этот термин?
Написание собственного компилятора (типа паскаля или асма), со специально разработанного макро языка в типичный HTML?  
Или речь об интерпретаторе, типа бейсика и явы?
 
Например, последний пост. Вот вставка "{newslist(10,small_news.tpl)}", которую потом заменят на некий код, который выдаст некая функция.
То есть, на выходе получится некий HTML файл, который кладется в некоторую папочку, а при обращении пользователя аппач скормит пользователю этот HTML? А генерацию этого HTML запустит автор сайта, неким событием.
 
Или при каждом обращении к этой странице будет запущен некий процесс, который сформирует результат на лету? Как это делается с обычными PHP ставками в HTML код?

Всего записей: 2307 | Зарегистр. 21-09-2006 | Отправлено: 03:17 07-03-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6

Компьютерный форум Ru.Board » Интернет » Web-программирование » Принципы построения CMS (КМС, Система Управления Сайтом).


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru