Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Универсальный движек, почти универсальный 
:(
    Опции темы
Kallisto
Дата 20.4.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: -3
Всего: -1



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

Очень часто начинается разработка с одного и тоже, пишится нулевой движок, к нему проверки аунтентификации, проверка+подключение БД и прочее..
--
Стал вопрос о создании универсального движка с поддежкой шаблонов+модулей и блоков.
--
Оптимально создать универсальный, а далее через админ.интерфейс поставить модули и все.

Готовые решения просьба не предлагать..

С чего начать?
У меня мысли такие, что создавать подключение к бД через класс-mysql (оптимально вынести классы по работе с БД в другу папку, чтобы можно было нетолько мускул) далее проверять таблицу в БД на предмет модулей.. если в таблице есть модули, то начинать их прикручивать, но тут возникает вопрос как, и в какой последовательности, ведь иногда бывает так что модуль авторизации (по куки) должен идти до вывода буфера.. или там необходимо чтобы часть модуля была вверху страницы, а часть внизу (баннеры) вот тут и возникают косяки.

Оптимально через smarty, но косяки с авторизацией, оплатой всеравно остаются..

Отсюда возникает вопрос: реально ли вообще сделать универсальную систему?? Хотя бы для определеннной категории сайтов? Если да , то с радостью послушал бы советы..

С уважением.
Kallisto.

PM MAIL   Вверх
xolod
Дата 20.4.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.5.2005
Где: Когда: Что:

Репутация: 4
Всего: 13



Универсальную схему сделать вполне возможно. Для затравки ознакомьтесь, например, с http://typo3.org/.
PM MAIL   Вверх
WolfON
Дата 23.4.2007, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



Это называется - CMS

А методология разработки предполагающая повторное применение кода - ООП
PM MAIL ICQ   Вверх
Kallisto
Дата 25.4.2007, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: -3
Всего: -1



CMS, серьезно?  smile ну ты даешь... незнали таких.


Еще раз говорю, что это понято что это КМС и все такое, речь идет о организации ее.. возник вопрос как правильно организовать, чтобы облегчить работу... пока идей нетю  smile 
PM MAIL   Вверх
mclight
Дата 25.4.2007, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 6.7.2005
Где: Baku, Azerbaijan

Репутация: 1
Всего: 2



а пока идей нету......пользуйтесь функциями
--------------------
Как я решал подводные камни Cakephp и не только
PM WWW ICQ MSN   Вверх
Gold Dragon
Дата 25.4.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(Kallisto @  20.4.2007,  16:47 Найти цитируемый пост)
 но тут возникает вопрос как, и в какой последовательности, ведь иногда бывает так что модуль авторизации (по куки) должен идти до вывода буфера.. или там необходимо чтобы часть модуля была вверху страницы, а часть внизу (баннеры) вот тут и возникают косяки.

Я перепробывал кучу CMS в конечном итоге остановился на Joolma. Теперь по сути... там по моему это уже так и организовано, т.е. свободно можно определить и в какой части шаблона будет располагаться модуль и в какой последовательности. Если брать их подход, то чем не вариант решения..


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
CyClon
Дата 25.4.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Ну, какие тут могут быть идеи, берем и пишем. Сначала классы всякие, например для работы с MySQL. Потом ядро, генерация всякая, подсчеты и т.д.

Потом модули, для начала традиционно модуль новостей.


--------------------
user posted image
PM   Вверх
DioNiR
Дата 25.4.2007, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Цитата
ведь иногда бывает так что модуль авторизации (по куки) должен идти до вывода буфера.


А зачем Модуль авторизации?
Если это у тебя изночально продумано что это будет в CMS то и делай как файл ядра.
И тогда Делай авторизации до вывода.
--------------------
Думали это конец? Ха, всё только начинается.
PM MAIL   Вверх
Kallisto
Дата 25.4.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: -3
Всего: -1



"Потом ядро, генерация всякая, подсчеты"
так вот в каком порядке? 
Сначала парсится шаблон, и в него уже модули или как?

я хочу сам понять, тогда я реализую оч. быстро..  Помощь зала? )

Добавлено через 8 минут и 37 секунд
"Если это у тебя изночально продумано что это будет в CMS то и делай как файл ядра."
ну а если просто новостной сайт, зачем там файл авторизации? вот и встал вопрос о создании такой системы
PM MAIL   Вверх
BuShaRt
Дата 25.4.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



smile Сказали же, Joomla тебе в помошь - открытый программный код, комментарии - сиди разбирай, как каструктар, а потом на премере свое собирай ;) 

Тут скачть мона Joomla

Добавлено через 1 минуту и 53 секунды
Цитата(Kallisto @  25.4.2007,  16:36 Найти цитируемый пост)
"Если это у тебя изночально продумано что это будет в CMS то и делай как файл ядра."ну а если просто новостной сайт, зачем там файл авторизации? вот и встал вопрос о создании такой системы

Ну создай авторизацию отдельно от ядра... 

А вообще, новостной сайт без авторизации - это нечтно новенькое, новости без модерирования все подряд добавляют что ли?

Добавлено через 4 минуты и 17 секунд
Сори, за оффтопы....

Но имхо, даже для HomePage нужна авторизация хотя бы для гостевой книги...
PM MAIL   Вверх
Kallisto
Дата 25.4.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: -3
Всего: -1



Обычные новости без модерации... 
админ добавляет и все...

что тут сверхнового? 

спасибо за линк.. поковыряю. ;)
PM MAIL   Вверх
DioNiR
Дата 25.4.2007, 18:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Зачем парсить шаблон в самом начале?

Он вообще должен парсится в самом конце. Когда у уже действия сделаны вот только тогда выводим.
--------------------
Думали это конец? Ха, всё только начинается.
PM MAIL   Вверх
Vaulter
Дата 25.4.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



в самом начале парсить например для вырезания блоков в зависимости от уровня тек. пользователя (как пример) или просто для определения блоков шаблона (для дальнейшего ПЕРЕопределения) 
авторизация:

в "ГЛАВНОМ" скрипте чтото типа:
Код

......
if(!defined('NOAUTH'))
{
require_once _PHPSDIR.'auth.php';
$GLOBALS['auth'] = new auth();
$GLOBALS['auth']->check();
}
......
 


--------------------
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 26.4.2007, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



ну так в самом конце и проверяй с самом шаблое типа такого

Код

<?php if (Modules( "AUTH" )) {
?>

<div>
<!-- бла-бла бла -->
      <?php mosLoadModules('AUTH'); ?>
<!-- бла-бла бла -->
</div>

<?php }else{
?>

<div>
<!-- бла-бла бла -->
      <?php mosLoadModules('NOAUTH'); ?>
<!-- бла-бла бла -->
</div>

<?php }
?>


или вообще есть в шаблоне типа {auth}, делай проверки какие тебе нужно, а в шаблон в конце вставляй результат.



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
CyClon
Дата 26.4.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



ИМХО авторизация должна быть в ядре, а не модулем.


--------------------
user posted image
PM   Вверх
GZep
Дата 26.4.2007, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Цитата(CyClon @  26.4.2007,  12:00 Найти цитируемый пост)
а не модулем. 

Это смотря что под "модулем" считать... Я, например, просто выношу эти строки кода в отдельный файл и подружаю его ядром...


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
BuShaRt
Дата 27.4.2007, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



 smile Я когда то писал CMS по принципу, все должно быть редактируемо на ходу от тимплетов до модулей...  Давно было очень, но идея мне нравиться до сихпор, такая вот CMS для, которую можно собрать в любой момент совершенно в любой комбинации... 

Если интересно, скину таки наработки, ходя они далеки от совершенства, но суть ясна наверна smile)

Ядро достаточно просто устроенно на мой взгляд ;)

index.php
Код

<?php
include_once 'all_connect.php';

if (empty($page)){  
    $page='new';
}

if (empty ($_POST['indexform'])) {
    GoIndex ($page);    
}
    
$filter_obj->field_validator('Логин', $_POST['login'], 'alphanumeric', 4, 15);     
$filter_obj->field_validator('Пароль', $_POST['password'], 'string', 4, 15);
    
if (!($row = $mysql_obj->CheckPass ($_POST['login'], $_POST['password']))) {
    $filter_obj->messages[] = 'Логин - пароль не совпадают.';    
}     

if ($filter_obj->messages) {    
    GoIndex ($page);         
}

GreatMemberSession($row['login'], $row['password'], $row['lvl']);    
header('Location: index.php?'.session_name().'='.session_id().'&page=rule');     
    
?>


all_connect.php
Код

<?php
include_once ("class/filter/filter.php")      ; $filter_obj = new filter ();
include_once ("class/WorkMySQL/WorkMySQL.php"); $mysql_obj = new WorkMySQL (); 

define('IP'  , $REMOTE_ADDR);
define('URL' , '<a href=index.php?page=id>name</a><br>');

include_once 'functions.php';
include_once 'workhtml.php';

session_register('login');
session_register('password');
session_register('loggedIn');
session_register('lvl'); 
?>


workhtml.php
Код

<?php
function print_HTML ($avt,$pagename) {

//Const and var:
$sh_menu     = file('html/menu.html');
$sh_index    = file('html/face.html');
$sh_login    = file('html/login.html');
$sh_pushform = file('html/pushform.html');
$files       = file('page/pages.txt');
$menu        = file('menu/menu.txt');
$filename=array(); $menutitle=array(); $MenuHTML=array();    
//---

//Great LoginBlock
$login = '';
if (!$avt) { $sh_login = $sh_pushform; }
foreach ( $sh_login as $val) {$login .= $val; }
//---

//Read page:
foreach ($files as $val) {
    $pagetext = '';
    $val = split ('@',$val);
    $val[1] = trim ($val[1]);
    $PageTitle = $val[2];
    if ($val[0]==$pagename) {
        if ($val[1]=='txt' or $val[1]=='html') {
            $file = file ('page/'.$pagename.'.'.$val[1]);
            foreach ($file as $val) {$pagetext .= $val;}
        } 
        if ($val[1]=='php') {
            include 'page/'.$pagename.'.'.$val[1];
        } 

    break;
    } else { $pagetext = 'Такой страници не существует'; $PageTitle = 'Ошибка'; }
}
//---
                                                
//Great MenuBlock
foreach ($menu as $val) {
    $val = split ('@',$val);
    $filename[] = $val[0];
    $$val[0] = file('menu/'.$val[0].'.txt');
    $menutitle[] = $val[1]; 
}                            
for($i=0; $i<count($filename); $i++) {
    $MenuTxt = '';
    $MenuHTML["$i"] = '';
    foreach ($$filename[$i] as $val) {
        $val = split ('@',$val);
        $url = str_replace ('id'  ,$val[1],URL);
        $url = str_replace ('name',$val[0],$url);
        $MenuTxt .= $url;
    }
    foreach ($sh_menu as $val) {
        $val = str_replace ('<MenuName>',$menutitle[$i],$val);
        $val = str_replace ('<MenuTxt>' ,$MenuTxt      ,$val);
        $MenuHTML["$i"] .= $val;
    }
}
//--- 

//Paste all block's menu in page
foreach ($sh_index as $val) {
    for($i=0; $i<count($filename); $i++) {
        $val = str_replace ('<'.$filename[$i].'>',$MenuHTML["$i"],$val);
    }
    $val = str_replace ('<pushform>',$login,$val);    
    $val = str_replace ('<printtitle>',$PageTitle,$val);
    $val = str_replace ('<login>',$_SESSION['login'],$val);
    $val = str_replace ('<PrintPage>',$pagetext,$val);
    print $val;
}
//---

}
?>


functions.php
Код

<?php
//****************************************
//заполнение сессии данными
//****************************************
function GreatMemberSession($login, $password, $lvl) {
    $_SESSION['login'] = $login;
    $_SESSION['password'] = $password;
    $_SESSION['loggedIn'] = true;
    $_SESSION['lvl'] = $lvl;
}

//****************************************
//Генерация странички    
//****************************************    
function GoIndex ($pages){
    
    //if Exit:
    if ($pages=='exit'){
        session_destroy();
        header("Location: index.php");
    }
    //---
    
    //if Error:
    if (isset ($filter_obj->messages)) {
        $filter_obj->ErrorLog ();
    }  
    //---
    
    //Print HTML and exit
    print_HTML($_SESSION['loggedIn'],$pages);
    exit;
    //---
}         
    
//****************************************
//**************************************** 

?>

PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0791 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.