Вопросы

Определить мобильное устройство

Нужно изменять контент, если идет отображение на моб устройстве. Как это лучше делать в рамках данной CMS?

Спасибо!
Sergey
21 ноября 2019, 14:55
modx.pro
622
0

MODX пустая админка - is not defined [РЕШЕНО]

Роман
21 ноября 2019, 14:10
modx.pro
3 503
0

[Решено]: pdoResources &where сортировка по дате

Уж сколько копий изломано по этому параметру(а прежде и по &tvFilters), вот очередная похожая проблема,
все что мог выискал, вычитал, в ядро дальше копать? Подскажите, чего я не вижу.

Есть события, у каждого в двух TV — время начала и окончания события. Как известно, они хранятся не в timestamp. Нужно выводить только те, у которых дата завершения еще не наступила.

В тестируемом контейнере событий всего 10, и только одно еще не завершилось.Сниппет currentDate возвращает просто метку времени через time().

Вызов сниппета:
{'!pdoResources' | snippet : [
	'select' => '{"modResource":"id,pagetitle"}',
	'tpl' => 'marketEventTpl',
	'level' => '1',
	'limit' => '100',
	'tvPrefix' => '',
	'includeTVs' => 'EventStart,EventEnd',
	'templates' => '17',
	'sortby' => '{"EventStart":"ASC"}'
	'where' => 'UNIX_TIMESTAMP(EventEnd) > "[[!currentDate]]"'
	'showLog' => '1'
]}
Лог результата:
0.0000610: pdoTools loaded
0.0000160: xPDO query object created
0.0004399: Included list of tvs: EventEnd, EventStart
0.0001340: leftJoined modTemplateVarResource as TVeventend
0.0001180: leftJoined modTemplateVarResource as TVeventstart
0.0000529: Added selection of modResource: `id`, `pagetitle`
0.0000050: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `EventEnd`
0.0000041: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `EventStart`
0.0000520: Replaced TV conditions
0.0003431: Processed additional conditions
0.0005569: Added where condition: 0=UNIX_TIMESTAMP(`TVeventend`.`value`) > "1574334058", modResource.parent:IN(8,29,286,310,311,312,292,313,314,315,293,308,309), modResource.template:IN(17), modResource.published=1, modResource.deleted=0
0.0000060: Replaced TV conditions
0.0001009: Sorted by CAST(`TVeventstart`.`value` AS DATETIME), ASC
0.0000021: Limited to 100, offset 0
0.0001509: SQL prepared "SELECT `modResource`.`id`, `modResource`.`pagetitle`, IFNULL(`TVeventend`.`value`, '') AS `EventEnd`, IFNULL(`TVeventstart`.`value`, '') AS `EventStart` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVeventend` ON `TVeventend`.`contentid` = `modResource`.`id` AND `TVeventend`.`tmplvarid` = 149 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVeventstart` ON `TVeventstart`.`contentid` = `modResource`.`id` AND `TVeventstart`.`tmplvarid` = 148 WHERE  ( UNIX_TIMESTAMP(`TVeventend`.`value`) > "1574334058" AND `modResource`.`parent` IN (8,29,286,310,311,312,292,313,314,315,293,308,309) AND `modResource`.`template` IN (17) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY CAST(`TVeventstart`.`value` AS DATETIME) ASC LIMIT 100 "
0.0012290: SQL executed
0.0000150: Rows fetched
0.0012670: Prepared and processed TVs
0.0005660: Loaded "modChunk" with name "marketEventTpl"
0.0079620: Compiled Fenom chunk with name "modchunk/8"
0.0120490: Returning processed chunks
0.0162890: Total time
8 388 608: Memory usage
Выводит все 10. Удивительно то, что если скормить формируемый SQL запрос напрямую в базу, получаем желаемый один результат!
Антон Тарасов
21 ноября 2019, 14:08
modx.pro
1
1 504
0

large01.jpg: Передан пустой файл в галерее

Добрый день.
Подскажите как исправить?
ms2: large01.jpg: Передан пустой файл в галерее
php 5.4.16 (native)
egor
21 ноября 2019, 13:15
modx.pro
938
0

msMCD - как вывести размер в миникорзине?

Приветствую!
Разработчик не отвечает в тех поддержке, решил спросить здесь.

Может кто сталкивался с проблемой вывода размера товара в миникорзине?
Сделал так
{$item.options}
, ничего не выводиться, хотя в документации указано что options по умолчанию можно использовать. В системных настройках я его добавил.

Вот снипет
{'!msMCDMiniCart' | snippet: [
                                            'img' => 'small',
                                            'tpl' => 'msMCDMiniCartRowTpl-2',
                                        ]}
Заранее спасибо!
antonlynin
21 ноября 2019, 12:38
modx.pro
1 217
0

mfilter2 custom filter по tv с разделителем

Доброго времени суток.

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

Всего полей 10 в них содержатся значения в таком виде: 0|1|2 и т.д.

<?php
class myCustomFilter extends mse2FiltersHandler {

    public function buildQstFilter(array $values) {
        if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
            return array();
        }
        $tmp = $values;
        $values = array();
        foreach ($tmp as $k => $v) {
            $tmp = explode('|', $k);

            foreach ($tmp as $k => $v) {
                $values[$v] = array(
                        $v => $v
                    );
            }
        }

        $results = array();
        foreach ($values as $value => $ids) {
            $title = $value;


            if (!isset($results[$value])) {
                $results[$value] = array(
                    'title' => $title
                    ,'value' => $value
                    ,'type' => 'price'
                    ,'resource' => array()
                );
            }

            foreach ($ids as $id) {
                $results[$value]['resources'][] = $id;
            }
        }

        ksort($results);
        

        return $results;
    }
    

    public function filterQst(array $requested, array $values, array $ids) {
        $matched = array();
        
        //$values = Array ( [7] => Array ( [890] => 890 ) [2|7] => Array ( [1530] => 1530 ) )
        //$value = 2

        $value = $requested[0];
       
        $tmp = array_flip($ids); 
         
        foreach ($values as $answ_id => $id) {
            
            $answ = explode('|', $answ_id);
     
            if(in_array($value, $answ)) {
                foreach ($id as $k => $v) {
                    $matched[] = $v;
                }
            }
            
        }
 

        return $matched;
    }
   
}
В шаблоне

{'!mFilter2'|snippet:[
            'aliases' => '
                tv|qst_9==qst_9,
                tv|qst_10==qst_10,
                tv|qst_11==qst_11,
                tv|qst_12==qst_12,
                tv|qst_13==qst_13,
                tv|qst_14==qst_14,
                tv|qst_15==qst_15,
                tv|qst_16==qst_16,
                tv|qst_18==qst_18,
                tv|region==region,
                ms|price==price,
                resource|parent==category
            ',
            'filters' => '
                tv|qst_9:qst,
                tv|qst_10:qst,
                tv|qst_11:qst,
                tv|qst_12:qst,
                tv|qst_13:qst,
                tv|qst_14:qst,
                tv|qst_15:qst,
                tv|qst_16:qst,
                tv|qst_18:qst,
                tv|region:qst,
                ms|price:number,
                resource|parent:parents
            ',
            'parents' => 7,
            'limit' => 12,
            'element' => 'msProducts',
            'sortby' => 'RAND()',
            'class' => 'msProduct',
            'includeContent' => 1,
            'includeTVs' => 'filials,img,qst_9,qst_10,qst_11,qst_12,qst_13,qst_14,qst_15,qst_16,qst_18,region',
            'tplOuter' => 'PODBORKA.mFilter2.outer',
            'tplFilter.outer.default' => 'mFilter2.filter.outer',
            'tplFilter.row.default' => 'mFilter2.filter.checkbox',
            'tplFilter.outer.price' => 'tpl.mFilter2.filter.slider',
            'tplFilter.row.price' => 'tpl.mFilter2.filter.number',
            'tpls' => 'CATALOG.item.tpl',
            'hideContainers' => 1,
            'showEmptyFilters' => 1,
            'suggestions' => 0,
            'ajaxMode' => 'default'
        ]}
Сами поля:
https://yadi.sk/i/AU8706AxkYLZzQ

Прошу помощи
Andrey Frost
21 ноября 2019, 10:30
modx.pro
1 102
0

Fenom: Не выводится чанк при условии

Привет!..
Создан TV — latestTag (список-одиночный выбор 0==Нет||1=Да)
В tpl_latestTag обычный span с текстом
Пытаюсь вывести
{if $_modx->resource.latestTag == '1'}
{$_modx->getChunk('tpl_latestTag')}
{/if}
А он не выводится. Что я делаю не так?
Сергей
21 ноября 2019, 10:06
modx.pro
1 886
0

Как реализовать "конкурсное" голосование?

Всем привет!
Предположим задача устроить конкурное голосование за людей/бренды/новости. Есть ряд компонентов для голосования. Грубо говоря, в основном это голосование за текущую страницу, какие-то опросы и т.п. Но чтобы вывести несколько объектов на одной страницу и проголосовать за один из них-не нашел, чтобы сразу для этой цели.

Предполагаю, что нужно создать родительский документ, он же цель голосования, внутри дочерние документы они же участники для голосования. Дальше в родительском документе выводим по шаблону блоки с участниками: заголовок, описание, изображение, кол-во голосов и т.д. В блоке участника также кнопка «Голосовать». Конкурс готов! :)

Вопрос, просьба поделиться опытом! Через какие компоненты удаться это реализовать? Что из под чего вызывать, на что обратить внимание или совет оставить эту затею :)
Сергей
20 ноября 2019, 23:41
modx.pro
942
0

Как сделать промежуточный итог в корзине miniShop2

Сейчас в корзине есть кол-во, вес и цена по прайсу.
Нужно сделать что бы в дополнительной колонке считалась еще и сумма для каждого отдельного товара.
Кефирка
20 ноября 2019, 20:40
modx.pro
696
0

Minishop2 непросмотренный заказ

Делал ли кто подобное и как сложно это сделать?

Нужно добавить свой класс ко всем заказам в списке заказов. После просмотра заказа класс удалять.
Суть — как в почте, выделять непросмотренные заказы.
Сергей Самусев
20 ноября 2019, 15:59
modx.pro
662
0