Запуск некэшированного PHP в шаблоне Drupal? - PullRequest
3 голосов
/ 26 марта 2010

Мне нужно запустить фрагмент кода PHP в шаблоне Drupal и предотвратить его кэширование. Фрагмент PHP анализирует файл cookie и, если он найден, возвращает сообщение на основе значения файла cookie.

е:

if(isset($_GET['key'])) { 
    $cookievalue = $_GET['key']; 
}

if(isset($_COOKIE['cookname'])) { 
    $cookievalue = $_COOKIE['cookname']; 
}

switch ($cookievalue) { 
    case hmm01: echo "abc"; 
    break; 
    case hmm02: echo "def";
    break; 
    case hmm03: echo "ghi"; 
    break; 
    default: echo "hello"; 
}

В настоящее время Drupal отображает сообщения случайным образом в соответствии с тем, когда страница была впервые кэширована, и на основе файлов cookie, используемых в то время.

Я не вижу много информации о том, как я могу поступить об этом - кажется, что вы должны отключить кеш для страницы, а не запускать php-код без кэширования.

Может ли сообщество подсказать мне, как использовать правильную технику в отношении шаблонов Drupal и PHP на основе информации, которую я разместил, или направить меня к руководству или учебнику, которые могут быть полезны для моей ситуации?

1 Ответ

1 голос
/ 27 марта 2010

Ваша проблема в том, что Drupal кеширует страницы, что хорошо, так как в противном случае вы, вероятно, получите огромный удар по производительности.

Решение, хотя и не такое приятное, - позволить js публиковать данные с помощью Ajax. Поскольку Drupal не кеширует почтовые запросы, это может быть решением. Однако он зависит от js и делает дополнительный запрос, который требует дополнительных системных ресурсов. Но, по крайней мере, это лучше, чем отключение кеша страниц.

Edit:

Подумав немного, я думаю, что лучшим решением будет создание пользовательского блока. Поскольку у блоков Drupal есть своя собственная система кеширования, вы сможете получить желаемую функциональность. Пользовательские блоки создаются с использованием hook_block

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...