SEQUEL.ONE

SEQUEL.ONE

С нами с 16 июня 2015; Место в рейтинге пользователей: #84
SEQUEL.ONE
16 июня 2020, 21:20
0
Нет, в базе сохраняется массив такого формата

["1","4","6"]
SEQUEL.ONE
16 июня 2020, 20:24
0
Пробовал добавить параметр
value: 'pagetitle'
не работает. Не понимаю как вывести в поле редактирования добавленные элементы. В базу они добавляются.
SEQUEL.ONE
16 июня 2020, 18:29
0
Круто! Огромное спасибо, работает! А вот по этому https://modx.pro/help/20443 тикетсу не подскажите как настроить вывод значений в окне редактирования?
SEQUEL.ONE
15 июня 2020, 23:26
0
Что-то я въехать не могу, добавил код:

<?php

class modExtraItemGetListProcessor extends modObjectGetListProcessor
{
    public $objectType = 'modExtraItem';
    public $classKey = 'modExtraItem';
    public $defaultSortField = 'id';
    public $defaultSortDirection = 'DESC';
    protected $productsList = [];
    //public $permission = 'list';

    /**
     * @return bool
     */
    public function initialize()
    {
        if ($this->getProperty('combo') && !$this->getProperty('limit') && $id = (int)$this->getProperty('id')) {
            $this->item_id = $id;
        }

        return true;
    }

    /**
     * We do a special check of permissions
     * because our objects is not an instances of modAccessibleObject
     *
     * @return boolean|string
     */
    public function beforeQuery()
    {
        if (!$this->checkPermissions()) {
            return $this->modx->lexicon('access_denied');
        }

        return true;
    }


    /**
     * @param xPDOQuery $c
     *
     * @return xPDOQuery
     */
    public function prepareQueryBeforeCount(xPDOQuery $c)
    {
        $query = trim($this->getProperty('query'));

        $c->leftJoin('modExtraCategory', 'modExtraCategory', 'modExtraCategory.id = modExtraItem.category_id');
        $c->select(array($this->modx->getSelectColumns('modExtraItem', 'modExtraItem')));
        $c->select(array('modExtraCategory.name as category_name'));

        $c->leftJoin('modUser', 'modUser', 'modUser.id = modExtraItem.createdby');
        $c->select(array($this->modx->getSelectColumns('modExtraItem', 'modExtraItem')));
        $c->select(array('modUser.username as createdby_name'));

        $item = $this->modx->getObject('modExtraItem', 'modExtraItem.id');
        $products = $item->get('products');

        $q = $this->modx->newQuery('modResource');
        $q->where(array('id:IN' => $products));
        $q->select(array('id','pagetitle'));
        if($q->prepare() && $q->stmt->execute()) {
            $this->productsList = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
        }

        if ($query) {
            $c->where([
                'name:LIKE' => "%{$query}%",
                'OR:category_id:LIKE' => "%{$query}%"
            ]);
        }

        return $c;
    }


    /**
     * @param xPDOObject $object
     *
     * @return array
     */
    public function prepareRow(xPDOObject $object)
    {
        $array = $object->toArray();
        $array['actions'] = [];

        // Edit
        $array['actions'][] = [
            'cls' => '',
            'icon' => 'icon icon-edit',
            'title' => $this->modx->lexicon('modextra_item_update'),
            //'multiple' => $this->modx->lexicon('modextra_items_update'),
            'action' => 'updateItem',
            'button' => true,
            'menu' => true,
        ];

        if (!$array['active']) {
            $array['actions'][] = [
                'cls' => '',
                'icon' => 'icon icon-power-off action-green',
                'title' => $this->modx->lexicon('modextra_item_enable'),
                'multiple' => $this->modx->lexicon('modextra_items_enable'),
                'action' => 'enableItem',
                'button' => true,
                'menu' => true,
            ];
        } else {
            $array['actions'][] = [
                'cls' => '',
                'icon' => 'icon icon-power-off action-gray',
                'title' => $this->modx->lexicon('modextra_item_disable'),
                'multiple' => $this->modx->lexicon('modextra_items_disable'),
                'action' => 'disableItem',
                'button' => true,
                'menu' => true,
            ];
        }

        // Remove
        $array['actions'][] = [
            'cls' => '',
            'icon' => 'icon icon-trash-o action-red',
            'title' => $this->modx->lexicon('modextra_item_remove'),
            'multiple' => $this->modx->lexicon('modextra_items_remove'),
            'action' => 'removeItem',
            'button' => true,
            'menu' => true,
        ];

        return $array;
    }

    public function outputArray(array $array, $count = false)
    {
        return parent::outputArray($this->productsList, $count);
    }

}

return 'modExtraItemGetListProcessor';
В items.grid.js прописано

{
            header: _('modextra_products'),
            dataIndex: 'products',
            sortable: false,
            width: 150,
        },
Не отображается ничего



Вот это поле нужно подменять, но оставить id'шники в таблице. Таблица имеет название products.

SEQUEL.ONE
15 июня 2020, 23:12
0
После того как вывели массив, как его добавить в dataIndex Grid таблицы? Нужно что еще прописывать? Или оставить там 'products'?
SEQUEL.ONE
15 июня 2020, 18:57
0
Не нашёл =( Нужно массив из поля одной таблицы связать с таблицей modResource и вывести их pagetitle через запятую. Массив в таблице имеет вот такую структуру:

["2","4","6"]
SEQUEL.ONE
15 июня 2020, 18:53
0
Да, я распечатываю массив с id и через цикл получаю id ресурсов по одному.
SEQUEL.ONE
15 июня 2020, 16:00
0
Я уже сделал, не могу коммит в гитхаб отправить.
SEQUEL.ONE
14 июня 2020, 00:42
0
Точно такая же проблема. Не могу вывести значения при редактировании и ещё в Grid таблицу modx.pro/help/20443

Вы не поможете? Не могу понять что не так?! =(
SEQUEL.ONE
03 июня 2020, 13:51
+1
Зачем? Я решил уже:

{'!pdoMenu' | snippet : [
                'parents' => '30,31,33,34,35',
                'displayStart' => 1,
                'context' => 'web,store,bezbflava,b1,sb1',
                'tplOuter' => '@INLINE <ul {$classes} data-scrollable="true">{$wrapper}</ul>',
                'outerClass' => 'navbar-nav',
                'tpl' => '@INLINE <li class="nav-item"><a href="{$link}" {$classes} {$attributes}><i class="la {$link_attributes}"></i><span>{$menutitle}</span></a>{$wrapper}</li>',
                'rowClass' => '{if $_modx->context.key != $_modx->resource.context}noajax{/if} nav-link',
                'tplStart' => '@INLINE <li class="nav-item nav-header">{$menutitle}</li>{$wrapper}',
                'level' => 2,
                'where' => [
                    'class_key:!=' => 'msProduct'
                ]
            ]}
Нужно добавить параметры:

'displayStart' => 1
и

'tplStart' => '@INLINE <li class="nav-item nav-header">{$menutitle}</li>{$wrapper}',
а в параметр parents вставить id's созданных документов и все пункты меню перетащить в эти разделы:

'parents' => '30,31,33,34,35',
Ну и на последок включить системную настройку:

use_frozen_parent_uris
а после у всех вложенных ресурсов второго уровня «Заморозить URI». Profit =)
SEQUEL.ONE
29 мая 2020, 04:50
0
{'!pdoMenu' | snippet : [
                'parents' => $_modx->resource.parent,
                'context' => $_modx->context.key,
                'tplOuter' => '@INLINE <ul {$classes} data-scrollable="true">{$wrapper}</ul>',
                'outerClass' => 'navbar-nav',
                'tpl' => '@INLINE <li class="nav-item"><a href="{$link}" {$classes} {$attributes}><i class="la {$link_attributes}"></i><span>{$menutitle}</span></a></li>',
                'rowClass' => 'nav-link',
                'level' => 1
            ]}
Вот так вроде выводит как надо.
SEQUEL.ONE
29 мая 2020, 01:15
0
По идее мне лишь нужно вывести select со множественным выбором ресурсов у товара, больше ничего. Сами связи через сниппеты или pdoTools сделать не проблема.
SEQUEL.ONE
29 мая 2020, 01:10
0
modx.pro/development/19942 — этой теме в комментариях выкладывал скриншот.
SEQUEL.ONE
29 мая 2020, 01:07
0
store.sequel.one/packages/others/sonelandingpage/ — правда сам ключ в данный момент мы сгенерируем вам самостоятельно после вашей регистрации, сайт в разработке, но у нас свой репозиторий как в modstore.pro все обновления на сайте вы можете получать самостоятельно через админку.
SEQUEL.ONE
29 мая 2020, 00:46
0
Если нужна визуализация подобного в админке, могу продать наш компонент sOneLandingPage, который это делает. Аналог modmore.com/contentblocks/
SEQUEL.ONE
27 мая 2020, 15:47
0
С созданием самих тикетов тоже проблемы. Первый раз с таким сталкиваюсь( Все настройки сервера идентичны другому сайту, у которого всё работает.
SEQUEL.ONE
27 мая 2020, 15:35
0
Какой-то глюк. При сохранении создаётся запись в таблице modx_tickets_totals c id 0, если id сменить на 1, то всё начинает открываться.