Всего 125 704 комментария

Александр Мельник
25 мая 2021, 19:47
-1
Не смотрел видео и наверняка пишу не в тему, но помню одно правило хорошего инженера — если что-то выглядит глупо, но работает — это не глупо)
Евгений Шеронов
25 мая 2021, 18:12
+1
Я бы сказал, что оно очень необычное))
Полностью смотреть не стал (там на канале ещё 2), но подход автора видео по Vue.js мягко говоря странноват.

Сам компонент вот github.com/jaredfhealy/extrabuilder/ и, наверное, он хорошо выполняет свои функции.
Но автор умудрился намешать ExtJs, Vue.js и даже jQuery и всё это подрубается в админку через iframe!
Роман
25 мая 2021, 13:01
0
Экранировать кавычки нужно:
&filterOptions=`{
"more_tpl": "<button class=\"btn-more\"><span><i class=\"demo-icon icon-mdi_arrow_forward\"></i></span> Показать еще <b>7 товаров</b></button>"
}`
Кэш потом не забудьте почистить.
Михаил
25 мая 2021, 12:29
0
[[!mFilter2?
                        &parents=`[[*id]]`
        				&element=`msProducts`
        				&class=`msProduct`
        				&limit=`19`
        				
        				&includeTVs=`blackfriday, instock, cyberdays, newproduct, discountproduct, hit, price-metr-old, price-metr, price-for-metr`
        
                        &tplPageFirst=`@INLINE <li class="control"></li>`
                        &tplPageLast=`@INLINE <li class="control"></li>`
                        &tplPagePrev=`@INLINE <li class="control"><a href="[[+href]]">	‹</a></li>`
                        &tplPageNext=`@INLINE <li class="control"><a href="[[+href]]">›</a></li>`
                        &tplPageFirstEmpty=`@INLINE `
                        &tplPageLastEmpty=`@INLINE `
                        &tplPagePrevEmpty=`@INLINE <li class="disabled"><span>	‹</span></li>`
                        &tplPageNextEmpty=`@INLINE <li class="disabled"><span>›</span></li>`
                        
                        &tpls=`tpl.msProducts.row,tpl.msProducts.row-inline`
                        &ajaxMode=`button` 
                        &filterOptions=`{
                            "more_tpl": "<button class="btn-more">
        						<span><i class="demo-icon icon-mdi_arrow_forward"></i></span>
        						Показать еще <b>7 товаров</b>
        					</button>"
                        }`
                        
                     
        			


        			]]
Роман
25 мая 2021, 12:18
0
В документации, нет ничего про ajaxTplMore. Пришлите код снипета.
Михаил
25 мая 2021, 12:07
0
Не помогло(
Семён Кудрявцев
25 мая 2021, 12:05
+1
Крутяк! Автору, респект — давно ждал этой истории, что и как делать в MODX + Vue
На вопрос автора — Нужно ли дальше делать подобные компоненты или они наоборот уводят MODX куда-то в сторону?)
Ответ: Однозначно, да!
И по поводу админки на vue, хотелось бы, чтобы это всё-таки стало реальностью)
perfkirill
24 мая 2021, 18:50
0
Вопрос о там как ускорить импорт.

Что мы имеем после внедрения рекомендаций
1. Импорт товаров, используем 3 TV-поля, 12000 ед ~ 12 часов.
2. Импорт товаров, поля в таблице товаров, 12000 ед ~ 8 часов

В настройках импорта для определения родительской категории, в parent передаётся название (pagetitle)

Пример базы для импорта yadi.sk/i/Mp0GAvLWiOIDqg
А вообще там 12000 позиций.

Лог SQL запросов yadi.sk/d/NvVuhe2ju9graA

Сопоставление полей yadi.sk/i/Cg0okIGBIBs_DA

Настройки импорта yadi.sk/i/Ve21NuQEopQIHg
Николай Савин
24 мая 2021, 11:41
0
Насколько я знаю, на данный момент в системе LiqPay нет отдельной ссылки для отмены или неуспешной оплаты.
Компонент старый — давно писался — отсюда фактически неиспользуемая системная настройка.

Если и есть нечто подобное — значит нужно компонент переделать.
Евгений
24 мая 2021, 11:39
0
При отмене оплаты перекидывает на страницу успешной оплаты, все ссылки в системных настройках правильные. Как правильно настроить подскажите пожалуйста?
Евгений Шеронов
24 мая 2021, 11:02
+1
Ну там нет конфликта скриптов точно, а вот в стилях всех у меня добавляется css префикс.

Конфликт будет только с простыми названиями классов, это можно и как плюс использовать. Именно для иконок используются стандартные классы. Но все свои классы я пишу добавляя префикс компонента.

Я в админку совсем не захожу, только после сборки раз в неделю что-то проверить)
По идее всё как видишь на отдельной страничке — так и отображается в админке.

Есть смысл локально развернуть как раз для дебага PHP. Xdebug на modhost не поставить же?
Илья Уткин
24 мая 2021, 10:29
0
Да, конечно, используются стандартные пользователи MODX. Вы сами делает регистрацию, авторизацию — любым удобным для вас способом. Возможно, на сайте уже есть личный кабинет. Этот компонент реализует только конкретно сообщения между пользователями.
Сергей
24 мая 2021, 10:25
0
Ясно.

А пользователи куда сохраняются? Может стандартный функционал используют «Пользователи»?
Alexey
24 мая 2021, 10:18
0
я бы убрал подключение «древнего» jquery(он где-то в body подключается — skrinshoter.ru/s/240521/bo1cNzHu ), затем убрал подключение jquery в вызове сниппета minifyX (скорее всего, вызывается в head) и смотрел бы далее, что консоль выдает.
Николай Савин
24 мая 2021, 10:17
0
Все что касается VUE понятно. А вот как скрестить админку MODX и VUE — уже сложнее.
Как вовремя поймать наложения скриптов и стилей админки и VUE? Как вовремя отловить все баги без постоянного деплоя.
Это наверное лучше локально на рабочей машине развернуть MODX и сразу на месте все вопросы решать.
Евгений Шеронов
24 мая 2021, 10:13
+2
Как раз на сервере ничего не происходит, там только MODX который генерирует модели по схеме и отвечает на запросы.
Сборка стилей и js в master ветке локально в шторме. Я их и в git кладу.
Можно и на сервере, в заготовке есть пример сборки assets. Но потом опять надо буде выкачать изменения себе)

Так, уточню про процесс по пунктам подробнее)
1) Открываю PhpStorm
2) Жму serve во вкладке npm (читай пишу npm serve в терминале)
3) Происходит небольшая сборка и становится доступна страничка localhost:8080
4) На этой страничке есть только стили и шрифты от MODX и один
5) В него Vue.js уже маунтит приложение.
6) Для ajax запросов я использую axios, в который в зависимости от окружения добавляются псевдокуки в main.js (там где new Vue(...)) и создание конфига.
import axios from "axios";
   let ym2Config = window.ym2Config || (process.env.NODE_ENV !== 'production' ? {
        modAuth: process.env.VUE_APP_MOD_AUTH || '',
        apiUrl: process.env.VUE_APP_API_URL || '',
        xmlLoaded: true,
        lang: {}
    } : {});
 axios.defaults.baseURL = ym2Config.apiUrl || '/assets/components/yandexmarket2/connector.php';
    axios.defaults.headers.common['modAuth'] = ym2Config.modAuth;
    if (process.env.NODE_ENV !== 'production' && process.env.VUE_APP_COOKIE) {
        axios.defaults.headers.common['modCookie'] = process.env.VUE_APP_COOKIE;
    }
//...тут дальше new Vue({...}).$mount('#yandexmarket-app');
7) И при каждой правке обновляется даже не вся локальная страница, а именно тот участок DOM, что обновился. Vue очень умный) Вся страница обновится если что-то сильно общее поменять.

А чтоб это всё работало админке MODX уже Home контроллер отвечает за создание windows.ym2Config и создание разметки:
<?php 
   ...
// тут ничего нового, всё уже описано в вышеупомянутых заметках про vue в админке)
 public function getTemplateFile(): string
    {
        $this->content .= '<div id="yandexmarket-app"></div>';
        return '';
    }

    public function loadCustomCssJs()
    {
        $this->addCss($this->mgrAssetsUrl.'css/chunk-vendors.css');
        $this->addCss($this->mgrAssetsUrl.'css/app.css');

        $this->addHtml("<script type=\"text/javascript\">
        window.ym2Config = {
            apiUrl: \"{$this->connectorUrl}\",
            modAuth: \"{$this->modx->user->getUserToken($this->modx->context->key)}\",
            xmlLoaded: {$this->xmlLoaded}, 
            lang: {}
        }
        </script>");

        $this->addJavascript($this->mgrAssetsUrl.'js/chunk-vendors.js');
        $this->addLastJavascript($this->mgrAssetsUrl.'js/app.js');
    }