Полагаю, я не совсем понимаю, к чему вы стремитесь, но тем не менее попробую:
Для каждого нестатического веб-сайта, будь то на основе Drupal или чего-либо еще, есть две основные вещи, обеспечивающие «контекст» для решения о том, какой контент доставлять для данного запроса.
Первая и самая важная вещь - это, очевидно, сам запрос . Это единственная информация, которая всегда гарантированно будет там . В большинстве случаев это будет просто запрос GET, и в этом случае URL-адрес неявно является основным источником доступного «контекста». POST-запросы могут предоставить немного больше «контекста» помимо URL, но по вашему вопросу можно утверждать, что это просто более сложный вариант GET-запроса, предоставляющий еще несколько «аргументов», помимо аргументов из URL (и в в большинстве случаев можно превратить запрос POST в запрос GET с более сложным URL-адресом в любом случае).
Вторая вещь, "обеспечивающая контекст" - это сессия . Независимо от того, на каком механизме обработки сеансов базируется (в настоящее время преимущественно куки-файлы), цель всегда одна и та же, а именно - переносить некоторую информацию о «состоянии» через границу запросов без сохранения состояния. Это делается путем привязки данного запроса к информации из предыдущих запросов, хранящейся на стороне сервера. Это позволяет «обогащать» информацию, которая доступна для принятия решения о том, какой контент доставлять по запросу. По сути, это можно рассматривать как способ добавления дополнительных «аргументов» к запросу.
И это все. Любая другая информация, необходимая для сборки ответа, должна каким-то образом быть получена из информации, предоставленной в запросе (и можно сказать, что обработка сеанса уже является основным процессом, добавляя «контекст» на основе файла cookie или некоторого другого идентификатора). приходит с просьбой).
Drupal довольно хорошо отражает этот процесс, ИМХО, так как он сначала собирает «основное» содержимое для ответа на основе URL с дополнительной информацией (например, о пользователе), «прикрепленной» в сеансе. Только через после основное содержимое было собрано посредством вызова $return = menu_execute_active_handler()
в index.php, что другие элементы ответа добавляются (например, блоки, меню и т. Д.), Вызывая theme('page', $return);
.
Итак, какой бы «контекст» ни был, что вы хотите «передать» этим другим элементам, вы должны либо «извлечь» его из информации, уже использованной для сборки основного контента (URL, сеанс), либо вы должны хранить его временно во время генерации основного контекста. Вы можете сделать это разными способами, например, добавляя его к информации, уже сохраненной в сеансе, используя статическое кэширование в некоторых функциях, устанавливая глобальные переменные (не;), передавая данные через базу данных и т. д. *
Итак, опять же, я не понимаю, к чему вы стремитесь. Что вам здесь не хватает?