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

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

С нами с 06 июня 2015; Место в рейтинге пользователей: #5
Николай Савин
21 марта 2020, 21:04
0
как оказалось в pdoMenu команда &checkPermissions=`list` выполняет нужные функции:
Не в pdoMenu. Ты немного в заблуждение вводишь, или сам не разобрался еще. Это единый общий параметр всего семейства pdoTools. Работает во всех сниппетах и, по идее, должен работать во всех компонентах, которые используют в своем ядре класс pdoTools
Николай Савин
12 марта 2020, 11:56
0
Интересный плагин, первый раз вижу. Спасибо за наводку.
А он только готовый массив данных преобразует, или как нормальная пагинация может сходить на сервер за новой порцией данных?
Николай Савин
11 марта 2020, 11:18
0
Все 100 методов, количеством которых вы не довольны, находятся НЕ непосредственно в JQuery объекте, который вы получили в результате выборки, а в его прототипе. А это означает, что если вы создадите 100 таких объектов, они все будут ссылаться на один прототип.
Почему тогда. если распечатать объект в консоли, он распечатается как объект с Персональными свойствами. Прототип у него обычный — object.
Как по мне — я вижу на экране не наследование, а большой объект с копией всех свойств.

Я кстати и не спорю — а скорее сам разобраться пытаюсь.
Николай Савин
11 марта 2020, 06:39
0
Да легко. Распечатай в консоли и сравни два вызова одного и того же DOM-элемента. Посмотришь насколько более загруженный стал элемент если его создали через jQuery вызов.

let $element = document.querySelector('.class_element');
let $element = $('.class_element');
К примеру в свойства узла добавлены всяческие onclick, onmouseover и десятки других возможных событий. И не важно используешь ты их или нет.
Распечатать обычный JS узел кстати не удастся, потому что отдельный его экземпляр не создается в принципе. Тебе будет выдана ссылка на DOM-element, без хранения его в памяти.
А чтобы добавить событие в JS узел — нужно писать addEventListener.
Николай Савин
10 марта 2020, 22:22
+1
Вот не поверишь — встречаются индивиды.
Буквально на днях установил человеку скрипт на чистом JS. А он мне жалуется что не работает.
Я ему говорю может кэш браузера, попробуй другой, попробуй почисти, а он мне начинает рассказывать что на трех компьютерах попробовал и везде не работает. И через час мы все таки выяснили, что у него на всех трех компах XP стоит, на который даже хром давно не обновляется. Ну и классика жанра — IE.
Николай Савин
10 марта 2020, 13:17
+4
А может активно живет и свой хлеб отрабатывает. Больно хвалит Лекторию именно в момент запуска
Николай Савин
10 марта 2020, 12:57
+10
Раз уж зашел холивар про jQuery позволю и я себе вставить свои пять копееек.
Давайте немного структурируем информацию и разберемся, почему и зачем сейчас все отказывются от jQuery.
Что это? Дань моде? Да здравствует Ванильный JS?
Да вот нет. Причин на самом деле две. Одну из них выше упомянули. Использование в компоненте jQuery — это лишняя зависимость для проекта в целом.. Да скорее всего он и так подключен. Тот же miniShop2 до сих пор требует jQuery. Кстати совсем немного. Скрипты минишопа написаны на чистом стареньком JS пятой версии. Но в нескольких местах пока еще используется jQuery. При желании можно переписать и отказаться от зависимости.

Вторая причина, которой я здесь в обсуждении не увидел это дополнительная нагрузка на память. Дело в том, что jQuery сильно нагружает используемые DOM-элементы собственными свойствами и методами. Грубо говоря, добавляя под сотню (не считал) свойств в каждый используемый элемент. И это все висит в памяти, чтобы браузер в любой момент мог использовать все дополнительные методы каждого элемента.

Современный веб — он же про оптимизацию и быстродействие верно? Так что приходится избавляться.

Давайте также до кучи разберем почему вообще jQuery получил такую популярность исторически.
Причин собственно так же две. Начну с конца.
Во-первых, jQuery дал возможность использовать короткие вызовы для различных популярных действий. И это частично по прежнему актуально. Те же методы show(), hide(), classToggle() и тому подобное все еще короче, чем то же самое на чистом JS. Но напоминаю эти методы и еще куча других нагружают узлы DOM дерева, независимо от того пользуетесь ли вы ими.

Во-вторых кроссбраузерность. Раньше у каждого браузера были свои собственные движки JS, которые по разному реализовали те или иные возможности. Либо вообще не реализовали. Jquery давал возможность не задумываться для какого из браузеров пишется код. Магия внутри преобразовывала все как надо. все изменилось с приходом на рынок Chrome и его движка для рендера JS V8. Он получился насколько качественным, что его стали использовать и другие браузеры, и даже портировали в NODE JS. и даже те браузеры которые не стали его использовать — все равно волей неволей стали подстраиваться под лидера рынка. Таким образом от проблем кроссбраузерности мы практически избавились и для решения этой проблемы jQuery стал не нужен.
Ну и не нужно забывать что движок JS и сам упрощается. Все ранее недоступные или сложные возможности становятся все проще и доступнее.

Надеюсь такой мини-ликбез будет кому то полезен. Спасибо.
Николай Савин
09 марта 2020, 12:34
0
У тебя всегда доступен объект $modx->resource
Пиши условие, проверяй у него content_type или как там, не помню сейчас на лету.
Николай Савин
09 марта 2020, 08:30
0
Ну… приходится иметь дело с тем, что предложили авторы. Моя задача была показать основные принципы работы из коробки.
Посмотрим — может получится реализовать вариант OpenAPI. Но вообще вряд ли.
Проще подготовить собственную надстройку к MODX, по-моему.
Николай Савин
09 марта 2020, 07:17
0
Всегда надо перечитывать свой текст. Это называется вычитка. Вылавливаешь ошибки
Дядь Сережа — я как раз этим занимаюсь.
Фильтр по родителю вот такой
GET https://shopname.com/rest/products?parent=13
Николай Савин
08 марта 2020, 17:33
+3
Изложение получилось сумбурное, торопливое — т.к. тема объемная на самом деле. Будем считать это черновиком. Постараюсь по настроение подкорректировать текст, снабдив наглядностью.
Николай Савин
06 марта 2020, 15:22
+2
В админке залогинен? Это дает дополнительные права. Нужно пробовать анонимный порно-режим.
Во вторых в параметрах вызова pdoMenu нужно указывать права для проверки доступа. Например &checkPermissions=`list`.
Николай Савин
06 марта 2020, 15:16
0
Правильно да. это работает автоматически
Николай Савин
06 марта 2020, 08:57
0
Я говорю о PHP функции sleep, которая останавливает работу скрипта на указанное время, и, насколько я понимаю (я могу ошибаться), предотвращает наступление max_execution_time.
По крайней мере я пользовался примером Николая-философа и это помогало делать пошаговую разбивку чтения больших данных.
Николай Савин
06 марта 2020, 08:42
0
А через sleep() разве нельзя такое сделать без js?
Николай Савин
09 февраля 2020, 14:39
+2
С компонентом не выйдет да. API то остался, но он теперь платный и довольно дорогой.
Я где то видел сторонние сервисы для получения данных от Яндекс API, которые работают как прослойка, промежуточный сервер. Что то вроде покупки вскладчину. Я бы в эту сторону смотрел и приспосабливался.
Николай Савин
09 февраля 2020, 14:28
+1
Привет Сергей. Яндекс закрыл этот API. Компонент тупо не может получать данные.
Николай Савин
08 февраля 2020, 17:50
+1
Здравствуйте. За все годы работы я впервые слышу о
такой самой распространенной и необходимой вещи для modX
. Уж извините, не предусмотрел, Вы первый кому подобное понадобилось.
Как то странно, что вы перешли на MODX не изучив для себя вопрос — а выйдет ли задумка. Уж тем более странно покупать дополнение, в котором нет нужных вам возможностей. Что мешало предварительно спросить?

Могу написать для вас нужный функционал отдельно, за деньги. Все мои контакты в профиле.
Николай Савин
08 февраля 2020, 17:39
0
Минус за bootstrap3 — вы серьезно? Сколько вы делали сайт года 4?