Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
09 октября 2017, 15:47
+2
Спасибо за критику!
Ну если такое отношение к критике, то возьму на себя смелость разобрать код.
1. Теперь на один просмотр страницы будет 2 лишних запроса к БД.
2. Вот это
$modx->resource->save();
зачем? Кроме того, это ещё один запрос к БД.
3. Вы понимаете, что после каждого просмотра вы убиваете весь кэш сайта?
4. И наконец, эта странная фраза собака друг человека
весь контент в шаблонах вызывается через fastField: [[#[[+resid]].pagetitle]]
Это как интересно?

Почему нельзя просто сделать форвард на найденный ресурс?

Вообще, эта задача легко решается через контексты. И поддержка такого решения гораздо проще, ведь всё понятно. А вот для вашего решения нужна инструкция, ибо следующий программист вряд ли сходу поймёт ваше творчество.
Сергей Шлоков
09 октября 2017, 07:32
0
К сожалению, помочь нечем. Я с минишопом никак.
Сергей Шлоков
09 октября 2017, 07:17
1
+2
Получить одно поле —
$q = $modx->newQuery('modTemplateVarResource', array('tmplavarid'=>1,'value'=>$domain));
$q->select('contentid');
$RESID = $modx->getValue($q->prepare());
Сергей Шлоков
09 октября 2017, 07:15
+2
"SELECT contentid FROM base_site_tmplvar_contentvalues WHERE tmplvarid = 1 AND value = '$domain'";
Жесть. Кому нужен дырявый сайт, налетай.

Стыдно должно быть, молодой человек!
Сергей Шлоков
05 октября 2017, 22:26
+3
Так как я с недавних пор решил разобраться в логике работы кэша MODX и Fenom, то знаю ответ. Завтра постараюсь подробно рассказать почему. В формате комментария это сделать сложно.
Сергей Шлоков
04 октября 2017, 16:57
0
Почемуу, почемуу, потомуу.
Сергей Шлоков
04 октября 2017, 16:30
+2
Вот так {3 | url} тоже будет работать.
Сергей Шлоков
04 октября 2017, 14:44
+1
Разобрал проблему. Если интересно, вот статья.
Сергей Шлоков
02 октября 2017, 22:18
+2
Определите сначала этот параметр, а затем подсуньте его в массив с where.
Сергей Шлоков
02 октября 2017, 08:53
+3
Ещё забыл написать про новый метод кэшменеджера — remember. Он пригодится в тех случаях, когда нужно получить значение из кэша, и если кэш пусто, то сохранить данные в кэш.
Например, получаем общее количество активных пользователей.
cache()->remember('count_users', 300, function() use ($modx) {
    return $modx->getCount('modUser', array('active' => 1));
});
Если в кэше пусто, то выполняется замыкание, в котором возвращается вычисленное значение. Затем это значение сохраняется в кэше на 5 минут. И пока не истечет это время при последующих запросах количество пользователей будет запрашиваться из кэша.

Сергей Шлоков
30 сентября 2017, 17:32
+1
Игнор скорее всего глючит на вложенных уровнях — у меня на первом уровне (в шаблоне) и в ресурсе все гуд. А у тебя, наверно, через феном вызывается сниппет, который вызывает чанк с игнором. Чисто предположение.
Сергей Шлоков
29 сентября 2017, 23:26
+3
Если кто не заметил, мой PR таки принят. Так что дебажить феном теперь значительно легче.
Сергей Шлоков
27 сентября 2017, 17:24
0
Это всё на совести разработчиков fullCalendar. У меня в планах нет задачи перетаскивать интерфейс гугл календаря в свой компонент.
Сергей Шлоков
19 сентября 2017, 18:07
+1
Это вряд ли. Как вариант, для редакторов проверять контент регуляркой на событие OnBeforeDocSave и запрещать php код.
Сергей Шлоков
19 сентября 2017, 18:03
0
Пока нет. Для яндекс календаря нет api. Нужно разбираться с СalDAV. Не до этого сейчас.
Сергей Шлоков
19 сентября 2017, 10:13
+2
Вышеописанные варианты (и сессии, и плейсхолдеры) все-таки являются некими костылями — и сессии и плейсхолдеры предназначены для другого. На самом деле в Fenom есть возможность передавать переменные в шаблоны. Кому интересно как, читайте.
Сергей Шлоков
16 сентября 2017, 10:22
+3
А что мешает прописать класс в самом ресурсе в поле «Атрибуты ссылки»? Не охота писать в каждом ресурсе, создайте плагин на событие OnLoadWebPage и для ресурсов определённых родителей прописывайте нужный класс.