Здравствуйте.
Хотелось бы полностью кешировать сайт nginx'ом, но в нодах есть флаги, у каждого юзера значение флагов свое, поэтому кешировать не получется.
Вынес проверку состояния флага во внешний файл bookmark.php (которому через get скармливаю nid ноды):
require 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
global $user;
$flag = flag_get_flag('my_bookmarks') or die('no "my_bookmarks" flag');
print $flag->theme($flag->is_flagged($_GET[nid],$user->uid) ? 'unflag' : 'flag',$_GET[nid]);
?>
в темплейте ноды, в нужном месте вписываю:
<?php
drupal_add_js('
jQuery(document).ready(
function () {
$("#bookmark").load("/bookmark.php?nid='.$node->nid.'");
}
);', 'inline');
?>
После загрузки страници появляется установленный флаг, но при клике на нем его состояние не меняется ajax'ом, оно меняется через редирект страници.
Ссылка выдаваемая через
$flag->theme($flag->is_flagged($_GET[nid],$user->uid) ? 'unflag' : 'flag',$_GET[nid]);
по коду идентична той, что генерируется из node.tpl.php, но почемуто на нее не инициализируется js'ный обработчик флага
Я так понимаю, что надо копать куда-то в сторону Drupal.behaviors и биндингов, и при обращении через ajax к bookmark.php пердергивать биндинги, но к сожалению не силен в js.
Помогите плиз
Комментарии
А вопрос этот хоть как-то решен? или никто с этим не сталкивался?
Да, была промежуточная версия сайта с флагами, там надо было бихейвер реаатачить.
Давно дело было ...
В конце концов - ушли от флагов, в сторону локалстореджа + синхронизация с сервером.
Т.к. состояние флагов прогружать каждый раз не окей, сервер часто дергают..
Короче, выяснил что к чему, дело не во флагах. В д7 все нормально кешируется и флаги не мешают, вот вьюхи в блоках не кешируются.
У меня кеширование всей страници на уровне nginx'а, на 6-12 часов (сбрасывается модулем при редактировании страници либо публикации коммента), пользовательские флаги приходилось аяксом (индивидуально для каждого пользователя) прогружать, потом отказались от аякста в сторону локалстораджа, т.к. на более чем 1млн просмотров в сутки средненький дедик за 40евро не потянул бы динамику ...