Всего 123 803 комментария

Никита Боднар
18 октября 2022, 11:19
0
Так сработало, но save() всё-таки нужен в этом случае.
Артур Шевченко
18 октября 2022, 11:01
0
Вот так точно сработает
$page->setTVValue('test', 1);
Наумов Алексей
18 октября 2022, 10:24
1
+1
template — это поле ресурса, нужно это указать.

Я сейчас не вспомню точно как, но что-то типа resource.template или modResource.template.
насчет join — поищите примеры здесь на форуме…
ну типа modx.pro/help/13888
Zulya
18 октября 2022, 10:04
0
Добрый день, Алексей!
Спасибо вам за подробный ответ!
Попробовала 2 вариант с параметром where. Ресурсы с комментариями которые необходимо вывести имеют шаблон 69. Поэтому я указала 69 в where.
<div id="pdopage">
                <div class="rows">
                    [[!pdoPage?
                        &element=`ecMessages`
                        &limit=`10`
                        &includeTVs=`logo,lic`
                        &processTVs=`1`
                        &tpl=`tpl.ecMessages.Row.Review`
                        &threads=`*`
                        &where=`{ "template:IN" : [ 69 ] }`
                        &ajaxMode=`button`
                    ]]
                </div>
                [[!+page.nav]]
            </div>
Но что-то ничего не показывает. Если убираю параметр where, то выводятся все комментарии со всего сайта. А необходимо выводить комментарии ресурсов у которых шаблон равен 69. Может я неправильно указала параметр where?

Еще вопрос. Как использовать JOIN для выборки TV? Можно пример без fenom? Спасибо большое!
Наумов Алексей
18 октября 2022, 09:09
1
+1
привет!
Да, здесь pdoPage должен работать.
{'!pdoPage' | snippet : [
    'element' => 'ecMessages',
...
все прочие параметры ecMessages
....
]}
Про работу кнопки «Загрузить еще» стоит читать его документацию…

Насчет этого «Необходимо собрать все комментарии которые находятся под ресурсом с id 5.»
Два варианта решения:
1. дочерних ресурсов мало — просто формируйте сторонним сниппетом строку для параметра threads для ecMessages в виде 'resource-6,resource-7,resource-8,resource-9,resource-10'…
2. Дочерних много — укажите threads='*', а ограничение выборки делайте через параметр where.
3. Дочерних много и они вложены на много уровней вниз — тут посложнее, все зависит от конкретной ситуации.
Я бы наверное изначально формировал thread в виде category-5-resource-10, чтобы потом через LIKE выбирать: 'category-5-%'.

>> также вывести pagetitle
Читайте про параметр resourceFields у сниппета ecMessages в документации.
А вот TV вы так не выберете. Тут только JOIN если делать.
vectorserver
18 октября 2022, 08:08
+1
Попробуй сохранять булев как строку!
$page = $modx->getObject('modResource', 1);
$page->setTVValue('test', 'true');
vectorserver
18 октября 2022, 08:05
+2
setTVValue — В отличие от некоторых других методов API xPDO, метод немедленно сохраняет значения в базе данных, поэтому не нужно вызывать отдельный вызов метода save().
Артур Шевченко
17 октября 2022, 23:35
0
Всё правильно пробовал, только если ниже не было
$page>save();
то не удивительно, что значение не установилось.
Виталий
17 октября 2022, 16:13
0
Алексей спасибо!
&fiarFrom=`__from_@you-domain` // вылечил проблему
Алексей Смирнов
17 октября 2022, 14:55
+1
попробуйте явно прописать параметры
&fiarFrom=`__from_@you-domain` // тут почта вашего домена. возможно этой строчки не хватает.
&fiarSender=`_from_@mailru`  // явное указание получателя
&fiarReplyTo=`___@mailru`
Виталий
17 октября 2022, 12:28
0
До сих пор в тупике перепробовал кучу всего, помогите найти ошибку, почему FormItAutoResponder не срабатывает.
Все настроил в системных настройка как надо, формирую отчет «Информация о системе» почему-то стоит
SMTP: localhost
smtp_port: 25
Хотя прописано в системных настройках
SMTP: mail.nic.ru
smtp_port: 465
Может в этом проблема?
Виталий
17 октября 2022, 10:04
0
Павел, огромное спасибо.
Максим
17 октября 2022, 09:16
0
Да. Автор компонента что-то подправил и все стало работать как надо.
Артур Шевченко
16 октября 2022, 22:34
0
Никак не надо менять валидатор, впрочем как и писать одинаковые валидаторы на каждое поле. Валидатор получает те поля, для которых он назначен в параметрах вызова сниппета. Если нужно кроме cost, проверить ещё и title, надо написать в вызове сниппета так
&validate=`cost:isBigEnough,title:isBigEnough`
&customValidators=`isBigEnough`
Артур Шевченко
16 октября 2022, 22:31
0
Если нужно убедиться в том, что $cost больше 1000, то данная запись верна.
&validate=`cost:isBigEnough`
&customValidators=`isBigEnough`
vectorserver
16 октября 2022, 18:40
0
Все твои хотелки есть во FRED, и там есть функция экспорта твоих собранных тем.

vit
vit
16 октября 2022, 16:27
0
А если надо сделать проверку двух полей как изменить?
$value = (float)$value;
$success = $value > 1000;
if (!$success) {
    // Note how we can add an error to the field here.
    $validator->addError($key,'Not big enough!');
}
return $success;
Или на каждое поле снипет писать?
Константин
16 октября 2022, 14:16
0
Спасибо, получилось!
vit
vit
16 октября 2022, 13:37
0
не особо получается подскажите как тут взять проверку TITLE и правильно ли я указываю
&validate=`cost:isBigEnough`
&customValidators=`isBigEnough`
?
[[!FormIt?  
  &redirectTo=`27`
  &placeholderPrefix=``
&validate=`cost:isBigEnough`
&customValidators=`isBigEnough`
]]

  <form class="bs-example form-horizontal" action="[[~[[*id]]]]" method="post">
          <input type="text" value="[[!+title]]" class="form-control"
          id="title"  name="title">
          <input type="text" value="[[!+telegram]]" class="form-control"
          id="telegram"  name="telegram">
          <button type="submit" class="btn btn-primary">Сохранить</button>
  </form>