Дмитрий

Дмитрий

С нами с 05 ноября 2018; Место в рейтинге пользователей: #363

Как по значению tv определить id ресурса?

Есть ресурсы с конкретными консультациями по определенным вопросам — эти консультации очные.
Однако есть онлайн консультации по этим же или похожим вопросам.

Например, у очной консультации 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-поля, чтобы дальше с ним работать — выводить его дочерние ресурсы.
Дмитрий
13 сентября 2019, 23:24
modx.pro
1
667
0

На 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 выдает ошибку:
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 все нормально, ошибок нет.

Дмитрий
06 августа 2019, 00:44
modx.pro
1 403
0

Tickets - при смене родительского ресурса в админке ошибка и меняется замороженный URL

MODX Revolution 2.7.0-pl

При смене в админке родительского ресурса у неопубликованного тикета в лог летит ошибка:
...../core/xpdo/om/xpdoquery.class.php: 764) Encountered empty IN condition with key id
Кроме того меняется замороженный URL.

У опубликованного ошибки вроде нет, но замороженный URL также меняется.

Подскажите, как поправить? Или это баг и требует исправления Василием?
Дмитрий
17 апреля 2019, 04:52
modx.pro
2 080
0

В приходящих письмах - To: undisclosed-recipients:; Как исправить?

Отправляю так в документации:
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
Дмитрий
13 апреля 2019, 15:57
modx.pro
4 813
0

Как получить значения TV-полей и других полей сохраняемого ресурса - в плагине с событиями OnBeforeDocFormSave или OnDocFormSave

Зделал создание тикета без регистрации, альтернативным способом, указанном в заметке: modx.pro/solutions/5288

Что-то типа вопрос-ответ, но каждый вопрос-ответ отдельный ресурс.

Однако уведомление администратору не приходит.

Сделал 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

Может есть иной способ сделать уведомления при создании тикета администратору и пользователю, создвшему тикет (задавшему вопрос), лучше даже при сохранении в черновики, а после ответа на вопрос и публикации этого тикета, отсылать уведомление задавшему вопрос о публикации ответа (то есть этого тикета)?
Дмитрий
08 апреля 2019, 22:53
modx.pro
1 460
0

Возможно ли заставить работать плейсхолдеры в зарегистрированном коде?

При регистрации кода при помощи:
cssToHead — регистрация CSS кода в шапке страницы
htmlToHead — регистрация произвольного HTML в шапке страницы
htmlToBottom — регистрация произвольного HTML в подвале страницы
jsToHead — регистрация javascript файла в шапке страницы. Если передать параметром true, то можно регистрировать сразу код.
jsToBottom — регистрация javascript в подвале страницы. Если передать параметром true, то можно регистрировать сразу код.
Или
$_modx->regClientCSS
$_modx->regClientScript
$_modx->regClientStartupHTMLBlock
$_modx->regClientHTMLBlock
плейсхолдеры ни в MODX-вварианте — [[+placeholder]] или [[*placeholder]], ни на Fenom — {$placeholder} НЕ РАБОТАЮТ. В исходном коде и на странице отображаются в неизменном виде.

Можно ли заставить работать плейсхолдеры в зарегистрированном коде?
Дмитрий
06 апреля 2019, 15:11
modx.pro
1
1 433
0

Как на Fenom написать &where с условием?

Нужно одновременно вывести ресурсы контейнеры и ресурсы, у которых нет родителей.

Подскажите, как на Fenom записать это в
'where' => ???????

Заранее, благодарю.
Дмитрий
19 февраля 2019, 01:24
modx.pro
1 283
0

Как удалить запятую после последнего элемента в foreach?

Есть такой код:
{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?
Дмитрий
25 января 2019, 22:19
modx.pro
1 641
0

Подскажите, как в плагин "Человекопонятная навигация" передать количество страниц пагинации (pageCount)?

Сделал пагинацию по инструкции "Человекопонятная навигация".

Для реализации некоторых проверок, необходимо передать в плагин переменную (плейсхолдер) pageCount с количеством страниц пагинации выводимых в ресурсе. Или другим способом получить количество страниц пагинации.

Но в плагине не получается это сделать.

Например, пробовал так:
$res = $modx->getPlaceholder('pageCount');
и другими способами, но ничего не получается.

Например в шаблоне можно вывести так:
[[+pageCount]]

или, если сниппет на Fenom, то в шаблоне выводится так:
{$_modx->getPlaceholder('pageCount')}

Но вот в плагине ничего не получается.

Подскажите, кто знает как передать/получить/определить количество страниц пагинации, выводимых в ресурсе.

Заранее, благодарю!
Дмитрий
19 января 2019, 02:29
modx.pro
699
0

MODX Rev 2.7.0-pl Ошибка при просмотре "Показать детали" в "Управление пакетами"

MODX Revolution 2.7.0-pl

Обнаружил ошибку при переходе «Показать детали» какого либо пакета в «Управление пакетами» в журнал летит ошибка:

[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

По моему, такую же или подобную ошибку встречал еще при каких-то действиях в админке.

Подскажите кто знает, как исправить?
Дмитрий
25 декабря 2018, 04:06
modx.pro
927
0