Дмитрий
С нами с 05 ноября 2018; Место в рейтинге пользователей: #368Как по значению tv определить id ресурса?
Есть ресурсы с конкретными консультациями по определенным вопросам — эти консультации очные.
Однако есть онлайн консультации по этим же или похожим вопросам.
Например, у очной консультации id ресурса-контейнера 10.
У ресурса онлайн консультации id ресурса-контейнера 20.
Таких пар ресурсов может быть несколько тысяч.
Нужно выводить анонсы дочерних ресурсов ресурса с id 20 на странице ресурса с id 10.
Прописывать это вручную посредством:
Не нашел ничего другого, как сделать tv-поле и у таких пар ресурсов прописать одинаковое уникальное значение tv-поля.
Далее, если пользователь находится на странице ресурса 10 вытаскивать значение tv-поля:
А далее… затык...!!! не пойму как определить id ресурса с таким же значением tv-поля, чтобы дальше с ним работать — выводить его дочерние ресурсы.
Однако есть онлайн консультации по этим же или похожим вопросам.
Например, у очной консультации id ресурса-контейнера 10.
У ресурса онлайн консультации id ресурса-контейнера 20.
Таких пар ресурсов может быть несколько тысяч.
Нужно выводить анонсы дочерних ресурсов ресурса с id 20 на странице ресурса с id 10.
Прописывать это вручную посредством:
{if $_modx->resource.id == 10}
//выводить дочерние ресурсы ресурса с id 20? например, посредством pdoMenu
{/if}
сами понимаете, не вариант, при наличии нескольких тысяч таких пар ресурсов.Не нашел ничего другого, как сделать tv-поле и у таких пар ресурсов прописать одинаковое уникальное значение tv-поля.
Далее, если пользователь находится на странице ресурса 10 вытаскивать значение tv-поля:
{$_modx->resource.tvName}
А далее… затык...!!! не пойму как определить id ресурса с таким же значением tv-поля, чтобы дальше с ним работать — выводить его дочерние ресурсы.
На php 7.3 ошибка Fatal error: Uncaught Error: Call to a member function get() on null in .../model/modx/modtemplatevar.class.php on line 303
MODX Revolution 2.7.1-pl
Включил php 7.3 — белый экран. Включил вывод ошибок на экран в index.php
При включении php 7.3 выдает ошибку:
Включил php 7.3 — белый экран. Включил вывод ошибок на экран в index.php
При включении php 7.3 выдает ошибку:
Fatal error: Uncaught Error: Call to a member function get() on null in .../соре/model/modx/modtemplatevar.class.php:303 Stack trace: #0 .../соре/model/modx/modtemplatevar.class.php(284): modTemplateVar->prepareOutput('assets/imag...', 1) #1 .../соре/model/modx/modresource.class.php(904): modTemplateVar->renderOutput(1) #2 .../соре/components/pdotools/model/pdotools/_micromodx.php(41): modResource->getTVValue('img_full') #3 .../соре/components/pdotools/model/pdotools/_fenom.php(106): microMODX->__construct(Object(pdoTools)) #4 .../соре/components/pdotools/model/pdotools/_fenom.php(56): FenomX->_addDefaultModifiers() #5 .../соре/components/pdotools/model/pdotools/pdotools.class.php(139): FenomX->__construct(Object(pdoTools)) #6 /h in .../соре/model/modx/modtemplatevar.class.php on line 303На php 7.2 все нормально, ошибок нет.
Tickets - при смене родительского ресурса в админке ошибка и меняется замороженный URL
MODX Revolution 2.7.0-pl
При смене в админке родительского ресурса у неопубликованного тикета в лог летит ошибка:
У опубликованного ошибки вроде нет, но замороженный URL также меняется.
Подскажите, как поправить? Или это баг и требует исправления Василием?
При смене в админке родительского ресурса у неопубликованного тикета в лог летит ошибка:
...../core/xpdo/om/xpdoquery.class.php: 764) Encountered empty IN condition with key idКроме того меняется замороженный URL.
У опубликованного ошибки вроде нет, но замороженный URL также меняется.
Подскажите, как поправить? Или это баг и требует исправления Василием?
В приходящих письмах - To: undisclosed-recipients:; Как исправить?
Отправляю так в документации:
docs.modx.com/revolution/2.x/developing-in-modx/advanced-development/modx-services/modmail
Письма приходят на Email, указанный в «to»
В технических данных письма:
docs.modx.com/revolution/2.x/developing-in-modx/advanced-development/modx-services/modmail
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY, 'Тело письма');
$modx->mail->set(modMail::MAIL_FROM,'me@example.org');
$modx->mail->set(modMail::MAIL_FROM_NAME,'От меня');
$modx->mail->set(modMail::MAIL_SUBJECT,'Заголовок письма');
$modx->mail->address('to','user@example.com');
$modx->mail->address('reply-to','me@xexample.org');
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
$modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();
Письма приходят на Email, указанный в «to»
$modx->mail->address('to','user@example.com');
Однако в письме в заголовке «Кому» — ПУСТО.В технических данных письма:
To: undisclosed-recipients:;Используется smtp.yandex.ru
Как получить значения TV-полей и других полей сохраняемого ресурса - в плагине с событиями OnBeforeDocFormSave или OnDocFormSave
Зделал создание тикета без регистрации, альтернативным способом, указанном в заметке: modx.pro/solutions/5288
Что-то типа вопрос-ответ, но каждый вопрос-ответ отдельный ресурс.
Однако уведомление администратору не приходит.
Сделал TV-поля с Именем и Еmail
Сделал 2 плагина, один для администратора, в котором прописал email администратора — уведомления идут.
Второй плагин для незарегистрированного пользователя, однако TV-параметры получить не могу.
Пробовал так:
Вот плагин, который сохраняет тикет неопубликованным и должен отсылать сообщение на email пользователю:
Думаю и с получением и других полей сохраняемого ресурса также имеет место проблема.
Хотелось бы еще сделать, чтобы при публикации тикета из админки приходило уведомление создателю тикета на email из TV-поля $email_author_vo
Может есть иной способ сделать уведомления при создании тикета администратору и пользователю, создвшему тикет (задавшему вопрос), лучше даже при сохранении в черновики, а после ответа на вопрос и публикации этого тикета, отсылать уведомление задавшему вопрос о публикации ответа (то есть этого тикета)?
Что-то типа вопрос-ответ, но каждый вопрос-ответ отдельный ресурс.
Однако уведомление администратору не приходит.
Сделал TV-поля с Именем и Еmail
Сделал 2 плагина, один для администратора, в котором прописал email администратора — уведомления идут.
Второй плагин для незарегистрированного пользователя, однако TV-параметры получить не могу.
Пробовал так:
$modx->resource($email_author_vo);
Ничего не выходит...Вот плагин, который сохраняет тикет неопубликованным и должен отсылать сообщение на email пользователю:
<?php
switch ($modx->event->name) {
case 'OnBeforeDocFormSave':
if ($mode == 'new' && $resource->class_key == "Ticket") {
$resource->set('published', 0);
/*Активируем почтовый сервис MODX*/
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
/*Адрес получателя нашего письма... <strong>КАК СЮДА ПОЛУЧИТЬ TV-ПОЛЕ С EMAIL?</strong>...
Если прописать реальный email, то на него письма идут*/
$modx->mail->address('to', $resource->getTVValue('email_author_vo'));
/*Заголовок сообщения*/
$modx->mail->set(modMail::MAIL_SUBJECT, 'Вы задали новый вопрос');
/*Подставляем чанк с телом письма (предварительно его нужно создать)*/
$modx->mail->set(modMail::MAIL_BODY, 'Вы задали вопрос на сайте');
/*Отправляем*/
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
$modx->log(modX::LOG_LEVEL_ERROR,'Произошла ошибка при попытке отправить письмо: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();
}
$resource->save();
break;
}
Как получить значения TV-полей в такой плагин — с событиями "OnBeforeDocFormSave" или "OnDocFormSave"?Думаю и с получением и других полей сохраняемого ресурса также имеет место проблема.
Хотелось бы еще сделать, чтобы при публикации тикета из админки приходило уведомление создателю тикета на email из TV-поля $email_author_vo
Может есть иной способ сделать уведомления при создании тикета администратору и пользователю, создвшему тикет (задавшему вопрос), лучше даже при сохранении в черновики, а после ответа на вопрос и публикации этого тикета, отсылать уведомление задавшему вопрос о публикации ответа (то есть этого тикета)?
Возможно ли заставить работать плейсхолдеры в зарегистрированном коде?
При регистрации кода при помощи:
Можно ли заставить работать плейсхолдеры в зарегистрированном коде?
cssToHead — регистрация CSS кода в шапке страницыИли
htmlToHead — регистрация произвольного HTML в шапке страницы
htmlToBottom — регистрация произвольного HTML в подвале страницы
jsToHead — регистрация javascript файла в шапке страницы. Если передать параметром true, то можно регистрировать сразу код.
jsToBottom — регистрация javascript в подвале страницы. Если передать параметром true, то можно регистрировать сразу код.
$_modx->regClientCSSплейсхолдеры ни в MODX-вварианте — [[+placeholder]] или [[*placeholder]], ни на Fenom — {$placeholder} НЕ РАБОТАЮТ. В исходном коде и на странице отображаются в неизменном виде.
$_modx->regClientScript
$_modx->regClientStartupHTMLBlock
$_modx->regClientHTMLBlock
Можно ли заставить работать плейсхолдеры в зарегистрированном коде?
Как на Fenom написать &where с условием?
Нужно одновременно вывести ресурсы контейнеры и ресурсы, у которых нет родителей.
Подскажите, как на Fenom записать это в
Заранее, благодарю.
Подскажите, как на Fenom записать это в
'where' => ???????
Заранее, благодарю.
Как удалить запятую после последнего элемента в foreach?
Есть такой код:
Выводит:
Подскажите, как удалить (разделитель) запятую у последнего элемента БЕЗ использования css?
{foreach $_modx->resource.TvTags | fromJSON | split as $tag}
<a href="{25|url:['scheme'=>'full']}{$tag}/">{$tag}</a>,
{/foreach}
Выводит:
<a href="url-страницы/">Какой-то текст1</a>, <a href="url-страницы/">Какой-то текст2</a>, <a href="url-страницы/">Какой-то текст3</a>, <a href="url-страницы/">Какой-то текст4</a>, <a href="url-страницы/">Какой-то текст5</a>,
Подскажите, как удалить (разделитель) запятую у последнего элемента БЕЗ использования css?
Подскажите, как в плагин "Человекопонятная навигация" передать количество страниц пагинации (pageCount)?
Сделал пагинацию по инструкции "Человекопонятная навигация".
Для реализации некоторых проверок, необходимо передать в плагин переменную (плейсхолдер) pageCount с количеством страниц пагинации выводимых в ресурсе. Или другим способом получить количество страниц пагинации.
Но в плагине не получается это сделать.
Например, пробовал так:
Например в шаблоне можно вывести так:
или, если сниппет на Fenom, то в шаблоне выводится так:
Но вот в плагине ничего не получается.
Подскажите, кто знает как передать/получить/определить количество страниц пагинации, выводимых в ресурсе.
Заранее, благодарю!
Для реализации некоторых проверок, необходимо передать в плагин переменную (плейсхолдер) pageCount с количеством страниц пагинации выводимых в ресурсе. Или другим способом получить количество страниц пагинации.
Но в плагине не получается это сделать.
Например, пробовал так:
$res = $modx->getPlaceholder('pageCount');
и другими способами, но ничего не получается.Например в шаблоне можно вывести так:
[[+pageCount]]
или, если сниппет на Fenom, то в шаблоне выводится так:
{$_modx->getPlaceholder('pageCount')}
Но вот в плагине ничего не получается.
Подскажите, кто знает как передать/получить/определить количество страниц пагинации, выводимых в ресурсе.
Заранее, благодарю!
MODX Rev 2.7.0-pl Ошибка при просмотре "Показать детали" в "Управление пакетами"
MODX Revolution 2.7.0-pl
Обнаружил ошибку при переходе «Показать детали» какого либо пакета в «Управление пакетами» в журнал летит ошибка:
Происходит во всех пакетах, на примере Ace по ссылке:
По моему, такую же или подобную ошибку встречал еще при каких-то действиях в админке.
Подскажите кто знает, как исправить?
Обнаружил ошибку при переходе «Показать детали» какого либо пакета в «Управление пакетами» в журнал летит ошибка:
[2018-12-25 04:01:35] (ERROR @ /.................../public_html/core/xpdo/om/xpdoobject.class.php : 240)
Error 42S22 executing statement:
Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'transport.modTransportProvider' in 'where clause'
)
Происходит во всех пакетах, на примере Ace по ссылке:
....../?a=workspaces/package/view&signature=ace-1.6.5-pl&package_name=Ace
По моему, такую же или подобную ошибку встречал еще при каких-то действиях в админке.
Подскажите кто знает, как исправить?