Вопросы

Автовывод заполненных модификаций и опций msOptionPrice2

Доброго дня!

Нужна помощь. Кто готов сделать полностью на платной основе — пожалуйста https://modx.pro/work/16473

На фронтенде выводятся модификации товара и опции автоматически — без указания в чанке, какую опцию выводить, а какую нет.

На фронтенде это выглядит так:


Модификации (для понимания) такие:
Цвет (Белый) — Ширина умывальника (80) — +1000р
Цвет (Белый) — Ширина умывальника (100) — +2000р
Цвет (Черный) — Ширина умывальника (80) — +3000р
Цвет (Черный) — Ширина умывальника (100) — +4000р

Нужно сделать некоторые доработки:
1. В модификациях вывести автоматически не только опции товара, но и свойства товара. Компонент позволяет в модификациях использовать не только опции товара, но и свойства. Сейчас настроен автовывод только опций — нужно и модификаций.
2. Сделать вывод названия опции и свойства из caption (так же, как называется в админке, а не из лексикона) — на изображении ms2_product_color2 не задавать через словарь.
3. Из списка опций, которые под модификациями, исключить автоматически те, которые использованы в модификациях. На изображении под модификациями автоматически выводятся опции. Стоит, видимо, объединить вывод модификаций и вывод списком опций и в процессе перебора опций и свойств разделить на те, которые использованы в модификациях и на остальные. Модификации вывести с возможностью выбора значений, а остальные — просто в виде таблицы.

Логику действий понимаю, но знаний реализовать не хватает. Буду рад любым промежуточным вариантам или готовому решению.
Мартин Очоа
28 сентября 2018, 13:22
modx.pro
1 861
0

pdoFetch и LEFT JOIN modResource

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

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

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

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

Заметил такой нюанс в работе Компонента SEO PRO. Для отображения заголовка в снипете поисковика он берет поде longtitle, а не pagetitle. Почему так? Можно это откорректировать?
Markus
27 сентября 2018, 00:34
modx.pro
1 006
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 201
+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 287
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 657
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 483
0

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

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

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

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


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

у кого есть какие еще мысли?
Андрей Перевезенцев
26 сентября 2018, 15:00
modx.pro
928
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 716
0