Виджет не является частью странички?

Делал один мультивиджет, заметил некоторые странности в работе и решил проверить экпериментальным путем. Создал такой фукнционал виджета:

        if(!$i){
        $i = 5;
}
        echo $i; $i++;

И если вывести два виджета на одной странице, то каждый из них выводил значение 5.

Решил пойти дальше. Сделал так чтобы значения переменных, необходимых для отображения в виджете, хранились в отдельном файле, который приклеил в сайдбаре через require перед выводом виджетов. Конечно, виджеты упорно не видели включенный файл и не могли считать значения переменных. Как я понял, виждет исполняется не на самой страничке а где-то внутри а на страницу отджает только результат. Так вот вопрос в том, как сделать так чтобы если перед виджетом на странице есть переменная, то он мог ее видеть – Можно ли сделать так чтобы виджет не был чем то вроде айфрейма, а исполнял php непосредственно на странице, исходя из "окружающей обстановки", если вы меня понимаете…

Учите матчасть 🙂 Эти "странности" описаны в мануале http://www.php.net/manual/ru/language.variables.scope.php

Спасибо, а если пойти по другому пути… Существует какой-то способ подготовить в виджете пхп -код для вывода чтобы он срабатывал на самой странице? Грубо говоря сделать что-то типа echo "<?php echo ‘5’; ?>"; 🙂 Понимабю как это по-чайниковски звучит, но уверен, что какой-то способ печать пхп код с посощью самого пхп должен существовать, разве нет?

Ага, якось чайникувато 🙂 Что крайне удивительно, учитывая Ваш опыт. Наверно, Вы просто не очень внимательно смотрели на WP с обратной, программной стороны, а в основном с лицевой – той, где html.

Вообще-то, есть виджеты, похожие на текстовый, но выполняющие php-код, используя тривиальный eval(). Если, конечно, я правильно понял последний пост.

Ага, якось чайникувато :) Что крайне удивительно, учитывая Ваш опыт. Наверно, Вы просто не очень внимательно смотрели на WP с обратной, программной стороны, а в основном с лицевой - той, где html.

Ну не знаю откуда у вас впечатление о большом опыте у меня. По времени может и опытный я, но все крутиться на циклах да на десятке усвоенных функций 🙂 Все от того что учусь только на задачах, а не так что прочитал 100 книг и думаю чтобы такое написать 🙂

Почитал про области видимости и eval но все равно не щелкнуло, как я например должен "глобализировать" такой код мультивиджета

 require_once($_SERVER['DOCUMENT_ROOT']."/sск_".$nomid."/script.php"); // значение $nomid  берется из настроек виджета
 $res = new blabla(); 
 print($res->doit($howmany));

Не побоюсь быть чайником, но приписка static к переменной $res вызвала ошибку (из-за того в переменную передается значение функции?). require_once надо наверное разбить на части – путь в одну статическую переменную, а к самой функции с указанием переменнойс путем, насколько я понял, надо приатачить global, так?

Я понимаю, что с такими вопросами мне больше подошел бы форум по php, но все таки это ведь касается работы виджетов ВП 🙂

Ю.Б., спасибо что не ответили, включил моск, немного экспериментов и теперь мои навыки пополнились новой функцией 🙂

Завсегда велькам! 🙂

Anonymous
Отправить
Ответ на: