Вадим

Вадим

С нами с 30 апреля 2016; Место в рейтинге пользователей: #477
Евгений Ц.
16 июня 2020, 17:18
1
+1
Столкнулся с аналогичной ситуацией. Проблема была в кэшируемом вызове сниппета. Проверьте наличие восклицательного знака [[!mFilter2…
Вадим
12 мая 2020, 15:11
1
-1
нет, для корзины вот так
{$product['size']}
но перед этим посмотрите, что выдаст пустой tpl
<pre>[[!msCart?tpl=``]]</pre>
Sergey (Sentinel)
25 апреля 2020, 18:19
3
0
в tinymcerte.toolbar1 добавляем fontsizeselect forecolor
в tinymcerte.plugins добавляем textcolor
все

toolbar
undo redo | styleselect | bold italic underline 
| fontselect fontsizeselect forecolor backcolor | alignleft aligncenter alignright
 | bullist numlist outdent indent | link image | code
Роман
25 ноября 2019, 15:58
3
0
Итак, в течение недели пытался разобраться в данной проблемой. Перерыл весь интернет и понял, что данная проблема достаточно часто встречается. У людей в основном она возникает просто так через месяц после запуска сайта (как и у меня).
Проблема замечалась еще в 2012 году, но за все время поисков я не смог найти адекватного ее решения. В основном все советуют отключать сжатие css js, чистить кэш и прочее, но это не помогает.
Чего я только не делал за эту неделю, но методом проб, ошибок и кучи потраченных нервов мне удалось прийти к самому простому и эффективному решению данной проблемы, которое не затронет структуру вашего сайта и БД.

В шапке оставил теги, по которым люди чаще всего ищут решение данной проблемы.

Теперь к сути:
Конкретного решения (то есть из за чего возникает данная проблема и как решить ее точечно) я не нашел, хотя очень хотелось бы. Но нашлось решение другое, возможно даже лучшее. Нам не потребуются новые домены и базы данных.

По пунктам:
1. Выходим из админки MODX.
2. Удаляем оба файла .htaccess (в корне сайта и в /core).
3. Вручную чистим кэш (удаляем всё из папки /core/cache).
4. Выгружаем нашу базу данных любым удобным способом (я делал через phpMyAdmin).
5. Удаляем все таблицы из БД(чтобы база данных была пустая).
6. Скачиваем с офсайта MODX файлы для установки.
7. Заливаем их на сервер поверх наших файлов с заменой (перезаписать все совпадения) и не забываем про папку setup.
8. Далее идем по адресу 'ваш-сайт.ру/setup' и устанавливаем MODX (не обновляем, а именно устанавливаем, первый пункт в списке предложенных). Я так же отключал сжатие css js. Тут как обычно, выбираем нашу ранее очищенную БД и устанавливаем. В конце установки уберите галочку «удалить установочные файлы», так как папка setup нам еще понадобится.
9. Далее идем в базу данных, удаляем вновь созданные таблицы и импортируем нашу старую базу, которую мы выгрузили в пункте 4. Чистим кэш (/core/cache).
10. Снова идем по адресу 'ваш-сайт.ру/setup', тут нам могут сказать, что надо удалить папку .locked в папке setup чтобы продолжить, делаем это и перезагружаем страницу установки. Теперь все нормально и нам остается лишь выбрать второй пункт «обновить», убрать чекбокс «сжатие css js» и обновить MODX.
11. Снова чистим кэш и пробуем заползти в админку. У меня после такого обновления (О, ЧУДО) админка ожила и все работает как раньше, ничего не слетело и не уехало, все на месте. Не забываем переименовать файлы ht.access

За время поисков решения я смог предположить несколько вариантов появления данной проблемы, но это лишь предположения:
— Вредоносный php скрипт (проблемы с безопасностью)
— Неверное системное время (возможно заходили в админку с компьютера с неправильно настроенным временем) — Мутные делишки хоста. За время поисков обнаружилось аж 4-ро людей с такой проблемой, которые хостились на MasterHost, как и я. «Совпадение? Не думаю...». Хотя с данным хостингом работаю на MODX давно и таких проблем на прошлом проекте с версией 2.5.2 не возникало. Может быть и правда совпадение, но я все же новый проект перенес на более популярный хост))
Еще на счет хостинга — еще до начала недельной эпопеи, греша на хост, я переправил сайт на новое место, но проблема осталась, так что нельзя быть на 100% уверенным в «мутных делишках» хоста, хотя возможно какие-то сбои повредили js-скрипты. Тут лучше судить знающим людям.

Надеюсь, что моя инструкция поможет с решением данный проблемы тем, у кого она возникла. Спасибо за внимание)
Alexey T
06 ноября 2019, 09:57
1
0
Вариант 1 — через базу данных поменять class_key.
Вариант 2 — установить компонент Console и в нем выполнить код:
<?php

$tickets_section = 23; // Подставить id нужного раздела с тикетами
$tickets_ids = $modx->getChildIds($tickets_section, 5, array('context' => 'web'));

foreach ($tickets_ids as $id) {
    if ($ticket = $modx->getObject('modResource', array('id' => $id, 'class_key' => 'Ticket'))) {
        $ticket->set('class_key', 'modDocument'); // Если у дочерних ресурсов Collections другой class_key, то заменить на нужный
        $ticket->save();
    }
}

if ($tickets_section = $modx->getObject('modResource', array('id' => $id, 'class_key' => 'TicketsSection'))) {
    $tickets_section->set('class_key', 'CollectionContainer'); 
    $tickets_section->save();
}
В любом случае к этому превращению нужно подойти обдумано, так как у этих ресурсов могут быть свои комментарии и другие связи
Вадим
05 ноября 2019, 22:35
1
0
Спасибо! Ваш ответ был полезен для меня. Ответ на этот вопрос в этой статье. Пример синтаксиса:
&element=`mSearch2@html`
Наумов Алексей
15 февраля 2018, 10:36
1
0
// 1. Сначала получаем
$num_tv = $modx->resource->getTVValue('num_tv');
$text_tv = $modx->resource->getTVValue('text_tv');

// 2. меняем
$num_tv += 5;
$text_tv .= 'abc';
        
// 3. Устанавливаем TV
$modx->resource->setTVValue('num_tv', $num_tv);
$modx->resource->setTVValue('text_tv', $text_tv);

// 4. Сохраняем ресурс!!!
$modx->resource->save();

// 5. Выводим значения
echo '<p>-NUM_TV: '.$num_tv.'</p>';
echo '<p>-TEXT_TV: '.$text_tv.'</p>';
p.s. выводить из сниппета лучше через return! никакого echo.
Если в выводе есть html код — то лучше вынести его в чанк.
Антон Грошев
30 ноября 2017, 12:57
1
0
Решил следующим образом:

{'pdoResources' | snippet : [ 'parents' => 10, 'limit' => 0,
'groupby' => 'val', 'sortby'=> 'val', 'sortdir' => 'ASC',
'select' => '{"modResource":"id,pagetitle","tvss":"count(value) as cnt, value as val, (select GROUP_CONCAT(resource_id) as t from modx_tvss_options where value = val) as idv " }',
'innerJoin'=>'[{"class":"tvssOption","alias":"tvss","on":"tvss.resource_id=modResource.id"}]',
'tpl'=> '@INLINE {$val} ({$cnt}) <p>
{set $ar = $idv |split}
{foreach $ar as $row}
[[#{$row}.pagetitle]]
{/foreach}
</p>', 
 'showLog'=> 1,
 'return' => 'null'
]}
Илья Уткин
26 июля 2017, 14:55
1
0
$modx->runSnippet('phpthumbon', array('input' => $img, 'options' => 'w=280&h=280&zc=1'));
Семён Кудрявцев
01 мая 2017, 06:20
3
+4
У miniShop2 есть системная настройка — ms2_cart_max_count (точнее её по-умолчанию нет, но логика её работы предусмотрена) — так вот она делает всё, что Вам нужно. Просто создайте её и укажите значение 1, после этого добавить в корзину можно будет только один товар.