Помощник
|
переменные из include |
b1f
|
Сообщение
#1
|
||
|
|
||
|
|||
ZhukV |
22.2.2010, 20:12;
Ответить: ZhukV
Сообщение
#2
|
|
Тогда лучше воспользуйся константами, функция define($name,$val), где $name - имя константы, $val - её значение.
[PHP] define('_ZhukV','freedownload'); //тярям //парям //любой код, инклюды echo _ZhukV [/PHP] Этот код те выдаст freedownload Ноу учти, что повторяющийся имен констант не дожно и приблизительно быть. Также следует знать, що в система апатч, есть сразу некоторые зарезвизированы константы, и есть некоторый глобальные. Короче, ятоб не распминатся, надай им кокого-то унакального названия |
|
|
b1f
|
Сообщение
#3
|
|
хорошо спасибо, попробую, а если у меня в константе будут другие переменные или вывод инфы из базы тоесть
$faq = "тут всего может быть"; а потом define('_ZhukV','$faq'); чтобы вывести потом это нужно definer('_ZhukV'); чуть что поправьте, просто никогда не пользовался этой функцией ... |
|
|
b1f
|
Сообщение
#4
|
|
или я настолько ленивый или я незнаю...
вот функция [PHP]function load_modules() { $url = "modules"; if (is_dir($url)) { if ($dir = opendir($url)) { while (false !== ($file = readdir($dir))) { if ($file != "." && $file != "..") { if(is_dir($url."/".$file)) { $load = $url."/".$file."/index.php"; include ($load); if(!file_exists ($url."/".$file."/index.php") ) { echo "<p>В папке $url/$file/ не найден главный файл.</p>"; } } } } } closedir($dir); } }[/PHP] подгружаю файл, в котором есть переменная $faq [PHP]include ($load);[/PHP] на странице гружу эту функцию... [PHP]load_modules()[/PHP] не выводит, если вместо переменой написать просто echo то нормально все.... но мне нужна именно переменная, для того чтобы ее вставить потом в шаблон. если в ручную на странице инклудить каждый модуль, без функции [PHP]include ("modules/faq/index.php");[/PHP] то переменная работает так как нужно, но в ручную каждый модуль прописывать недело... помогите разобрать, дайте совета... |
|
|
r3ntg3n |
26.2.2010, 14:49;
Ответить: r3ntg3n
Сообщение
#5
|
|
создай в папке modules файл modules.php, в который запиши массив следующего вида:
[php]$modules_arr = array ( 'module_1'=>array('module\'s name', 'path to module\'s files'), 'module_2'=>array('module\'s name', 'path to module\'s files'), 'module_3'=>array('module\'s name', 'path to module\'s files'), );[/php]в конфиге сайта пропиши: [php]include("modules/modules.php"); foreach ($modules_arr as $module=>$module_params) { if (!file_exists($module_params[1])) { exit ("Error! No files for module ".$module_params[0]."!"); } else { include_once($module_params[1]); } }[/php]в итоге просканишь наличие файлов модуля, если их нету - получишь сообщение, а если есть - проинклудишь модули и сможешь вызывать функции этих модулей. Но вот если у тебя модули прописаны отдельными классами, то код придется другой писать, соотвественно и функции модулей следует вызывать как методы экземпляра класса модуля. |
|
|
b1f
|
Сообщение
#6
|
|
тоесть я как понял тут вручную нужно все равно прописывать путь к модулю?
[PHP]$modules_arr = array ( 'module_1'=>array('module\'s name', 'path to module\'s files'), 'module_2'=>array('module\'s name', 'path to module\'s files'), 'module_3'=>array('module\'s name', 'path to module\'s files'), ); [/PHP] |
|
|
r3ntg3n |
27.2.2010, 11:50;
Ответить: r3ntg3n
Сообщение
#7
|
|
ну, можно скриптом просканить папку modules:
[php]chdir($_SERVER['DOCUMENT_ROOT']."/modules/"); $dir = opendir("."); while (($file = readdir($dir)) != false) { if (($file != '..') && ($file != '.') && is_dir($file)){ chdir($file); if (!file_exists("index.php")) { exit ("ERROR! No index.php file for module $file!"); } else { require_once ("index.php"); /******************************** * используем require_once так как в том случае, * если есть ошибка в формировании путя к файлу * модуля и невозможности подгрузить index.php, * функция выдаст ошибку и прекратит выполнение скрипта ************************************/ } } }[/php] |
|
|
b1f
|
Сообщение
#8
|
|
|
спасибо, решил просто сделать не функцией, и вынес в отдельный файл modules.php после подгрузил его
|
|
|
||
|
Текстовая версия | Сейчас: 25.4.2024, 12:23 |