Flag подгрузка через ajax (чтобы можно было полностью кешировать страницу)

Главные вкладки

Аватар пользователя -Serg- -Serg- 8 марта 2011 в 15:57

Здравствуйте.

Хотелось бы полностью кешировать сайт nginx'ом, но в нодах есть флаги, у каждого юзера значение флагов свое, поэтому кешировать не получется.

Вынес проверку состояния флага во внешний файл bookmark.php (которому через get скармливаю nid ноды):

<?php
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]);
?>

в темплейте ноды, в нужном месте вписываю:

     <div id="bookmark"></div>
     <?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'ный обработчик флага Sad

Я так понимаю, что надо копать куда-то в сторону Drupal.behaviors и биндингов, и при обращении через ajax к bookmark.php пердергивать биндинги, но к сожалению не силен в js.

Помогите плиз Smile

Комментарии

Аватар пользователя -Serg- -Serg- 20 мая 2013 в 17:15

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

Аватар пользователя vitaboss vitaboss 21 мая 2013 в 0:14

"-Serg-" wrote:
Т.к. состояние флагов прогружать каждый раз не окей, сервер часто дергают..

Короче, выяснил что к чему, дело не во флагах. В д7 все нормально кешируется и флаги не мешают, вот вьюхи в блоках не кешируются.

Аватар пользователя -Serg- -Serg- 21 мая 2013 в 0:30

У меня кеширование всей страници на уровне nginx'а, на 6-12 часов (сбрасывается модулем при редактировании страници либо публикации коммента), пользовательские флаги приходилось аяксом (индивидуально для каждого пользователя) прогружать, потом отказались от аякста в сторону локалстораджа, т.к. на более чем 1млн просмотров в сутки средненький дедик за 40евро не потянул бы динамику ...