Николай Савин

Николай Савин

С нами с 06 июня 2015; Место в рейтинге пользователей: #5
Николай Савин
14 апреля 2021, 10:32
+1
Будет срабатывать, если правильно сформировать разметку. С программной точки зрения карточка товара в каталоге не отличается от товарной страницы.
Например вы можете использовать в качестве уникальной опции текущее время, тогда точно не будет дублей. Разве что за секунду несколько раз нажмут кнопку.

Либо вы можете расширить класс корзины, согласно документации и в принципе изменить логику формирования корзины.
Николай Савин
13 апреля 2021, 15:23
+1
Это уже есть в планах развития сайта. Сделаем.
Николай Савин
13 апреля 2021, 09:56
0
Все там работает — я же не из головы взял код, а прямо из действующего проекта пример привел.
Николай Савин
13 апреля 2021, 09:53
0
В целом да, но сравните с моим примером. Там читаемость получше будет. Меньше вложенности.
Николай Савин
13 апреля 2021, 09:52
0
можно ли в этом поле выводить значение tv дочернего ресурса
По умолчанию нельзя конечно. У нас доступны только поля текущего ресурса.
Навскидку вижу два пути решения вопроса.
1. Сделать небольшую инъекцию в процессор get — где просто добавить нужное поле
2. В JS скрипте при его загрузке делать ajax или fetch запрос за нужными данными и уже там подмешивать куда нужно значение поля
Николай Савин
13 апреля 2021, 09:47
0
где мне в tab.js проверить id ресурса?
Ну правильнее всего в начале скрипта первой строкой
Николай Савин
13 апреля 2021, 09:22
+2
Да конечно возможно.
Если вы добавляете дополнительное текстовое поле в админке — то у вас всегда доступен объект this.record где есть все поля ресурса. Там вы без проблем можете получить доступ и к Id страницы, и к шаблону и родителю и любому другому полю, которое подходит для фильтрации

switch ($modx->event->name) {    
    case 'OnDocFormPrerender':
        $modx->controller->addHtml("
        <script type='text/javascript'>

         Ext.ComponentMgr.onAvailable('modx-panel-resource', function(){
             //Подключаем по id
             if(this.record.id !== 1) {return;}
             //Подключаем по template
             if(this.record.id !== 4) {return;}
            //Подключаем по parent
             if(this.record.parent !== 10) {return;}

             const leftCol = this.items[1].items[0].items[0].items[0];

             const en_title = {
               anchor: '100%',
               description: '<b>[[*en_pagetitle]]</br>Заголовок на английском</b>',
               fieldLabel: 'Заголовок на английском',
               id: 'modx-resource-en-pagetitle',
               maxLength:255,
               msgTarget: 'under',
               name:'en_pagetitle',
               xtype:'textfield'
            }
            leftCol.items.splice(1, 0,  en_title);

        });
    </script>");
        break;
}
Николай Савин
13 апреля 2021, 09:15
0
Нет, думаю там все необходимые скрипты подключаются автоматически.
Возможно у вас ошибка где то в JS которая ломает все другие скрипты. Посмотрите нет ли в консоли разработчика ошибок?
Второй шаг посмотрите исходный код страницы на которой подключена форма. Видно ли там подключенный js скрипт компонента? Если видно — откройте его — доступен ли он
Николай Савин
13 апреля 2021, 07:45
0
Здравствуйте. Документацию не писал. Что там внутри уже не помню, так как сделал и забыл.
Николай Савин
06 апреля 2021, 20:33
0
Привычным путем работы с шаблонизатором ничего хорошего не выйдет.
Нужно писать API в котором работать напрямую с PHP и отдавать как нужно сформированный JSON.
Тут можно пойти двумя путями. Либо использовать RestFull API — и путем манипулирования URL запрашивать нужную информацию, либо пробрасывать все обращения на какой то единый коннектор. который будет отдавать данные в зависимости от action и HTTP метода запроса.
Но в любом случае обработчик должен быть PHP который уже внутри может запускать что то вроде
$modx->runSnippet()
Николай Савин
06 апреля 2021, 19:01
0
При использовании return json до tpl дело не доходит.
Эти параметры между собой не совместимы.
Сниппеты обработать в tpl не получился.
Чтобы получить дополнительные данные — например родителя нужно использовать конструкции LeftJOIN и Select
Николай Савин
24 марта 2021, 10:05
0
Ну да согласен — ерунду сказал. Конкретно pdoTools тут не при чем.
Николай Савин
23 марта 2021, 19:10
0
json это и есть своеобразный массив. Нет прямого возврата массива нет, так как под капотом pdoTools который не умеет возвращать массив. Это возможно только при ручном написании сниппета
Николай Савин
18 марта 2021, 21:22
+5
Давай серию уроков сделай. Это просто космическая польза будет сообществу!
Николай Савин
18 марта 2021, 11:39
0
Ну мне сама тема не особо интересна, так что я не читал.
Николай Савин
18 марта 2021, 11:05
0
С возвращением. Давно не было видно!
На чем интерфейс делал? Это же явно не extJS
Николай Савин
17 марта 2021, 19:11
+1
Тут речь про то, чтоб повысить в системных требованиях минишопа минимальную версию php
Николай Савин
17 марта 2021, 17:07
0
Проблема скорее всего в вашей версии php.