Всего 125 949 комментариев

Роман
26 ноября 2022, 10:02
0
Если коротко (а то запутанно мне кажется я описал), то я хочу при нажатии на кнопку проверять асинхронно, что есть в корзине и уже в зависимости от ответа через JS делать определенные действия.
Вот :)
Илья Александрович
26 ноября 2022, 00:03
1
+1
вот решение:
{'!mFilter2' | snippet : [
                            'class' => 'msProduct',
                            'element' => 'msProducts',
                            'loadModels' => 'msTopProducts',
                            'parents' => $_modx->resource.id,
                            'showHidden' => '0',
                            'showUnpublished' => '0',
                            'hideContainers' => '0',
                            'showLog' => '0',
                            'suggestions' => '1',
                            'ajaxMode' => 'default',
                            
                            'includeThumbs' => 'medium,480x576',
                            'tpls'  => 'tpl.product.block,tpl.product.row',
                            
                            'tplOuter' => 'tpl.mFilter2.outer',
                            'tplFilter.outer.default' => 'tpl.mFilter2.filter.outer',
                            'tplFilter.row.default' => 'tpl.mFilter2.filter.checkbox',
                            
                            'filters' => '
                                resource|parent:parents,
                            ',
    
                            'leftJoin'=>'{
                                "P1": {
                                    "class": "msProductOption",
                                    "on": "P1.key = \'p1\' and P1.product_id = msProduct.id"
                                },
                                "P2": {
                                    "class": "msProductOption",
                                    "on": "P2.key = \'p2\' and P2.product_id = msProduct.id"
                                },
                            	"msTopProduct" : {
                            		"class" : "msTopProduct",
                            		"alias" : "msTopProduct",
                            		"on" : ["msTopProduct.product_id = msProduct.id", "msTopProduct.category_id = ' ~ $_modx->resource.id ~ ' "]
                            	}
                            }',   
                        
                            'sortAliases' => '{"p1":"P1","p2":"P2"}',
                            'aliases' => 'p1|value==p1,p2|value==p2',
                            
                            'sortby' => '{"msTopProduct.rank":"DESC", "msProduct.menuindex":"ASC"}',
                            
                            'limit' => '9',
                            'pageLimit' => '7',
                            
                            'tplPage' => '@INLINE <li class="page-item control"><a class="page-link" href="[[+href]]">[[+pageNo]]</a></li>',
                            'tplPageWrapper' => '@INLINE <div class="col-12 pagination justify-content-center"><ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>',
                            'tplPageActive' => '@INLINE <li class="page-item active"><span class="page-link">[[+pageNo]]</span></li>',
                            'tplPageFirst' => '@INLINE <li class="page-item control"><a class="page-link" href="[[+href]]"><i class="fas fa-angle-double-left"></i></a></li>',
                            'tplPageLast' => '@INLINE <li class="page-item control"><a class="page-link" href="[[+href]]"><i class="fas fa-angle-double-right"></i></a></li>',
                            'tplPagePrev' => '@INLINE <li class="page-item control"><a class="page-link" href="[[+href]]"><i class="fas fa-angle-left"></i></a></li>',
                            'tplPageNext' => '@INLINE <li class="page-item control"><a class="page-link" href="[[+href]]"><i class="fas fa-angle-right"></i></a></li>',
                            'tplPageSkip' => '@INLINE <li class="page-item disabled"><span>...</span></li>',
                            'tplPageFirstEmpty' => '@INLINE ',
                            'tplPageLastEmpty' => '@INLINE ',
                            'tplPagePrevEmpty' => '@INLINE ',
                            'tplPageNextEmpty' => '@INLINE ',
                            'ajaxTplMore' => '@INLINE <button class="btn btn-outline-danger rounded-0 my-3 btn-more">Загрузить ещё</button>',
                        ]}
Артур Шевченко
25 ноября 2022, 23:34
0
Наверное он доку открыл и понял, что leftJoin тут не нужен.
Hiiragi
25 ноября 2022, 23:21
0
как-то решилась проблема?
Руслан
25 ноября 2022, 23:09
0
Если включить премодерацию, то дополнительные поля не сработают. Вроде бы так писали. Премодерацию нужно будет делать после размещения отзыва.
Руслан
25 ноября 2022, 23:03
0
Решение нашёл. В файле /assets/components/tickets/js/mgr/comment/comment.window.js добавляете дополнительное поле

, {
		  xtype: 'displayfield',
		  fieldLabel: 'Комментарий',
		  html: config.record.properties['comment-plus'],
		  anchor: '99%',
		}
config.record.properties['comment-plus'] вместо comment-plus любой объект из поля properties в БД.
Руслан
25 ноября 2022, 23:02
0
Решение нашёл. В файле /assets/components/tickets/js/mgr/comment/comment.window.js добавляете дополнительное поле

, {
		  xtype: 'displayfield',
		  fieldLabel: 'Комментарий',
		  html: config.record.properties['comment-plus'],
		  anchor: '99%',
		}
config.record.properties['comment-plus'] вместо comment-plus любой объект из поля properties в БД.
Руслан
25 ноября 2022, 22:48
0
Решение нашёл. В файле /assets/components/tickets/js/mgr/comment/comment.window.js добавляете дополнительное поле

, {
		  xtype: 'displayfield',
		  fieldLabel: 'Комментарий',
		  html: config.record.properties['comment-plus'],
		  anchor: '99%',
		}
config.record.properties['comment-plus'] вместо comment-plus любой объект из поля properties в БД.
Алексей Смирнов
25 ноября 2022, 22:42
0
Приведите код который пытается отсортировать, то как вы делаете.
Тк не очень понятно в чем трудность.
Алексей Смирнов
25 ноября 2022, 22:36
0
На странице ресурса вкладка — комментарии:
joxi.ru/brR5VP7H7jbzzA
Или все комментарии вы увидите в админке в меню ПАКЕТЫ --> Тикеты
vectorserver
25 ноября 2022, 21:00
0
тогда подготовь массив таким образом чтобы выводились только published! и не е*и мозг!
Группируй массив по ключу
{var $plus = $_modx->resource.field_plus | fromJSON  | groupBypublished }
Сниппет groupBypublished:
<?php
function _group_by($array, $key) {
    $return = array();
    foreach($array as $val) {
        $return[$val[$key]][] = $val;
    }
    return $return;
}
return _group_by($input, 'published');
vectorserver
25 ноября 2022, 20:58
1
0
без итераций никак!
{var $count_pub = 0}
{var $plus = $_modx->resource.field_plus | fromJSON}
{if $plus}
    {foreach $plus as $idx => $item}
        {if $item.published ==1}
        {$count_pub++}
    {/foreach}
    RETURN COUNT: {$count_pub}
{/if}
Роман
25 ноября 2022, 20:43
0
Он считает итерации, толку от этого нет, а мне нужно из массива достать параметр published и посчитать сколько таких параметров равны 1
Alexey
25 ноября 2022, 20:35
0
А если два плюса в последней строке убрать?
Alexey
25 ноября 2022, 20:31
0
Поддерживаю! Техподдержка с понедельника молчит.
Роман
25 ноября 2022, 20:01
0
Не могу получить количество $item.published равных 1 таким способом
Алексей Смирнов
25 ноября 2022, 19:46
0
Только проблема в том что как только найдется $idx==8 то корректность посчета становиться сомнительна. те нужно исключить строку с
{if $idx =='8'}{break}{/if}
и тогда подсчет будет более точным. :)
Роман
25 ноября 2022, 19:04
-1
Не понимаю, это просто счетчик. $count_pub. Я пытаюсь как то узнать сколько в массиве параметров published равных 1