Всего 125 678 комментариев

Роман
04 августа 2021, 10:14
0
Используйте ORDER BY и сортируйте, как вам угодно. По умолчанию сортировка идет по PRIMARY индексу, в вашем случаи по ID.
Иван Бочкарев
04 августа 2021, 10:07
+6
Приятно видеть тебя. Пиши еще :)
Наумов Алексей
04 августа 2021, 10:01
0
А самый правильный — интерфейс ISessionHandler с методом flushSessions, от которого наследуется уже modSessionHandler, и что бы именно он вызывался в процессоре.
Андрей
04 августа 2021, 02:03
0
Я на на modhost проверял, modx 2.8.3, pdoTools 2.12.10-pl, PHP Version 7.4.12
Andrey
03 августа 2021, 22:18
1
0
123 — значение по умолчанию, если параметра нет. Можно и без этого, просто:
$vtype = $modx->getOption('type', $scriptProperties);
Или вообще может такое закостылить:
$type = $type;
:D
Andrey
03 августа 2021, 20:10
0
В журнале ошибок нет?
Префикс pdo не менялся?
&tvPrefix=`tv`
или
[[+myMenuTitle:default=`[[+menutitle:default=`[[+pagetitle]]`]]`]]
?
Влад
03 августа 2021, 19:53
0
Проверил тестовый вариант на другом сайте modx — все работает.
Версии всего на обоих сайтах одинаковые.
Наверное, какие-то extras конфликтуют.
Буду разбираться сейчас.
Спасибо за помощь!
Влад
03 августа 2021, 19:35
0
Проделал то же самое — не работает.
Забыл написать, что версия PHP на хостинге 7.4.21.
Дело в том, что этому сайту много лет и 5 лет назад все работало.
Может быть версия PHP для сниппета не подходит.
Евгений Шеронов
03 августа 2021, 19:35
+1
Если мы храним сессии в файлах, то они там и остаются. Храним сессии в базе — они там и остаются.
А если жёсткий диск полетит?)

все будет потеряно
А в сессии ничего важного и не должно быть. Максимальные потери здесь — содержимое корзины да и выход из аккаунта. А если настроить сохранение на диск, то и потеряется только сессионные данные за последние n секунд)
Shedko Denis
03 августа 2021, 18:37
0
По сайту (кроме чанков) феном выключен (о чем не писал в вопросе).
В выше приведенном примере вызов через сниппет.

Или я чего не понимаю?
Shedko Denis
03 августа 2021, 18:04
0
)) да. Такое очевидно решение.
Спасибо.

Изменил сниппет на

<?php
$js  = file_get_contents($file, FILE_USE_INCLUDE_PATH); 
$js2 = str_ireplace ("[[", "[ [ " , $js); 
return  $js2;
все. код вставляется без изменений.
Осталось только с JS разобраться.
Андрей
03 августа 2021, 17:47
0
Это только у меня так или includeTVs сейчас не работает?
Скопировал прямо твой вызов с чанком myTplHome, остальные оставил дефолтными, всё работает. Проверь остальные чанки, возможно где то ошибка.
Andrey
03 августа 2021, 17:41
0
А так?
<?php
$values = array();
$vtype = $modx->getOption('type', $scriptProperties, 123, true);
$ids = $modx->runSnippet('pdoResources', array(
	 'parents' => $parents,
	 'limit' => 0,
	 'returnIds' => 1,
	 'includeTVs' => 'certificateBuildingType',
	 'tvFilters' => 'certificateBuildingType==' . $vtype

));
$resources = explode(',', $ids);
foreach($resources as $id){
	 $resource = $modx->getObject('modResource', $id);
	 $tv = $resource->getTVValue($tvname);
	 if(is_numeric($tv)) $values[] = $tv;
}
$out = array_sum($values); 
return $out;
Евгений Webinmd
03 августа 2021, 17:27
+1
можно сделать replace фигурных скобок на фигурные скобки с пробелом до и после
Сергей Шлоков
03 августа 2021, 17:08
+2
MODX не умеет очищать сессии, если используется иной, отличный от modSessionHandler класс.
Вот это шляпа. По хорошему нужно править это.
Самый простой выход — через js в админке менять хандлер у этого пункта меню, в котором указать свой процессор (поправленную копию системного процессора).
Константин
03 августа 2021, 16:18
0
Подскажите пожалуйста, как поменять порядок вывода языков

Сниппет:
<?php
$output = "";
$pdo = $modx->getService('pdoTools');

$uri = $_SERVER['REQUEST_URI'];
if(substr($uri, 0, 1)) {
$uri = mb_substr($uri, 1);
$tmp = explode('/', $uri);
if($path = $tmp[0]) {
$tmp = $modx->getObject('localizatorLanguage', array('http_host:LIKE' => "%/{$path}/"));
if($tmp) {
$uri = str_replace("{$path}/", "", $uri);
}
}
}

$protocol = 'https://';
$languages = $modx->getIterator('localizatorLanguage', ['active' => 1]);
foreach($languages as $language) {
if(mb_substr($language->http_host, -1) == '/') {
$placeholders = array(
'cultureKey'=>$language->key,
'active'=>$language->key == $modx->localizator_key? 'active': '',
'url'=>$protocol. $language->http_host. $uri,
);
} else {
$placeholders = array(
'cultureKey'=>$language->key,
'active'=>$language->key == $modx->localizator_key? 'active': '',
'url'=>$protocol. $language->http_host. '/'. $uri,
);
}
$output .= $pdo->getChunk($tpl, $placeholders);
}

return $output;

Вывод:

{$_modx->runSnippet('!getLanguages', ['tpl' => 'section-langs-2'])}

Заранее спасибо!
Наумов Алексей
03 августа 2021, 15:49
0
Просто не выйдет…
MODX не умеет очищать сессии, если используется иной, отличный от modSessionHandler класс.

В процессоре проверяется настройка session_handler_class, и если там указано что-то не стандартное — сразу ошибка.

Как вариант — сделать свой пункт в меню для очистки сессий, а стандартный скрыть… ну и тогда нужно дописать процессор и т.п.
Наумов Алексей
03 августа 2021, 15:10
0
Точно, будем фиксить в следующих версиях)
Семён Кудрявцев
03 августа 2021, 15:08
0
Потестил компонент, не работает функционал «Завершить все сеансы» — может быть имело смысл не создавать свою таблицу, а расширить существующую и тогда бы это работало. В итоге получаем ошибку —
А так затея интересная, автору респект.