WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Модульное программирование на PHP или как написать маленький портал.


Прислал: Ray Adams [ 11.04.2003 @ 11:41 ]
Раздел:: [ Статьи по PHP ]


Я попытаюсь тут разъяснить то, как я подхожу к написанию сайтов, где могут применять подключаемые модули. Пример тому известный скрипт PHPNuke. Как бы не ругали его, подход, примененный в нем, к модульному программированию очень удобен. Но из-за корявости общего кода применять такой скрипт на серьезных сайтах, точнее скажем порталах, с большим количеством посетителей, не рекомендуется. Почему? Скрипт работает медленно, очень большая нагрузка на базу данных. Можно еще очень много чего описать, но это уже материал для другой статьи. Если кому интересно , то в интернете полно описаний этого движка. В «неудобоваримости» PHPNuke я убедился сам. Мой основной проект NVIDIA BIOS Collection в начала базировался на PHPNuke, но постоянные проблемы с хостингом заставили меня начать разработку своей система портала с нуля. Из PHPNuke я взять только суть модулей, все остальное же делал сам. И так для начала. Прежде всего, надо продумать систему каталогов, что и где будет лежать. Вот примерный вариант.

/
/mods/ - каталог для хранения модулей
/img/ - картинки
/include/ - каталог вспомогательных файлов
это что нам сейчас пока надо. Применять блоки и скины мы пока не будем. В моем портале также были другие каталоги
/blocks/ - Тоже своего рода модули, но не выводящие сами информацию, а возвращающие заполненную переменную.
/js/ - каталог для Java скриптов
/theme/ - каталог выбора тем или, грубо говоря, набор скинов для сайта.
/files/ - файлы для скачивания
ну и другие каталоги.

В корневом каталоге храниться всего один файл index.php и вся работа идет через него. Теперь надо решить как будет выглядеть сам сайт. Для нашего примера подойдет наипростейший вариант дизайна , верх сайта , низ сайта, а в середине наша информация из модулей. Для этого в каталоге include создадим два файла top.php и bottom.php, что соответственно будет верхней частью дизайна и нижней частью дизайна.

top.php
<?php
echo "<html>

<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<title>$PAGE_TITLE</title>
</head>

<body>

<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' 
width='100%' id='AutoNumber1'> <tr> <td width='100%' colspan='2' bgcolor='#DDFFFF'> <p align='center'>здесь выводится шапка</td> </tr> <tr> <td width='17%' align='left' valign='top' bgcolor='#FFDFFF'><b>Меню сайта</b><p> <b>- </b><a href='index.php?mod=mod1'>Модуль1</a><br> - <a href='index.php?mod=mod2'>Модуль2</a></td> <td width='83%' align='left' valign='top'>"; ?>

Предвижу комментарии, где скажут, почему я не вывожу HTML код отдельно, а php отдельно. Я приучил себя к написанию 100% PHP кода, с одной стороны не очень и красиво может выглядеть, но мне так удобнее. Если кто-то хочет писать по-другому, то тут я не советчик. Заметьте переменную $PAGE_TITLE в top.php. В моей реализации вся информация о модулях храниться в базе данных, где помимо имени файла модуля храниться также и его название, которое потом и кладется в $PAGE_TITLE, для вывода его в головок браузера.

bottom.php
<php
echo "</td>
</tr>
<tr>
<td width='100%' align='left' valign='top' colspan='2' bgcolor='#DDFFFF'>&nbsp;</td>
</tr>
</table>

</body>

</html>";
?>
Также создадим файл конфигурации config.php и положим его в каталог include.
config.php
<?php
#Модуль по умолчанию
$sys_def_mod="mod1";

?>
Вот примерная схема работы index.php
<?php
include("inc/config.php");
if (!isset($mod) || ($mod=="") || (!file_exists ("mods/$mod.php"))) {
$mod=$sys_def_mod;
#Проверка на существование переменной $mod, и существования такого модуля
# если неверное условие то присваиваем ему значением модуля по умолчанию
}
$PAGE_TITLE="Модуль $mod";
include("inc/top.php");
include("inc/$mod.php");
include("inc/bottom.php");
?>
Теперь создадим два файла mod1.php и mod2.php и положим их в каталог mods.
mod1.php
<?php
if (!eregi("index.php", $PHP_SELF)) { die ("Access denied"); }
echo "Это модуль номер 1!<br>";
echo "А <a href='index.php?mod=mod2'>здесь</a> можно посмотреть на модуль номер 2";
?>
mod2.php
<?php
if (!eregi("index.php", $PHP_SELF)) { die ("Access denied"); }
echo "Это модуль номер 2!<br>";
echo "А <a href='index.php?mod=mod1'>здесь</a> можно посмотреть на модуль номер 1";
?>

Поясню немного вот эту строку

if (!eregi("index.php", $PHP_SELF)) { die ("Access denied"); }
В каждый модуль желательно включать такую проверку во избежании вызова файла модуля вне самого index.php. На примере моего портала до вызова модуля у меня идет подключение в базе данных, считывание некоторых глобальных переменных и без них, ни один модуль сам по себе работать не сможет. Так что лучше всего просто запретить вызов модуля напрямую. Вызов модулей в данном случае производится через строку в виде index.php?mod=имя модуля, но тут можно применить и систему ЧПУ. Тогда URL примет вид index.php/имя модуля/

Вот в принципе очень грубая схема реализации модулей. Можно добавить любой модуль, просто положив его в каталог mods/ и придерживаясь общей концепции работы, построить очень сложный сайт. В чем удобства работы? По сути вы отодвигаете от себя основную заботу по натягиванию кода на дизайн. Это делает один раз в index.php. Сам же модуль должен только работать и приносить пользу. Централизация сбора основной информации из базы или конфигурационного файла, глобальные переменные сайта, информация о пользователе и т.д. С другой стороны есть недостатки (хотя при определенном взгляде они не кажутся недостатками), скажем надо четко следить за тем какие имена переменных используются до модуля, чтобы не перезаписать, случайно, их внутри модуля. Один раз у меня такое случилось. После такого случая, я взял для себя за правило называть системные переменные в таком виде $sys_имя переменной. Другой очевидный недостаток это трудность реализации разных вариантов дизайна для разных модулей. Но! Тут есть выход тоже.

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

К примеру, наши простые модули можно модифицировать в таком варианте.

<?php
if (!eregi("index.php", $PHP_SELF)) { die ("Access denied"); }
$PAGE_TITLE="Это Я, модуль номер 1!!!";
include("inc/top.php");
echo "Это модуль номер 1!<br>";
echo "А <a href='index.php?mod=mod2'>здесь</a> можно посмотреть на модуль номер 2";
include("inc/bottom.php");
?>

Как делать в данном и конкретном случае решать Вам. Я же просто попытался направить тех, кто начинает писать на php, а может и тех, кто уже пишет, на определенный вариант или стиль программирования.
http://www.x-bios.3dgames.ru - Сайт моего портала, но к сожалению он закрыт
http://fallenangels.combats.ru - Сайт игрового клана, также полностью построен на модульной системе.


 :::::  _DM_ пишет 15.04.2003 @ 15:08 
Ну и что тут нового? В верх страницы и в низ подключам файлы топ и боттом (типа скины), а в зависимости от переменной подключаем в серединку нужный файл..

Бесполезная статья ИМХО.
 :::::  Ray Adams пишет 15.04.2003 @ 16:39 
Как делать в данном и конкретном случае решать Вам. Я же просто попытался направить тех, кто начинает писать на php, а может и тех, кто уже пишет, на определенный вариант или стиль программирования.
-------
А вот этиу часть тяжко было прочесть? Если тебе ничего нового, то другим может помочь. Если бы мне, когда я начинал писать на PHP, вот такие тсатьи попадались, то я бы не делал большую кучу ошибок.
 :::::  Const пишет 17.04.2003 @ 09:01 
Нормальная статья. Чем проще. подробней и конкретней - тем ближе к жизни.
И не надо оправдываться.

А ИМХО_ну хочу анекдот расказать..

Генерал: " Товарищи академики! Если Вы такие умние. то чего строем не ходите!?"

 :::::  VoRoN пишет 20.04.2003 @ 02:26 
Про пхпнюк полностью согласен нефига он не крутой и тем кто знает язык пхп не нужен вообще.

Но у меня движок все же круче всех!
Главная его фишка в том что, он не использует MySQL и сам сознает страничку с заголовками статей. Просто пихаешь в директорию текстовый файл и получашь новую публикацию со всеми вставками, даже матта тег вставляет :)))
Тока вот беда, надоело сайто строительство ;)
Кто хочет посмитреть прошу сюда mad.km.ru
Пример файла публикации:
http://mad.km.ru/doc/news/1
http://mad.km.ru/doc/news/2
http://mad.km.ru/doc/news/и т.д.
 :::::  Ray пишет 21.04.2003 @ 23:09 
2 VoRoN
Ты сам смотрел на линки которые ты дал?
 :::::  Gex пишет 24.04.2003 @ 19:29 
инфа для ньюбиесов конечно, но почитать стоит

 :::::  TIX пишет 25.04.2003 @ 13:54 
ни один из линков не работает
 :::::  Zlomrak пишет 26.04.2003 @ 02:33 
Очень хорошая статья...Потому как сначала хотел юзать пхпнюк...но что-то он тяжёлый оказался..слишком много лишнего там...а тут всё доступно написано...
Побольше б таких статей..
 :::::  Ober Gun пишет 28.04.2003 @ 11:12 
Ошибочки есть, их не может не быть ;)

- В cтатье предлагается "/include/ - каталог вспомогательных файлов", а в коде для таких файлов исползуется каталог /inc/. Создавая папки и используя приводимый код, создавате inc, а не include!

- в коде index.php строка 10:
include("inc/$mod.php");
должна выглядеть так:
include("mods/$mod.php");

- в коде bottom.php, первая строка:
<php
пропущен знак вопроса, надо так:
<?php

В остальном все работает.
 :::::  Ray Adams пишет 28.04.2003 @ 17:59 
Точно 8-) Писал то ведь по памяти на проверяя кода.
 :::::  VoRoN пишет 05.05.2003 @ 19:31 
Ray:
2 VoRoN
Ты сам смотрел на линки которые ты дал?
-------------------------
Ray сори но, я забыл сказать что, мой сайт находится на http://mad.km.ru/
в следующий раз когда увидешь линк http://mad.km.ru/doc/news/1 имей в виду, если убрать все после *.ru то выйдешь на главную страничку :)
И вобще если ты понимаешь в php то должен догадаться, куда эти ссылки(ты меня розочировал) ;))))
А вобще я согласен с Gex, надо-же с чего-то начинать.
 :::::  Gidra пишет 05.05.2003 @ 20:51 
Народ вообщем не потеме но не знаю куда обращатся... вообщем такая я ньюб в пшп но возможно в хтмл кодже вписать шпш скрипты (сайт тянет и те и другие скрипты) в горизонтальной последовательности ну вооьбщем так сам сайт а там надо вставить два меню справа и слево и посередине чтото диологовое окно... и если возможно напишите здесь... и как зделать чтоб из меню использовать тока это диологовое меню тоесть тока оно менялось..
 :::::  oleg пишет 11.05.2003 @ 21:26 
А можно по-подробней о системе "ЧПУ".
 :::::  Graf пишет 13.05.2003 @ 04:24 
хорошая статья ... я сам примерно до чего-то подобного додумался... а раз у нас сходяться мысли , значит ... :-)))
ну вообщем нормально - удобный и простой архитектурный подход...


 :::::  atz пишет 14.05.2003 @ 17:14 
А не кажется ли вам что давно пора отходить от того, что в файле идёт в перемешку php и html? Не должен ли быть каждый модуль - классом? В классе прописывается логика, класс формирует массив данных, которые передаются на уровень представления (шаблоны)
Есть такая замечательная штука Smarty, если кто не знает (не дай бог) то советую ознакомиться, на его основе мною был разработан именно модульный движок :) и я давно забыл тот кошмар когда сайт представлял собой набор файлов в которых было в перемешку HTML и PHP, думаю каждый программист должен от этого отойти :)
 :::::  yUAC пишет 14.05.2003 @ 21:05 
А что будет если вы попытаетесь вызвать "index.php?mod=../index" ???
 :::::  Ray Adams пишет 15.05.2003 @ 00:37 
Нет мне так не кажется 8-)
Попался мне один раз проект на рссмотрение, попросили копнуть почему там страница генерировалась аж за 5-8 секунд. Так вот весь проект был настолько жутко заООПирован. Обьект на обьекте, хотя по сути дела в проекте ничего осбого небыло. Моем мнение , обьекты в PHP реализованы очень плохо и убивают скорость работы скрипта. Так вот если КАЖДЫЙ програмист начнет так писать что простая страница будет генерироватьс за 5 секунд то WEB помрет :). Почти каждый серьезный проект, требует индивидуального подхода и применение всевозможнный готовых движков может проект убить. Все это говорю не от балды, сам прошел такие этапы. ООП хорошо . но до определенной степени.
 :::::  Ray Adams пишет 15.05.2003 @ 00:40 
А что будет если вы попытаетесь вызвать "index.php?mod=../index" ???
В том примере что я написал хорошего будет мало, на самом деле такие вещи делаются по немного по другому. К примеру в базе данных хранятся названия модулей и соответствующие им имена файлов. Тогда к примеру mod1.php может иметь имя module1 и вызываться как index.php?mod=module1. Далее через запрос к базе выбирается имя файла и он уже инклюдится.
Я же приводил пример наипростейшей системы с минимальной защитой.

 :::::  yUAC пишет 16.05.2003 @ 19:03 
Тогда другое дело...

Кстати про Smarty - если б он не весил 80 с чем-то килобайт, было бы ещё ничего...
 :::::  Ray Adams пишет 21.05.2003 @ 23:45 
80 кило это один скрипт!???
 :::::  Likeman пишет 28.05.2003 @ 06:14 
Вообще все это здорово ... но вот вопрос об индексации генерируемых страниц поисковыми системами. Насколько качественно они смогут быть проиндексированы ?
 :::::  Wsc пишет 29.05.2003 @ 17:13 
Зато этот скрипт(класс) весом в 80 кило позволяет творить любые вещи.
И отделение оформления от кода реализуется замечательно, если конечно не учитывать, что в самих шаблонах может присутствовать логика(но это только плюс).
И еще из плюсов Smarty - возможность компиляции шаблонов в полноценно работающий код.
А, если Smarty кажется страшным, то есть EasyTemplate - скорость высокая, полное отделение оформления от кода, отсутствие логики в шаблонах, легкое освоение.
 :::::  Ray Adams пишет 29.05.2003 @ 17:24 
Все равно, какой бы не был супер пупуер скрипт, одно слово универсальность перечеркивыает все. Любой профессиональный програмист под веб скажет, чтобы написать большой проект, огромный проект, надо писать все самому. Ибо ни один из существующих сриптов не подойдет без переделки, а копаться в чужом коде, дело не благодарное и времени будет пторачено куча и неизвестно получиться ли вообще переделать или нет. За это время можно запросто самому все написать. Тем более что при серьезном проекте бывают такие исключения, что как ни крути а писать самому придется.
 :::::  Alex пишет 27.06.2003 @ 18:55 
Привет всем!Кто хочет обмениваться скриптами кидайте все сюда!
 :::::  матрас пишет 28.06.2003 @ 15:58 
поскажите plz, как в этом скрипте (в top.php и bottom.php) разрешить использование таких кавычек: " а не ' .

очень нужно! напишите если кто знает :))
 :::::  Ray Adams пишет 30.06.2003 @ 09:40 
2 матрас
вот таким образом \"

 :::::  dan пишет 30.06.2003 @ 23:58 
Rebjat, a kak je security, s register globals da eshe "allow fopen() open urls"... i dalshe po tekstu?
 :::::  Ray Adams пишет 01.07.2003 @ 09:37 
А причем тут секурити? Я до сих пор пользуюсь register globals и "allow fopen() open urls"... у меня не запрещен и что? Это разве мешает мне както жить? Или может как то разрушить мой сайт? Никаким образом.
 :::::  advocat пишет 01.07.2003 @ 12:09 
Как по мне, то как раз лучшие ссылки, это именно пример, не с index.php?module=news&id=24, a /news/24/, тем более, что осуществить, это можна например с помощью .htaccess
---
Options Multiviews
---
http://www.atlanta-bar.com.ua/ru/menu/ как пример...
 :::::  Ray Adams пишет 01.07.2003 @ 12:34 
Можно конечно 8-)
Только иногда очень трудно бывает запихнуть некоторые параметры в такую систему.
 :::::  Вано пишет 25.08.2003 @ 03:27 
Полезная статья, но совсем уж для начинающих программистов:)
 :::::  Airon пишет 28.10.2003 @ 18:41 
Скажите для чего нужна,там где идет проверка на существование переменной $mod, проверка на то не равна ли она пустой строке ($mod=="") если это опустить все так же работать будет или я не прав? А может тут есть какой-то нюанс?
 :::::  Ray Adams пишет 28.10.2003 @ 23:20 
при передаче ?mod=
вполне $mod может быть пустой перменной, хотя я не знаю может в новый версиях PHP это и не будет, но привычка осталась с давних времен.
 :::::  Airon пишет 30.10.2003 @ 22:41 
Вот кусок твоего кода(судя по всему он является куском индекса.пхп):

if (!isset($mod) || ($mod=="") || (!file_exists ("mods/$mod.php"))) {
$mod=$sys_def_mod;
#Проверка на существование переменной $mod, и существования такого модуля
# если неверное условие то присваиваем ему значением модуля по умолчанию
}
$PAGE_TITLE="Модуль $mod";
include("inc/top.php");
include("inc/$mod.php");
include("inc/bottom.php");
____________________________________________________

если передать переменную mod так : mod=../index, то повесим скрипт, как этого избежать?
 :::::  Ray Adams пишет 31.10.2003 @ 00:37 
А коменты мои труждно было прочесть???
----------------------------------------------------------
А что будет если вы попытаетесь вызвать "index.php?mod=../index" ???
В том примере что я написал хорошего будет мало, на самом деле такие вещи делаются по немного по другому. К примеру в базе данных хранятся названия модулей и соответствующие им имена файлов. Тогда к примеру mod1.php может иметь имя module1 и вызываться как index.php?mod=module1. Далее через запрос к базе выбирается имя файла и он уже инклюдится.
Я же приводил пример наипростейшей системы с минимальной защитой.
----------------

 :::::  NataS пишет 16.11.2003 @ 01:45 
хорошая статья...
 :::::  DreameR пишет 19.11.2003 @ 17:16 
>>если передать переменную mod так : mod=../index, то повесим скрипт, как этого избежать?

include_once
 :::::  OSCAR пишет 21.11.2003 @ 14:16 
Ray Adams
Скажи , пожалуйста, как в PhpNuke изменить название модуля и куда он ссылается ... Это надо уметь модуль писать??
Я новичек и нифига не разбираюсь
мой e-mail: oscar24@mail.ru
 :::::  sem пишет 16.01.2004 @ 00:42 
esli smotretj na statju obsheobrazovateljnogo xaraktera..togda klassnaja statja....
no mne interestno, skoljko pojavilosj portalov, osnovanix na dannom skripte...navernjaka kto-to prodvigaet ego kak ochenj klasnuu i mudruu CMS :)
------------------------------------------------------------------------------
vopros nuka, chto tolku oblivatj grjazju...kto s nim plotno razbiralsja? da edinizi...vse privikli k bludechku s goluboj koemochkoj...a vi ne za bili chto eto OpenSource so vsemi vitikaushimi posledstvijami...

no dage pri vsem tom, tot ge postnuke imeet odno iz samix stabiljc jader...v kotorom realizovano vse samoe neobxodimoe dlja raboti CMS.
Mne vot interestno, mnogo li ludej delali svou OS...na kot oni sejchas rabotaut :) i samoe glavnoe smisl etogo? A skoljko pisalo , dage melkie programi dlja pod vindu ili lunux...

tem bolee chto postnuke snostno dokumentirovan, imeet svoj API nu i tak dalee....a samoe glavnoe imeet postojannoe razvitie i postojannij kolektiv programmerov, kotorie pravjat dovoljno bistro bugi. Tem bolee bugi vedj pojavljautsja v osnovnom v moduljax....a kogda poslednij serjeznij bug bil najden v jadre????

Kasateljno proizvoditeljnosti....xe chto skazatj, snachala opredelitesj, chego vam nugno,a potom pretenzii k nuku..."chto bi podmesti pol, ne objazateljno bratj metlu s turboreaktivnim dvigatelem i jadernim reaktorom....dostatochno obichnogo venika....nu a dlja bolee prodvinutix-pilesosa" Tak i tut...dlja togo chto bi vistavitj svou biografiu i 10 kartinok druzej, ne objazateljno bratj cms vioobshe, esli van ne xochetsja morochatsja s kagdim filom vozmite simpleCMS....esli novosti kagdij denj....najdite legenkuu blog systemu...nu a kolj ug u vas sajt s 10.000 reginix polzovatelej i kot ne prinost dostatochno deneg dlja komercheskogo produkta......
vozmite tot ge PostNuke ili ezPublish, toljko viberite normaljnogo provajdera....postavte svoj servak ili dedicating i gonjate....a tak chto bi vi tut osobo ne krichali o zenax....
dedik Celeron 1700, 512 ram, 40 gb vint i 100Gb trafika obojdetsja vam nu v 40 eur/mesjaz. A esli vash site ne prinosit 50$ v mesjaz, ne trogajte nuku prosto :)












 :::::  Ray Adams пишет 16.01.2004 @ 01:03 
Не буду сейчас разводить демагогию насчет Open Source. Я всегда был одного мнения, что хорошего продукта на Open Source не получиться. Особенно если над ним работает туча программеров со всего мира :)
PHPNuke хорош, но дико тормозной так как много там не оптимизировано, половина действий вообще не нужна. Я в нем копался очень и очень долго, пока у меня был запущен портал NVIDIA BIOS Collection. Посещений у меня очень много и потому севак просто падал от Нюка.
 :::::  Антон пишет 04.02.2004 @ 08:30 
Очень полезная статья, мне она понравилась, потому что я решил освоить PHP, но не просто а на практике
 :::::  djmel пишет 16.02.2004 @ 04:44 
Спасибо за наставление на правильный путь - эта статья мне очень помогла понять что есть PHP.
Но у меня не все работает поэтому прошу помощи - стартовая страница скриптом собирается и выводиться правда браузер никак не хочет автоматом определить кодировку, а вот дальше совсем не работает кликаю по ссылкам - и ничего не происходит. как я понял скрипту не передается значение переменной $mod . Пожалуйста подскажите по какой причине сие происходит?

 :::::  Ray Adams пишет 16.02.2004 @ 08:36 
1. Ты скорее всего не правильно строимш header файла вот потому эксплорер и не определяет кодировку.
<?php
echo '
<html>
<head>
<META content="text/html; charset=windows-1251" http-equiv=Content-Type>
<title>'.$PAGE_TITLE.'</title>';
?>
вот примерный header для страницы.

2. Если переменные не видны, то значить у тебя register_globals = off, а это значить что, PHP автоматически твои переменные не будет создавать, и их тебе надо вытаскивать самому. Советую почитать про настройку PHP/
; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.
Тебе надо в начале скрипты инициализировать нуждные тебе переменные.
Вытапскивая их их этих массивов
$_ENV, $_GET, $_POST, $_COOKIE, $_SERVER.
Соответственно , если ты передает как index.php?mod=news&showid=8 тоесть через GET то все твои переменные будут сидеть в $_GET
$mod=$_GET['mod'];
$showid=$_GET['showid'];

 :::::  Byrbon пишет 21.03.2004 @ 11:18 
Спасибо , очень полезная статья.
Подскажите как подключить вместо /mods/mod1.php
/mods/new/index.php
Положить все в mods переименовать index в mod1 не подходит.
 :::::  Terrible Brooder пишет 24.04.2004 @ 01:09 
Мне кажется, что сама система использования МОДОВ таким образом ни к чему хорошему не приведет.
Попробую объяснить всоё мнение:
1) Неудобоваримость кодов как таковых - нельзя посмотреть весь дизайн сайта целиком(без РНР)
2) Постоянные включения и выключения РНР кодов сильно сказываются на производительности. Я имею в виду строки типа:
...
?> какой-то текста
<?php
....

По моему мнению из этой статьи можно вынсти только одно: структуированность запросов!!!! В это ОГРОМНЫЙ плюс.
А использование Модов - нецелесообразно.

Например мой сайт постоен на PowerTemplare, и я просто рад, что перешёл на этот движок. Быстро, надёжно, удобно.
можете сами посмотреть: http://pchelp.zelot.ru
 :::::  Ray Adams пишет 24.04.2004 @ 01:38 
2) Постоянные включения и выключения РНР кодов сильно сказываются на производительности. Я имею в виду строки типа:
...
?> какой-то текста
<?php
....
------
А где это ты видел такое у меня ? Я никогда так не делаю, стараюсь писать на 100% PHP
Использование готовых движков, это конечно хорошо, но создать что-то крутое на них не возможно. Так как любой крутой сайт, требует индивидуального подхода!
 :::::  Ray Adams пишет 24.04.2004 @ 01:39 
Подскажите как подключить вместо /mods/mod1.php
/mods/new/index.php
Положить все в mods переименовать index в mod1 не подходит.
-----
Зачем тебе нужен вообще index.php в mods/news/ если он напрямую никогда не вызывается.
 :::::  mullo пишет 06.05.2004 @ 20:38 
Чуваки молодцы, рлоезный сайт!!
 :::::  Dolphin пишет 27.05.2004 @ 19:04 
"mod=../index" можно решить таким образом:

в index.php инклюдить модули нужно так:

switch($mod)
{
case "mod1":
require('mods/mod1.php');
break;
case "mod2":
require('mods/mod2.php');
break;
default:
require('mods/mod1.php');
}
 :::::  Nord пишет 10.06.2004 @ 01:50 
"..Невозможно увидеть дизайн сайта целиком.." если очень нужно увидеть, то втыкай в index.php мета теги, top, center, и bottom. и радуйся жизни.
статья хороша для новичков. когда я учился, мне-бы она пригодилась...

 :::::  Basile пишет 21.06.2004 @ 09:12 
я начинающий сайто-писатель и у меня такой вопрос
<html>
…начало файла …
<?php
$url = "";
if ($link == 1) { $url = "name1.phtml"; }
if ($link == 2) { $url = "name2.phtml"; }
if ($link == 3) { $url = "name3.phtml"; }
if ($link == 4) { $url = "name4.phtml"; }
if ($url == "") { $url = "error.phtml"; }
INCLUDE ($url);
?>
… конец файла …
</html>
Почему этот скрипт не работает может тут есть ошибка?
Почему Тут файлы с расширением *. Phtml ? - что это такое!!!
Объясни все поподробней!!!Может тут не все показано? Или что-то надо еще заносить в эти файлы?
Ответы шлите на мыло Basile666@inbox.ru пожалуйста!! или здесь пишите, но лучше здесь и на мыло




 :::::  Basile пишет 21.06.2004 @ 09:12 
я начинающий сайто-писатель и у меня такой вопрос
<html>
…начало файла …
<?php
$url = "";
if ($link == 1) { $url = "name1.phtml"; }
if ($link == 2) { $url = "name2.phtml"; }
if ($link == 3) { $url = "name3.phtml"; }
if ($link == 4) { $url = "name4.phtml"; }
if ($url == "") { $url = "error.phtml"; }
INCLUDE ($url);
?>
… конец файла …
</html>
Почему этот скрипт не работает может тут есть ошибка?
Почему Тут файлы с расширением *. Phtml ? - что это такое!!!
Объясни все поподробней!!!Может тут не все показано? Или что-то надо еще заносить в эти файлы?
Ответы шлите на мыло Basile666@inbox.ru пожалуйста!! или здесь пишите, но лучше здесь и на мыло




 :::::  Teddy_B. пишет 03.07.2004 @ 03:18 
сорри, что не по теме, вопрос такой:
нельзя ли привести пример форума, так же ненавязциво, но информативно?.. =))
 :::::  Teddy_B. пишет 07.07.2004 @ 02:53 
Люди... ауууу.....
 :::::   пишет 04.08.2004 @ 15:21 

 :::::  Aleks_Drims пишет 03.10.2004 @ 18:05 
Не кстате статья нечего я её месяца два увидал скачал так называемый "портал" с какого сайта не помню и с помошью статьи пределал в полне приличную чтуку с использованием mysql от старого кода нечего и не осталась спасибо ..................:)
 :::::  AlexanderCam пишет 15.10.2004 @ 18:31 
А вот у меня как отличившегося не заработало :(
У меня и в линухе и в виндах получается одно и тоже [ http://www.myjunk.nm.ru/portal.gif ] вызывается функция die. А если это условие
( if (!eregi("index.php", $PHP_SELF)) { die ("Access denied"); } )
закоментировать, то этого естественно не будет, но и по модулям перемещаться я тоже немогу... пробовал так $mod=$_GET["mod"] и всеравно не работает и вообще каким это образом скрипт index.php узнаёт значение переменной $mod? :(
Вот то, что я понаписал, но фактически всё из этой статьи [ http://www.myjunk.nm.ru/www.zip ]

P.S. если есть у кого 100% работающий вариант примера этой статьи, то пришлите мне на мыло если не затруднит.
 :::::  Tiger пишет 28.12.2004 @ 02:38 
U menaj to#e samoe. Access Denied! I e6o eto Notice: Undefined variable: PHP_SELF in D:\...\test\mods\mods\mod1.php on line 2
 :::::  Олег пишет 24.01.2005 @ 23:38 
Как правильно настроить передачу по ссылке типа index.php?mod=3&id=3, если в каталоге (например - arshiv, index.php находится в arshiv) есть каталоги (mod) под именами 1,2,3.... В каждом из этих каталогов есть файлы под одинаковыми именами (id) - 1.php, 2.php, 3.php ? И как правильно вывести заглавие страницы, в данной статье заголовок - $mod, выводится у меня 1, 2 ,3, а нужно правильно вывести заглавие в каждой странице.

Помогите, пожалуйста, запутался полностью.
olcher2000@mail.ru
 :::::  Greg пишет 17.05.2006 @ 13:18 
В любом более или менее серъезном учебнике по PHP-программированию этот подход обсуждался десятки раз. абсолютно ничего нового
 :::::  Роман пишет 13.12.2006 @ 14:56 
в этом примере полно ошибок и если тупо следовать статье ничего не заработает
 :::::  BirDene пишет 23.09.2007 @ 08:11 
увидел знакомые имена, и решил тоже написать пару буков :)
товарищи неспарведливые последние. ибо такие статьи несомненно полезные.
подход не новый, согласен. но:
1) для начинающих ещё один источник, где всё очень просто и доступно изложено;
2) професьоналы тут могут спорить какой из двух методов круче. ибо хотя статья с одной стороны детали для студентов рассказывает, но с другой стороны вопрос стоит на очень философском уровне;
3) вместо $php_self надо наверное $_Server['php_self'] писать, у кого если пхп 5-й;
4) и наконец долой ханжество и занудство. никакого вреда от того не будет, если кто-то напишет статью о том, как он обычно пишет. наоборот, очень интересно. я тоже много очень интересных до дикости подходов встречал. особенно с ооп. хотя лично ничего не против, но тоже приходилось с видеть работы, когда ооп делался уже ради ооп (чистое искусство), и пополам на реальность. то есть увлекаются некоторые, и абстрагируют всё до такой степени, чтобы было "на все случаи жизни". куча надуманных классов, которые делают работу, которой не существует. не надо так уж извращаться тоже хотя и это интересно видеть. самому всё пробовать бывает некогда, а так кто-то сделал, а ты смотришь с интересом :)
 :::::  Dr@gomir пишет 23.01.2008 @ 00:03 
У меня другая проблема:
Я реализовал все как написанно в данном примере. По началу ввел дополнительные примбобасы. На локальной машине в Денвере(Apache 1.3 PHP 4) все работало нормально. Но когда выложил на хостинг площадке(holm.ru) скрипт отказался работать(( постоянно показывается содержание index.php. Может это из-за рекламного баннера. при его загрузке меняется адрес в браузере
 :::::  Владимир пишет 14.01.2009 @ 22:16 
Привет, ето то что мен нужно, модулный подход... но столкнулся с рядом непоняток, основная: я так понял даная идея притагивает к тому что модуль должен быть реализован в одном файле, или файлы должны инклудится в файл модуля, иначе все пути оперделённые для модуля сбиваются, проверка на запуск с index.php тоже непускает, я правильно понял, или может есть какая то альтернатива, какие вобше правила для постройки CMS чем нужно управлятса, на какой пример смотреть?
 :::::  d-Const пишет 17.01.2009 @ 21:25 
2 BirDene
>> $_Server['php_self']
Заработало... Почти...
Ошибок не выдает, но на другие страницы не переходит. Подскажите пожалуйста, в чем проблема
глобы выключены.
для связи
ICQ# 362 311 002
Спасибо.
 :::::  d-Const пишет 17.01.2009 @ 21:39 
Обнаружил свою проблему.
В начале скрипта нужно добавить строку
$mod=$_REQUEST['mod'];
тогда все работает :)
вот весь код
_______________________________________________________________________
<?php
include("include/config.php");
$mod=$_REQUEST['mod'];
if (!isset($mod) || ($mod=="") || (!file_exists ("mods/$mod.php"))) {
$mod=$sys_def_mod;
#Проверка на существование переменной $mod, и существования такого модуля
# если неверное условие то присваиваем ему значением модуля по умолчанию
}
$PAGE_TITLE="Модуль $mod";
include("include/top.php");
include("mods/$mod.php");
include("include/bottom.php");
?>
_______________________________________________________________________

P.S. забыл поблагодарить автора статьи. Огромное спасибо! А то я начал писать сайт по старинке, с обильным html кодом.

 :::::  Алексей пишет 16.07.2009 @ 16:41 
Да, в статье есть кое-какие недочеты. Но в целом идея ясна. Спасибо автору
 :::::  Сергей пишет 07.01.2011 @ 23:21 
Привет всем.
С Наступившим Новым годом всех...
Недавно установил локальный сервер...установил php nuke/
Казалось бы хватит для личного пользования....одно лучше чем переделывать все страници...да нет ...год назад увлекся вебдизайном и не отпускает...хочется вовсем разобраться из нутри...
Так во и решил идти дальше.
Я вроде все делал как пишут да только выдало на всю страницу....Warning
Я все это закинул на локсервер и набрал адрес сайта и index.php
Имя:
Email:
URL

Введите сумму двух чисел семь и шесть (семь+шесть=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0598009