X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Подключение дополнительных модулей
НЕПЛОХОЙ
НЕПЛОХОЙ
Topic Starter сообщение 2.6.2009, 0:42; Ответить: НЕПЛОХОЙ
Сообщение #1


Надоело уже каждый раз переделывать один и тот же код под разные сайты. Решил сделать небольшой движок для сайтов визиток к которому будут подключаться модули Гостевая книга, опросник и т.д.

Решение я нашел)) но очень не хорошее.

Для движка написаны скрипты. А в админ панели при создании страницы в поле "Модули" нужно вписать путь к скрипту.
И при выводе страницы проверяется есть ли подключенный модуль, если естьь то include "гостеваякнига.php";

Хотелось бы услышать принцип как это делается на самом деле, а если еще и с кодом для наглядности, то вообще было бы отлично.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
v1ex
v1ex
сообщение 2.6.2009, 10:17; Ответить: v1ex
Сообщение #2


Решение я нашел)) но очень не хорошее.

Почему, же? Можно начать с такого...

Ну самое просто, что я могу предложить, это примерно так:
index.php:
[php]<?php
// Подключение файлов
require_once 'functions.php';

// Модуль по умолчанию
$module = 'index';

if (isset($_GET['module'])) {
$module_tmp = trim($_GET['module']);
if (preg_match("/^[a-z0-9_]+$/i", $module_tmp)) {
$module = $module_tmp;
}
else {
die('Ошибка');
}
}

if (file_exists('modules/' .$module. '/module.php'))
{
require_once 'modules/' .$module. '/module.php';
}
else
{
die('Ошибка');
}
?>[/php]
modules/guest/module.php (модуль гостевой):
[php]<?php
// Допустим это модуль гостевой книги

// Заголовок
$template['title'] = 'Гостевая книга';
// Якобы динамическая генерация контента
$template['messages'] = 'Сообщения гостевой книги';
$template['xz'] = 'Еще, какой нить контент...';

// Отобразить шаблон (в template переменные шаблона)
display_template('header.tpl', $template);
display_template('guest.tpl', $template);
display_template('footer.tpl', $template);
?>[/php]
functions.php (функция для наипростейшего шаблонизатора):
<?php
  function display_template($file, $template)
  {
    require_once $file;
  }
?>

header.tpl, guest.tpl, footer.tpl:
[php]<html>
<head>
<title><?php print $template['title']; ?></title>
</head>
<body>

--------------------------

<h1>Сообщения</h1>
<?php print $template['messages']; ?>
<h2>Еще что-то</h2>
<?php print $template['xz']; ?>

-----------------------


<div>Copyright 2009</div>
</body>
</html>[/php]


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
Topic Starter сообщение 2.6.2009, 10:34; Ответить: НЕПЛОХОЙ
Сообщение #3


не ожидал услышать столь развернутый ответ)))) Кажется тут же и ответ на другой мой вопрос (про шаблонизатор).
Щас вот закончу один свой проект и надо будет обмозговать информацию :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 2.6.2009, 14:50; Ответить: ZiTosS
Сообщение #4


Евгений, шаблонизатора тут как такового нету. :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
v1ex
v1ex
сообщение 2.6.2009, 15:25; Ответить: v1ex
Сообщение #5


Согласен. Но я и не вижу смысла делать "навороченный" шаблонизатор. Какая разница будем ли мы парсить документ, и заменять конструкции шаблонизатора на тект, или сразу обрабатывать PHP код? Тот-же смарти, делает три лишних шага. Из тех же своих конструкций, он делает PHP код, сохраняет его, а потом выводит его? Зачем? Только не надо говорить, что бы "не программист", мог натянуть шабло... Там те же, условные, циклические конструкции и т.п., с которыми "не программист" просто не сможет разобраться... А PHP - код это удобнее, сделать поддержку хуков и вообще отлично...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 2.6.2009, 17:30; Ответить: ZiTosS
Сообщение #6


v1ex, не отрицаю :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
сообщение 28.8.2009, 15:18; Ответить: gaaarfild
Сообщение #7


[php]$index = array(
"title" => $module_title,
"module" => module_create($_GET['module']),
"bottom_block" => "Нижний центральный блок",
"copyright" => $config['copyright'],
);
$html .= parseTpl("templates/{$config['main_tpl']}/index.tpl", $index);[/php]

Каким образом сделать, чтобы модуль загружался в шаблон?? В то место, куда надо? Иначе просто
require_once загружает его в самом начале.

[php]function module_create($module) {
if (isset($_GET['module'])) {
$module_tmp = trim($_GET['module']);
if (preg_match("/^[a-z0-9_]+$/i", $module_tmp)) {
$module = $module_tmp;
}
else {
die('Ошибка');
}
} else {$module = "Content";}

if (file_exists('modules/' .$module. '/index.php'))
{
$module_load = require_once ('modules/' .$module. '/index.php');
}
else
{
die('Указанный модуль не найден');
}
}[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 29.8.2009, 23:36; Ответить: ZiTosS
Сообщение #8


gaaarfild, ничего не понятно... хотя может ты имеешь ввиду функцию
file_get_contents() или же тебе надо использовать eval, что не очень корректно. Обычный require_once никогда тебе не вернёт интерпритированного содержимого, это вставка кода...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
сообщение 1.9.2009, 22:15; Ответить: gaaarfild
Сообщение #9


Ну каким образом организуется загрузка модуля в шаблонизатор, если использовать твой вариант простейшего шаблонизатора?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 3.9.2009, 3:10; Ответить: ZiTosS
Сообщение #10


gaaarfild, что в твоём понимании модуль?
Я в данном шаблонизаторе подключал только HTML вставку (шаблон с включениями). Все логические операции и различные итерации вынесены за пределы шаблона.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ВНИМАНИЕ: 77.me - Crypto processing и High risk processing для вашего бизнеса.Подключение за час!
0 77_me 1193 14.2.2024, 19:09
автор: 77_me
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыНаписание скриптов на PHP, в т.ч. модулей для CMS, и другие услуги
Создание модулей и хаков для DLE и других движков, перенос контента
170 Coppermine 117858 24.2.2023, 12:30
автор: boltuk
Открытая тема (нет новых ответов) Подключение Оплатил-получил ссылку для скачивания
5 fairtex 1710 19.9.2019, 23:34
автор: alexbup
Открытая тема (нет новых ответов) SmmPanel - Платформа создания SMM сервиса / подключение API / быстрый заказ + реферальная система
4 KrisGuseva 7021 3.12.2018, 16:08
автор: KrisGuseva
Открытая тема (нет новых ответов) Masons.mobi - wapclick партнерская программа (прямое подключение)
4 MasonS 1839 25.9.2018, 14:59
автор: -MasonS-


 



RSS Текстовая версия Сейчас: 28.3.2024, 17:13
Дизайн