Вопросы

pdoFetch и LEFT JOIN modResource

Есть собственный классSmsNotify. есть стандартный класс modResource. В собственном компоненте есть поле res_id — в которой хранится id связанного ресурса. Как при помощи pdoTools вынуть все поля собственного класса и присоединить часть полей из класса modResource?
Vladimir Alekhin
28 сентября 2018, 09:19
modx.pro
1 498
0

Как работать с платными компонентами на сервере разработки?

Допустим есть платный компонент на ModStore. Прежде, чем принимать решение о его использовании на продакшене хосется потестить этот компонент. Как можно это осуществить?
Markus
27 сентября 2018, 02:08
modx.pro
1
1 541
-4

Почему плагин SEO PRO берет не pagetitle?

Заметил такой нюанс в работе Компонента SEO PRO. Для отображения заголовка в снипете поисковика он берет поде longtitle, а не pagetitle. Почему так? Можно это откорректировать?
Markus
27 сентября 2018, 00:34
modx.pro
1 005
0

Восстановление ресурса из кэша

Внимание! Это не вопрос, а готовое решение. В готовые решения не могу разместить, т.к. не хватает рейтинга.
Всем привет. Как-то столкнулся с такой проблемой, что вся кодировка бэкапа базы данных была сбита и оставался только чистый кэш. Оставляю на случай, если кому поможет решить проблему.
Таким же успехом можно прогнать и системные настройки. Здесь я показал в пример только восстановление полей ресурса, TV к нему и чанков.

<?php
$resources = $modx->getIterator('modResource');

// Указываем путь к кэшу
$options = array(
  xPDO::OPT_CACHE_KEY => 'resource/web/resources',
);

foreach ($resources as $resource) {
    // Берём каждый ресурс по идентификатору
    $cache = $modx->cacheManager->get($resource->get('id'), $options);
    
    // Массив параметров ресурса
    $data = $cache['resource'];
    
    // Заносим все поля ресурса из кэша
    $resource->fromArray($data);
    
    foreach($data as $property) {
        // Дополнительное поле выглядит как массив
        if (is_array($property)) {
            // Если это массив, то берём название поля и его значения в 1-й и 2-й ячейках
            $resource->setTVvalue($property[0], $property[1]);
        }
    }
    
    $resource->save();
    
    // Бывает слетает кодировка и в чанках, восстанавливаем чанки, которые относятся к ресурсу
    $chunks = $cache['sourceCache']['modChunk'];
    
    foreach ($chunks as $key => $chunk) {
        $modChunk = $modx->getObject('modChunk', array('name' => $key));
        
        // getIterator тут не работает
        $modChunk->setContent($chunk['fields']['snippet']);
        
        $modChunk->save();
    }
}
Кирилл Киселев
26 сентября 2018, 22:59
modx.pro
1 200
+1

Синтаксис Fenom и экранирование ковычек

Всем привет! Уже 2 дня не могу понять, почему феном выдает двойную кавычку, вместо одинарной и закрывает мне весь вызов.

Вот кусок кода:
<div class="popup_scrollbar">

	{var $frame_tpl} {ignore}
	<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet('!msop2GetOptionsWithPrices', ['id ' => $id,'key ' => 'size ','price '=> ($id | resource : 'price ')]) | toJSON} ">
			<div class="_img"><img src="{$_pls['280x280 ']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
			<div class="_title">{$pagetitle}</div>
			<div class="_title" style="font-size: 70%;font-style: italic;">Ширина: {$longtitle} см.</div>
			<div class="_details">
				<div class="_price"><span class="_price_num">{($id | resource : 'price ')}</span> {'ms2_frontend_currency ' | lexicon}</div>
				<div class="_select text-right">+</div>
				<div class="clear"></div>
			</div>
		</div>
		{/ignore}
		{/var}

		{var $frames = $_modx->runSnippet('msProducts ', [
			'parents ' => 38,
			'sortby ' => 'price ',
			'sortdir ' => 'ASC ',
			'includeThumbs ' => '280x280 ',
			'tpl ' => '@INLINE '~$frame_tpl,
			'tpl_n3 ' => '@INLINE '~$frame_tpl~'<div class="clear"></div>', ])} {$frames}

</div>
В итоге на фронте, как HTML он выводится вот так:
<div class="popup_scrollbar">

                                  
<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet(" !msop2getoptionswithprices="" ',="" [="" 'id="" '=""> $id,
		'key ' =&gt; 'size ',
		'price ' =&gt; ($id | resource : 'price '),
	]) | toJSON}'&gt;
	<div class="_img"><img src="{$_pls['280x280']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
	<div class="_title">{$pagetitle}</div>
	<div class="_details">
		<div class="_price"><span class="_price_num">{($id | resource : 'price')}</span> {'ms2_frontend_currency' | lexicon}</div>
		<div class="_select text-right">+</div>
		<div class="clear"></div>
	</div>
</div>


<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet(" !msop2getoptionswithprices="" ',="" [="" 'id="" '=""> $id,
		'key ' =&gt; 'size ',
		'price ' =&gt; ($id | resource : 'price '),
	]) | toJSON}'&gt;
	<div class="_img"><img src="{$_pls['280x280']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
	<div class="_title">{$pagetitle}</div>
	<div class="_details">
		<div class="_price"><span class="_price_num">{($id | resource : 'price')}</span> {'ms2_frontend_currency' | lexicon}</div>
		<div class="_select text-right">+</div>
		<div class="clear"></div>
	</div>
</div>


<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet(" !msop2getoptionswithprices="" ',="" [="" 'id="" '=""> $id,
		'key ' =&gt; 'size ',
		'price ' =&gt; ($id | resource : 'price '),
	]) | toJSON}'&gt;
	<div class="_img"><img src="{$_pls['280x280']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
	<div class="_title">{$pagetitle}</div>
	<div class="_details">
		<div class="_price"><span class="_price_num">{($id | resource : 'price')}</span> {'ms2_frontend_currency' | lexicon}</div>
		<div class="_select text-right">+</div>
		<div class="clear"></div>
	</div>
</div>
 
<div class="clear"></div>

<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet(" !msop2getoptionswithprices="" ',="" [="" 'id="" '=""> $id,
		'key ' =&gt; 'size ',
		'price ' =&gt; ($id | resource : 'price '),
	]) | toJSON}'&gt;
	<div class="_img"><img src="{$_pls['280x280']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
	<div class="_title">{$pagetitle}</div>
	<div class="_details">
		<div class="_price"><span class="_price_num">{($id | resource : 'price')}</span> {'ms2_frontend_currency' | lexicon}</div>
		<div class="_select text-right">+</div>
		<div class="clear"></div>
	</div>
</div>

</div>
То есть, тег закрывается намного раньше, но в ресурсе у меня нет там двойной кавычки, она одинарная)

Помогите пожалуйста разобраться, могу скинуть весь код.
Василий Перчиков
26 сентября 2018, 22:11
modx.pro
1
2 286
0

Как настроить вывод аватарки в панели управления ModX Revo?

В панели управления есть иконка пользователя. Так вот, когда туда загружаешь картинку, то иконка не выводится. Вернее так, она отображается с ошибкой. В журнале ошибок создается запись:

[2018-09-26 17:45:21] (ERROR @ E:\OSPanel\domains\lp\core\model\phpthumb\modphpthumb.class.php: 144) phpThumb was unable to generate a thumbnail for: E:\OSPanel\domains\lp\core\cache\phpthumb\lp.local__src8316ee7be845a13238eba20a97b23757_par397327b300e2532553c171cb19a456f3_dat0.jpeg
Собственно файла E:\OSPanel\domains\lp\core\cache\phpthumb\lp.local__src8316ee7be845a13238eba20a97b23757_par397327b300e2532553c171cb19a456f3_dat0.jpeg по факту нет, но там ест другие файлы, которые нарезаются с оригинала при нажатии кнопки Сохранить в профиле (если указана картинка аватарки).

В чем может быть ошибка?

Markus
26 сентября 2018, 17:56
modx.pro
1 656
0

Вывод сниппета из чанка другого сниппета через Ajax

Всем привет!

Подскажите, пожалуйста, мб кто-то сталкивался или просто знает решение: есть такой сниппет, который при клике на определенный элемент выводит pdoResources с заданными параметрами
<?php
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}

$action = filter_input(INPUT_POST,'action');

if (empty($action)) {return;}

$res = '';
switch ($action) {
  case 'pdoResources': 
    $params = array();
    $params['parents'] = filter_input(INPUT_POST, 'parents', FILTER_SANITIZE_NUMBER_INT);
    $params['resources'] = filter_input(INPUT_POST, 'resources', FILTER_SANITIZE_NUMBER_INT);
    $params['tpl'] = filter_input(INPUT_POST,'tpl');
    $params['includeTVs'] = filter_input(INPUT_POST,'includeTVs');
    $res = $modx->runSnippet('pdoResources', $params);
    break;
}

if (!empty($res)) {
  die($res);
}
JS выглядит так
<script>
$('.trigger').on('click', function() {
     var data = {
        action: 'pdoResources',
        parents: '25',
        resources: objectId,
        tpl: 'tpl.mapObjectsItem',
        includeTVs: 'objectStatus'
    };

    $.post('/ajax/', data, function(data) {
        $('.current-object').empty().prepend(data);
    })
});
</script>
В чанке tpl.mapObjectsItem подгружается ms2Gallery
...
[[!ms2Gallery?
    &resources = `[[+id]]`
    &tpl = `tpl.ms2GalleryCatalog`
    &frontend_css = ``
    &frontend_js = ``
]]
...
Все было бы замечательно, если бы не одно НО — когда на страницу при клике загружается нужный ресурс, вместо того, чтобы выполнить сниппет ms2Gallery, он выводится в виде текста, т.е. так
[[!ms2Gallery? &resources = `61` &tpl = `tpl.ms2GalleryCatalog` &frontend_css = `` &frontend_js = `` ]]
Евгений
26 сентября 2018, 16:56
modx.pro
1
1 479
0

Не приходят уведомления о заказах

Перестали поступать уведомления о заказах на сайте и при смене статуса заказа. Самое интересное, что «клиенту» (пробовал тестовый заказ делать) уведомления приходят.
Может ли это быть как то связано с почтой, от которой приходят все уведомления?

Кто то поднимал эту тему давно, но решения так и не нашел.

Дополнил, от 26.09.2018 в 9:30
Скрин настроек:


Пробовал прификс убирать, тоже самое, к хостеру обращался, его ответ:
Попробуйте убрать smpt_prefix ssl. Если не получится, то вопрос нужно адресовать либо разработчику сайта, либо в поддержку modx так как это проблема лишь почтового скрипта
Если указать в качестве почты менеджера и клиента обычную почту — допустим, mail, то туда все сообщения приходят, а на ту же корпоративную почту ****@domen.com, ничего не приходит.

у кого есть какие еще мысли?
Андрей Перевезенцев
26 сентября 2018, 15:00
modx.pro
924
0

Убрать расширения по регулярному выражению!

Приветствую сообщество!

В общем дело такое…
Необходимо в теле контента (а в контенте у нас много всего и картинки и теги и текст разумеется), убрать расширение…
НО! Не у самих картинок, а у атрибута title, т.е.:
Было так:
<a href="/assets/images/tickets/95/8b8d318dc167c4249d0635e60a0ca114b1e03aaf.png" data-fancybox="gallery">
    <img title="dazzle1.png" src="/assets/images/tickets/95/8b8d318dc167c4249d0635e60a0ca114b1e03aaf.png" alt="dazzle1.png">
<small>Нажмите на картинку для увеличения.</small> 
</a>
но убрать надо расширение, чтобы получилось так:
title=«dazzle1»
Andrey
26 сентября 2018, 00:48
modx.pro
1 715
0

Как вывести по одному товару из каждой категории верхнего уровня? fenom

Как вывести по одному товару из каждой категории верхнего уровня? Допустим есть 20 категорий со вложенностью… Нужно вывести 20 товаров по 1 из каждой.
UDAV
25 сентября 2018, 20:42
modx.pro
1 226
0