Андрей

Андрей

С нами с 28 октября 2016; Место в рейтинге пользователей: #316

проблемы со сниппетом при переходе на ModX 3

есть 2 сниппета

$fields = $hook->getValues(); //поля из формы
$fields['filesToUpload'] = str_replace('assets/pdf/','',$fields['filesToUpload']);
$mail_z = $fields['contact_email'];
$message = $modx->getChunk('sentEmailTpl', $fields);

//формируем PDF
$pdo = $modx->getService('pdoFetch'); 
$pdfTpl = $modx->getOption('pdfTpl', $formit->config, '', true);
$content = $pdo->getChunk($pdfTpl, $fields);

$config = array();
$config = array_merge($config, $fields, array(
    'content' => $content,
    'author' => $author,
    'title' => $title,
));
// формируем ссылку на PDF
$result = $modx->runSnippet('PdfCreate', $config);
и PdfCreate
<?php
$date = date('Y-m-d_H-i-s', time()) . '_' .rand(1, 100);

$corePath = $modx->getOption('pdfresource.core_path', null, $modx->getOption('core_path') . 'components/pdfresource/');
$pdfresource = $modx->getService('pdfresource', 'PDFResource', $corePath . 'model/pdfresource/', array(
    'core_path' => $corePath
));

$content = $modx->getOption('content', $scriptProperties, '', true);
$title = $modx->getOption('title', $scriptProperties, '', true);
$author = $modx->getOption('author', $scriptProperties, '', true);

$aliasPath = MODX_ASSETS_PATH . 'pdf/';
$site_url = $modx->getOption('site_url');

// настройки PDFResource (подробнее почитать здесь: http://jako.github.io/PDFResource/usage/)
$pdfresource->initPDF(array(
    'mode' => 'utf-8',
    'format' => 'A4',
    'defaultFontSize' => intval(13),
    'defaultFont' => '',
    'mgl' => intval(30),    // margin left
    'mgr' => intval(10),    // margin right
    'mgt' => intval(30),     // margin top
    'mgb' => intval(10),     // margin bottom
    'mgh' => intval(10),    // margin header
    'mgf' => intval(10),    // margin footer
    'orientation' => 'P',   // ориентация PDF
    'customFonts' => '[]',
));

$pdfresource->pdf->SetTitle($title);
$pdfresource->pdf->SetAuthor($author);
$pdfresource->pdf->SetCreator($modx->getOption('site_url'));

$pdfresource->pdf->WriteHTML($content, 2);

$file_name = $date;
$pdfresource->pdf->Output($aliasPath . $file_name . '.pdf', 'F');
return $file_name;
они используются как хуки в FormIT и в сумме получают данные, формируют из них pdf файл, который потом отправляется по почте. В ModX 2.* все отлично работает, но при переходе на 3 версию файл генерится, но содержит массив, состоящий из плейсхолдеров, которые должны были использоваться при генерации pdf, видимо проблема либо с передачей чанка с шаблоном будущего pdf либо с его обработкой, то есть вероятно здесь
$pdfTpl = $modx->getOption('pdfTpl', $formit->config, '', true);
$content = $pdo->getChunk($pdfTpl, $fields);
Никто не знает, что изменилось в 3-й версии и как это поправить?
Андрей
20 мая 2022, 14:38
modx.pro
576
0

Как в хуке обратиться к дополнительному полю профиля?

Есть хук, в котором нужно получить дополнительное поле профиля пользователя, ну и дальше с ним провести манипуляции. пытался получить его так
$id_user = $hook->getValue('extended.id_club');
и так
$id_user = $hook->getValue('id_club');
выдает пустоту, хотя если обратиться к штатным полям, например
$id_user = $hook->getValue('fullname');
то все работает.
Что я делаю не так?
Андрей
26 апреля 2022, 22:12
modx.pro
406
0

Настройка членства в группе

Возникла необходимость выводить разный контент для разных групп пользователей.
Поэтому создал группу User, добавил себя туда и обернул нужный код fenom
{if $_modx->isMember('User')}

                      {/if}
и — условие не работает, блок не выводится. права доступа перезагружал.
если User заменить на Administrator то все работает, значит что-то не так с вновь созданной группой User, но не могу понять что, ведь речь идет по идее о проверке членства в группе, а в группу я себя включил

при этом с одной стороны я числюсь в группе, если смотреть из админки Modx

c другой стороны, если вывести список групп через
$modx->user->getUserGroupNames();
то там я числюсь только в группе Administrator
Андрей
25 апреля 2022, 14:29
modx.pro
432
0

PHPMailer перестал работать

С какого-то времени перестал работать PHPMailer, обнаружил только сейчас
MODX 2.8.3 php 7.4
почтовые настройки MODX не трогал с момента установки и раньше почта приходила, сейчас даже письма с восстановлением пароля не приходят.
В логах сервера ошибки нет.
В чем может быть проблема?
Андрей
23 апреля 2022, 20:07
modx.pro
775
0

Как получить TV параметр?

Есть такая выбора, без includeTVs она работает
$params['parents'] = 1470;
$params['limit'] = '0';
$params['depth'] = '0';
$params['showHidden'] = '1';
$params['showUnpublished'] = '1';
$params['includeTVs'] = 'vznos';
$params['where'] = 'pagetitle='.$stag.'';
$params['return'] = 'json';
$vst_json = $modx->runSnippet('pdoResources', $params);
в таком виде выдает ошибку
Error 42S22 executing statement:
Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'tv.vznos' in 'where clause'
)
Если поменять
$params['includeTVs'] = 'vznos';
на
$params['includeTVs'] = 'tv.vznos';
ошибок нет, но и переменной $vst_json нет параметра tv.vznos, хотя у данного ресурса он точно есть. В чем проблема?
Андрей
23 апреля 2022, 14:00
modx.pro
536
0

Условие для выбора всех ресурсов

есть выборка pdoResources, в которой есть такое условие
&where=`{"pagetitle:=":[[!getIdKurs]]}`
в сниппете исходя из переданного параметра из формы ищется его ID и в целом все нормально работает.
Но если в форме не выбрать никого параметра и задать поиск, то выводятся все ресурсы и это тоже то, что нужно, единственный момент что в логах появляется ошибка
Error parsing condition with key 0:
что в общем-то понятно, ведь сниппет выдает пустой результат, потому что в него не передан параметр.

Вопрос: а можно ли задать на этой случай какой-то параметр, который будет возвращать [[!getIdKurs]] на случай если в него ничего не передано и чтобы выводились все ресурсы, но только чтобы не возникала ошибка? Может быть есть какая условная *, которая будет означать что условие сработает для всех ресурсов?
Андрей
01 апреля 2021, 12:10
modx.pro
354
0

что может мешать работе PageBreaker ?

Установлен PageBreaker, френдли урл включены
На одной странице все ок, разбивка работает.
Пытаюсь разбить другие статьи на страницы — разбивка идет, но при переходе на следующую страницу переход не происходит и после уже пропадают ссылки на страницы и не появляются пока кеш не почищу.
То есть проблема скорее всего в том, что на странице, хотя там обычный html код, как и на той, где все работает.
Вопрос, что может мешает работе данного дополнения? Может он какие-то теги не переносит?
Редактор Ace
Андрей
30 октября 2020, 15:44
modx.pro
451
0

Обмен сообщениями между пользователями

На чем лучше реализовать системы обмена текстовыми сообщениями между пользователями?
По описанию подходит SocialTools, но он подозрительно давно не обновляется, может есть лучше и свежее решения?
Андрей
15 июня 2020, 15:54
modx.pro
1
633
0

скрыть/добавить для авторизованных пользователей пункты в pdoMenu

Можно ли как-то это сделать в pdoMenu (например для гостей выводить пункт «Регистрация», а для авторизованный пользователей «Личный кабинет») или нужно просто выводить 2 варианта меню — один для гостей, другой для авторизованных пользователей?
Андрей
26 мая 2020, 09:21
modx.pro
471
0

fastField и незаполнное TV поле

вывожу TV поле с помощью такого кода
[[#[[*cap]].uri]]
все работает пока это поле заполнено, если незаполнено выводится в логах ошибка
[2020-05-12 17:32:16] (ERROR @ /var/www/.ru/core/model/modx/modparser.class.php : 541) Could not find snippet with name #.uri.
смысл понятен, я вызываю неизвестно что. вопрос как убрать ошибку?
пробовал такой код
{if $_modx->resource.cap}<a href="[[#[[*cap]].uri]]">аа</a>{else}нет инфы{/if}
«нет инфы» выводится, но ошибки в логах все равно остаются. можно конечно не обращать внимание, но хотелось бы чтобы не засорялся лог ошибок.
Андрей
12 мая 2020, 17:35
modx.pro
762
0