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

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

С нами с 06 июня 2015; Место в рейтинге пользователей: #5
Николай Савин
16 апреля 2021, 18:56
0
Не вижу никаких проблем, берете тот вариант что предложил евгений. Используете внутри синтаксис фенома и модификатор строки | replace
Николай Савин
16 апреля 2021, 18:19
0
Евгений что то явно употребляет
Николай Савин
16 апреля 2021, 07:51
+1
Так автор SeoFilter выше отписался в этом же топике. @Евгений Шеронов к вашим услугам (я надеюсь )
Николай Савин
15 апреля 2021, 07:34
0
Ты проявляешь больше активности на сайте — отсюда и рейтинг выше. Как по мне все логично.
Николай Савин
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 который не умеет возвращать массив. Это возможно только при ручном написании сниппета