Sergey |
|
---|---|
# Gunslinger : ГХм...Ваш вопрос меня поверг своей наивностью и вот почему: в вашем вопросе содержится ответ на то, что вам еще пока не "по зубам" работать с PHP. Вообще-то модуль, это (в общем случае) самостоятельная, заранее определенная часть, которая загружается по правилам обращений с ссылками в интернет. Если взять форум, то вот это обращение http_://www.cotonti.com/forums.php т.е. вызывается модуль forums.php из корневой части сайта www.cotonti.com. После знака ? идут ключи, по которым модуль определяет что делать дальше. Плагин, это пользовательская заплатка, которая подключается в модуле соответствующим образом, в соответствующим порядком и подключается к тому юзеру, которому предоставлено разрешение на то, чтобы воспользоваться этой заплаткой. Весь эффект основан на этой стандартной части модуля по подключению плагина: /* === Hook === */
$extp = sed_getextplugins('page.download.first');
if (is_array($extp))
{ foreach($extp as $k => $pl) { include_once($cfg['plugins_dir'].'/'.$pl['pl_code'].'/'.$pl['pl_file'].'.php'); } } В массиве $extp содержатся указания на плагины, перебирая эти указания подключаются соответствующие плагины. Каждый модуль, условно, разбит на законченные логические части - это скелет. У такой части имеется наименование Hook (для примера это page.download.first - загрузи в странице первым) следовательно будут загружаться плагины помеченные как page.download.first . Однако, плагинов к одной части может быть подключено много, для этого массив $extp, предварительно, сортируется по порядку Order и имени для одинаковых порядков. Исполняются вначале самые меньшие значения. Далее, ответ на мое утверждение "вам еще пока не "по зубам" работать с PHP" следует вызов этого плагина. Фактически оператор include_once (единожды) загружает файл с кодом PHP. Имя и где его искать берутся как раз берутся из условий в массиве $extp и установок всего ресурса в целом ($cfg['plugins_dir']). Условия загрузки формируются при установке плагина, обработкой специальной части плагина Setup. Надо знать, что PHP это интерпретатор, который наперед не знает, что будет дальше. PHP просто берет это файл плагина включает в текст модуля и интерпретирует. Если, в плагине будет свой механизм Hook, то это будет продолжено дальше, пока не будут исчерпаны все подключаемые плагины для данной части. Пройдя последний оператор плагина, интерпретатор возвратиться к исходному модулю и продолжит обработку его операторов, до следующего Hook www.cotonti.mobi
|