25 июня 2015 г., 8:41

Сниппет на странице вызывается дважды

Написал нехитрый сниппет, созданный с целью подсчета просмотров страницы
if($tv = $modx->getObject('modTemplateVarResource',array('tmplvarid'=>21, 'contentid'=>$modx->resource->id))){ $value = (int) $tv->get('value'); $tv->set('value',$value + 1); $tv->save(); return $value; }
а он после каждой перезагрузки вызывается два раза. Ну, т.е. вместо 1 показывает два, вместо 2 — показывает 4 и вообще по таким результатам получается посещаемость в два раза больше. При каждом обновлении странички со сниппетом число увеличивается на два, а не на 1, как задумано. Не, я конешн могу заменить на плагин и я поменял int на флоэт (типа покопаюсь потом как-нить, решу проблему — верну) и вместо единички добавляю 0.5, но интересно, почему страница дважды отрабатывается. При замене смарти-шаблона на стандартный модихсовский все нормально и логично. UPD Я решил, что нефиг считать тех, кто залогин в админке, подправил сниппет и пошел смотреть, как обновляется в другом браузере, где не открыта админка. Два раза страница вызывается, если пользователь авторизован в админке. Если нет — то все ок. Ну, поменял .5 на единицу, залогинился во с фронта, посмотрел, как все считается — ок. Значит, страничка дважды для админко-залогененых обрабатывается.
Плагин однозначно рулит. Навешать на правильное событие и все.
Не велосипед, а рефлекс на стандартный modx-api ) Вообще делал по аналогии github.com/artdevue/HitsPage/blob/master/core/components/hitspage/elements/snippet/hitspage.snippet.php Всегда просто ставил и пользовал, а тут поставил — он глючить начал. Я внутрь залез и упростил все, что мне было не нужно, а компонент удалил, оставил сниппетоогрызок. Топик-то про то, что прикольно, для авторизованных в админке шаблон два разА исполняется при загрузке страницы.
Топик-то про то, что прикольно, для авторизованных в админке шаблон два разА исполняется при загрузке страницы.
Вряд ли это штатная ситуация. Скорее всего где-то так же какой-то велосипед на сайте дописан, из-за чего сниппет и отрабатывается дважды.

Добавить комментарий