Теперь можете хоть 10 000 грузить в новой версии))
  • avatar 1px
  • 0
Бюджет тоже топ?
Неверно настроенный хост/сервер. Движок тут не причём.
  • avatar paic
  • 0
Спасибо, поэкспериментирую. AND template я изначально прописывал, но потом посчитал, что раз у меня уже есть ограничение по ТВ=19, а он подключен только к одному шаблону, то этого будет достаточно. Ну и убрал как «избыточное».
  • avatar webber
  • 1
Мне кажется, можно попробовать добавить еще условие, а не обновлять вообще все createdon
AND $t2.createdon<($tek-IFNULL($t1.value, $t3.default_text)");

+ добавить условие по шаблону (вряд ли нужно обновлять все шаблоны)
AND $t2.template=5
— например
Ну и не забыть после запроса скинуть кэш, если что-то поменялось:)
if ($modx->db->getAffectedRows() > 0) {
    $modx->clearCache("full");
}


В общем, надо на живой базе посмотреть разные варианты, чтобы понять какой эффективнее :)
  • avatar paic
  • 0
оказалось не с position, а z-index
  • avatar paic
  • 0
В общем, пока решил так, учитывая, что форма находится внутри боковой колонки:
1. Весь код off-canvas запихнул во внутрь боковой колонки, т.е. так

<div class="col-md-3">
    <aside class="off-canvas-wrapper off-canvas-cog">
...
[+eFilter_form+]
...
    </div>
</div>

2. Все стили off-canvas обернул media max-width: 1024px
И все отлично работает!
В ПК выглядит как обычная боковая колонка.
Начиная с планшета — выдигающаяся панель.
eFilter и форма на страница в итоге одна и по ним вопросов нет.

Но за исключением select2 (для стилизации выпадающих списков с автоподстановкой)- в режиме ПК он работает отлично, а при адаптации, когда боковая колонка превращается в выдвигающуюся панель, почему то не хочет, буду смотреть по стилям, наверное конфликт с position.
  • avatar paic
  • 0
Еще один вариант, теперь уже и значения по-умолчанию в периоде обновления тоже перезаписывают дату создания ресурса
$e = &$modx->Event;
if ($e->name == "OnWebPageInit") {
	
$t1 = $modx->getFullTableName('site_tmplvar_contentvalues');
$t2 = $modx->getFullTableName('site_content');
$t3 = $modx->getFullTableName('site_tmplvars');
$t4 = $modx->getFullTableName('site_tmplvar_templates');

$tek = time();
	
$modx->db->query("UPDATE $t2 
LEFT JOIN $t1 
ON $t1.contentid = $t2.id 
LEFT JOIN $t4 
ON $t2.template = $t4.templateid 
LEFT JOIN $t3 
ON $t4.tmplvarid = $t3.id
SET $t2.createdon = CASE
WHEN $t2.createdon < ($tek - $t1.value) AND $t1.value > '1' THEN ($t2.createdon + $t1.value)
WHEN $t2.createdon < ($tek - $t3.default_text) THEN ($t2.createdon + $t3.default_text)
ELSE $t2.createdon END
WHERE $t1.tmplvarid = '19' AND $t3.id = '19'
");
	
}

ТВ с id=19 — это период обновления, тип radio, возможные значения Нет==1||1 сутки==86400||10 суток==864000||…

Еще раз спасибо всем помогавшим, включая доброго духа MySQL))
  • avatar paic
  • 0
Да, мой прохлоп, вернее изначально ничего этого не предусматривалось, аппетит пришел позже))
И если добавлять в джойн таблицу site_tmplvars, то и команду SET наверное прописывать через IF или CASE, чтобы дважды не обновить один и тот же ресурс, да и where будут разные для случая есть ТВ в site_tmplvar_contentvalues или его там нет (т.е. значение по умолчанию).
Дорого дня, знатоки ModX.Я так понимаю, что никто не пробовал допилить фильтр под обычные текстовые запросы?!
Используйте evolutionCMS и будет вам счастье!)))
  • avatar webber
  • 0
Какие такие значения по-умолчанию? :) Они вроде и в предыдущих вариантах кода нигде и никак не учитывались :) Для этого надо джойнить третью таблицу site_tmplvars
  • avatar paic
  • 0
Или переключатель чанков может есть?
В принципе наверное может быть один чанк с
<code>
[!eFilter? ...!]
[+eFilter_form+]</code>
И вызывать в шаблоне для ПК типа
<code>[!mDetect? &pc=`sidebar` &mobile=``!]</code>
а панели для мобилы
<code>[!mDetect? &pc=`` &mobile=`sidebar`!]</code>
Получится, что один и тот же чанк переехал на другое место.

Нагуглил эту тему с этим детектором, но оно у меня не запустилось.
  • avatar Dreamer
  • 0
:)
  • avatar gregst
  • 0
спасибо тебе, мил человек!
все заработало
  • avatar paic
  • 0
одно плохо — значения по умолчанию в базу не записываются ((
  • avatar paic
  • 0
а нам то за что? ©
  • avatar 1px
  • 0
Скоро мы тут вызовем дух MySQL, он придёт и раздаст нам всем по ушам.
  • avatar paic
  • 0
да уж((
  • avatar webber
  • 1
нет, вы сначала селектом вытащили все данные из обоих таблиц, а потом просто взяли оттуда всего одно значение — id и по нему заново получили для каждого документа и все данные из таблицы и все данные по тв с учетом значений по-умолчанию и т.п.
$doc->edit($el['id']);

причем в каждом шаге цикла потом еще удалили и по-новой сформировали весь файл кэша :)