Всего 123 801 комментарий

Тодор
18 мая 2023, 00:18
0
getParentIds возвращает список ИДшек всех родителей ресурса. Только на него ни как не влияет категории отмеченные во вкладке Категории
kudesia
18 мая 2023, 00:03
0
Вот так может лучше

joxi.ru/823NelZCwlwnym

Вот нужно вывести pagetitle этот дополнительной, а не основной категории
Артур Шевченко
17 мая 2023, 23:43
0
Я не понял задачу. Что за страница со второстепенными категориями?
Артур Шевченко
17 мая 2023, 23:40
0
<?php
if (empty($rid)) {$rid = $modx->resource->id;}
if (empty($pid)) {$pid = $modx->resource->parent;}
if (empty($delimeter)) {$delimeter = ' , ';}
$pdo = $modx->getService('pdoTools');
$scheme = $modx->getOption('link_tag_scheme', null, 'full', true);

$q = $modx->newQuery('msCategory');
$q->leftJoin('msCategoryMember', 'msCategoryMember', array(
    '`msCategory`.`id` = `msCategoryMember`.`category_id`'
));
$q->sortby('pagetitle','ASC');
$q->groupby('id');
$q->select($modx->getSelectColumns('msCategory'));
$q->where('`msCategoryMember`.`product_id` = '.$rid.' OR `id` = '.$pid);

$result = array();
$html = '';
if ($q->prepare() && $q->stmt->execute()) {
    while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
        if($tpl){
            $html .= $pdo->parseChunk($tpl, $row);
        }
        else{
             $result[] = $row;
        }
    }
}
return $html ?: $result;
Добавил параметр tpl это обычный чанк, в нём доступен массив полей ресурса в виде плейсхолдеров типа {$pagetitle} или [[+pagetitle]]. Можете выводить что угодно и как угодно.
kudesia
17 мая 2023, 23:39
0
Тот вопрос про вывод всех категорий, а этот про одну второстепенную, конкретно указанную в [[!msProducts?]]
Артур Шевченко
17 мая 2023, 23:29
-1
Вы зачем спамите похожими вопросами? Предыдущий ваш вопрос был про это же, только с другого бока.
kudesia
17 мая 2023, 23:27
0
Спасибо огромное, работает.

Можете еще сказать, как вывести только ID или только pagetitle?
Артур Шевченко
17 мая 2023, 23:21
+1
На Fenom так
{'!SnippetName' | snippet: [
'rid' => $id,
'pid' => $parent
]}
На родном синтаксисе так
[[!SnippetName?
&rid=`[[+id]]`
&pid=`[[+parent]]`
]]
SnippetName — заменить на название сниппет.

Но лучше в msProducts дописать параметр leftJoin, кажется так будет немного оптимизированнее
Николай Савин
17 мая 2023, 20:39
+2
Так то с версии 3.0.0 в minishop2 уже из коробки есть функционал брошенных корзин. Дополнительные компоненты не обязательны. Читайте релизы о этой версии
Dan
Dan
17 мая 2023, 18:47
0
Проблема скорее всего не в Migx, а в самих фото. У фото есть метаданные в формате EXIF, в том числе информация об ориентации (альбомная, книжная) камеры в момент фото.
Достаточно все метаданные фото удалить перед загрузкой и все должно быть норм — это можно сделать онлайн.
Dan
Dan
17 мая 2023, 18:41
0
Был компонент ordersUnformed, правда не знаю насколько он актуален, но думаю должен быть, ибо там все достаточно понятно.
Баха Волков
17 мая 2023, 16:45
0
Причина простая, файловые сниппеты не поддерживаются, также как и на AjaxForm
Денис Усманов
17 мая 2023, 16:25
0
А вообще, напишите мне в ЛС в телеграм, есть 1 идея…
Денис Усманов
17 мая 2023, 16:23
0
По брошенным корзинам был компонент такой msTools, который к сожалению на данный момент автором не продаётся. Как вариант, попробуйте найти автора, вдруг продаст Вам его. Других решений не знаю… Да и кейсов не было таких.
Константин Ильин
17 мая 2023, 11:47
0
Баха, подскажи пожалуйста, что-то никак не соображу как подключить свой файловый сниппет, такие вызовы не срабатывают
'snippet' => '@FILE snippets/snippet.php',
/* или */
'snippet' => 'file:snippets/snippet.php',
Причем для Формы файловая «ссылка» срабатывает
'form' => '@FILE chunks/forms/zayavka.form.tpl'
Dan
Dan
16 мая 2023, 16:02
0
Вообще запрос возвращает итоговое количество товаров, но не их id. Не уверен, но такой костыль должен сработать.
1) Так как сделать 301 с помощью js нельзя, а придется как минимум юзать php, то создаешь по адресу assets/components/msearch2/js/web/ файл custom.js
2) Копируешь в него код из default.js, находящегося в той же папке
3) Придется каким-то образом выводить id товара в карточке. Например в data-атрибуте или еще как-нибудь.
4) В созданном файле находишь строчку mSearch2.setTotal(response['data']['total']); и добавляешь следующий код после нее:
if (response['data']['total'] == 1) {
   let product_id = //получаешь id единственного товара в результатах. Как получить - зависит от реализации 3-го пункта. 
   $.post(document.location.href, {action: 'sendRedirect', id:product_id}, function(data) {
      console.log(data);             
   });                    
}
5) Создаешь сниппет с любым названием и вызываешь его некешированным на странице каталога, там где вызван mFilter2.
<?php
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
if (empty($_POST['action'])) {return;}

switch ($_POST['action']) {
	case 'sendRedirect':
                $url = $modx->makeUrl($_POST['id']);
		header("Location: ".$url."", true, 301);
                exit();

		break;
}
Павел Романов
16 мая 2023, 13:05
+1
Создайте в настройках каждого контекста параметр id_category и укажите там соответствующий ID.
В возможных значениях у TV пропишите:
@EVAL
if(!$res =  $modx->getObject('modResource', $_GET['id'])) return;
if(!$setting = $modx->getObject('modContextSetting', array('context_key' => $res->get('context_key'), 'key' => 'id_category'))) return;
$docid = $setting->get('value');

return $modx->runSnippet('pdoResources',array(
    'parents' => $docid ,
    'limit' => 0,
    'tpl' => '@INLINE [[+pagetitle]] ([[+id]])==[[+id]]',
    'outputSeparator' => '||'
));