16 минут назад
5. Настроил компонент Login.
6. И в раздел «Редактирование данных» у уже авторизованного пользователя вывел следующий сниппет:
<?php
$modx->...
Личный кабинет пользователя. Поиск компонента 4
5 часов назад
Файл изображения — название файла с расширением
Путь к файлу — путь где файл находится
На мой взгляд для манагера это сложно. Проще иметь возможно...
Компонент для создания кастомного меню 17
6 часов назад
Добрый день, прикрутите возможность поиска товаров по ТВ/значению
msPre - Массовое редактирование товаров minishop 87
9 часов назад
Все спасибо, разобрался
Открываю исходники SeoFilter, YandexMarket2 и делаю их бесплатными 15
9 часов назад
Может можно реализовать как-то через «цепочки» внутри самого easyComm…
Одна админка, мультиязычность на разных доменах: de, fr, md + мультиязычные комментарии 1
Сегодня в 11:56
все спасибо разобрался!
[YandexMarket2] выгрузка товаров в Яндекс Маркет и не только 19
Сегодня в 10:37
t.me/ru_modx
Белый экран при редактировании ресурса после копирования его в другой контекст 6
Вчера в 22:38
Если используете сниппет для отправки формы без перезагрузки страницы, то js компонента FetchIt вставляет текст ошибок внутри тега с атрибутом data-er...
Проблемы с работой FormIt не выводятся сообщения после обработки формы. 12
Вчера в 22:01
Если посмотреть за последние годы, сколько здесь было заметок о дополнениях, которые сделали не наши ребята?Это сайт русскоязычноого сообщества, тут п...
Транспортный пакет для Composer дополнений 27
Те сайты что разрабатывал я, я стараюсь скрыть такого вида кнопки и вообще удаляю виджеты с главной страницы админки. Но есть сайты, которые пришли недавно и разработаны другими разработчиками и там я не успел «почистить».
Изначально у меня не появлялась кнопка подгрузки.
Я использую синтаксис шаблонизатора fenom всегда. Потом взял переписал на синтаксисе стандартного шаблонизатора и кнопка появилась. Но При клике на нее тоже ничего не происходило, причем никаких запросов не отображалось в консоли.
Только после того как я тупо скопировал кусок кода вызова сниппета из документации, тогда заработало.
Но все равно, использование pdoMenu имеет один существенный минус (на мой взгляд)
он требует дополнительную обертку, которой в верстке проекта может и не быть.
Мало того что сами результаты должны иметь обертку с классом rows (если не переопределять), так еще нужна и дополнительная обертка #pdopage.
Раньше это не было так критично, всегда можно было без проблем добавить в верстку лишний div и ничего не ломалось, но сейчас, когда современная верстка перешла на css-grid и flexbox оборачивание данных в дополнительный див может полностью ломать верстку страницы.
Вы используете на одной странице несколько раз вызов pdoPage и с кнопкой для подгрузки ресурсов по кнопке.
В самом начале в тексте этого поста вы пишите, что нажимаете на одну кнопку, а ресурсы подгружаются сразу во все блоки, так?
Вам предложили несколько вариантов решения
— Баха пишет вам, что нужно просто для каждого вызова pdoMenu указывать свой уникальный идентификатор и плюс прописывать все остальные параметры сниппета
с учетом этого идентификатора.
Вы проверили этот вариант?
Я написал вам вариант, как сделать подгрузку данных по нажатию кнопки, не используя pdoPage. Сразу скажу что это не готовый код, который можно скопировать, это фрагмент моего сайта, под ваши условия его нужно немного доработать. Просто вникните в сам код и он поможет решить вашу задачу.
Смотрите с чем столкнулся я касательно яндекса.
Покупаем на той самой бирже о которой вы говорите аккаунт. На нем к примеру 5000 лимитов и при покупке мы указали ip адрес сервера, с которого будем слать запросы яндексу. Получаем токен для подключение.
На этом сервере работает мое программное обеспечение (там много всего, включая построитель очереди задач на сутки в редис и прочее), но суть сбора данных с яндекса заключается в отправке запросов на определенный url яндекса (передаем фразу которую ищем, регион, токен и прочее если нужно) и получение в формате xml результатов. Парсю этот xml и нахожу на какой позиции находится (если находится) домен, статистику для которого я снимаю.
Так вот. Яндекс во первых вводит ограничения на то, сколько мы можем использовать лимитов в час (ночью больше, а днем на час дается очень мало) и плюс ограничивает частоту запросов С ОДНОГО IP. Если пытаешься отсылать запросы чаще чем… ну к примеру раз в секунду, то яндекс временно тебя отключит.
И исходя из этого возникают проблемы.
Первая — купили мы на бирже аккаунт на 5000 лимитов, а что если у нас запросов наши сеошники набросали 24 000 штук. Мы физически не можем за сутки их обработать, потому что в идеальном варианте (если нигде ничего не сбоило) у нас всего 5000 лимитов. Вроде бы логично иметь несколько аккаунтов (купленных на бирже или же своих) и если на одном закончились лимиты, просто переключиться на другой. И изначально такую систему балансировки между несколькими аккаунтами я и разработал. Но оказалось что яндекс не позволяет иметь два аккаунта, которые работают с одного IP. Тоесть вы не можете на бирже купить один акаунт и указать 123.123.123.123 и купить второй аккаунт и указать такой же IP.
Один аккаунт = один IP и именно это я имел ввиду под «ограничением на один IP»
Я по прежнему не понимаю о каком прокси все говорят и как он может отправлять запросы с одного сервера но при этом чтобы все запросы шли с разных IP (причем не случайных, а заранее определенных IP)
Мне кажется это называется не прокси, а VPN.
Я же понимаю проксирование как например работает nginx. Он может принять запрос слушая определенный порт, проанализировать его и понять куда его направить. Но как он может отправить первый запрос на яндекс с одного IP а другой — с другого. а третий снова с первого — не понимаю.
Разве что где то в сети интернет стоят сервера, суть которых просто принять запрос и в таком же виде передать его…
Ну в общем пока я не пойму теорию, я не моги понять о чем речь, нельзя же просто так сказать — тебе поможет прокси) Это все равно что раненому больному сказать — тебе поможет скальпель. Оно вроде как и логично, но без теории проведения хирургических операций — скальпель не поможет.
Поэтому буду благодарен за ссылки где изучить, что такое — прокси, о котором все говорят)
Но и кстати, я так понимаю что это тоже чей то чужой платный сервис и если он перестал рабоать — то мой сервис тоже лег? В таком случае содержать свои vps ки мне кажется более правильным, я моги следить за ними, администрировать. И что важно — регулировать их количество в зависимости от нагрузки на систему. К примеру в этом месяце сешники хотят в день снимать 50 000 запросов, я могу просчитать сколько серверов мне для этого нужно и за 20 минут установить на них убунту, свое программное обеспечение и они сразу включаться в работу. Если нагрузка упала — я пошел их удалил и не платим за них.
Во первых я когда то несколько лет назад, когда только столкнулся впервые с modx и с такой проблемой в работе pdoPage, я общался с Василием Наумкиным и он сказал, что нормального решения нет, можно там как то сбрасывать какие-то хеши… Для меня это было и есть темный лес. Хорошо если решение этого пофиксили, правда в документации мне не попадалось описание.
Во вторых, я очень люблю что то писать сам, а не пользоваться чужим кодом. Когда говорят мол иди изучи как там в сниппете сделано, это всегда скучно и ты зажат рамками чужой идеи. Я же почти всегда могу придумать свою идею и именно за это я обожаю программирование, за возможность каждый день строит свои мир.
Обычно отказываюсь от использования pdoPage и придумываю что-то сам.
Вот недавно делал такое.
В шаблоне
на ссылке при клике по которой идет загрузке висят два дата атрибута. С идентификатором родителя и с числом, по сколько данных подгружать.
Есть javascript
Он навешивает функцию на событие click, собирает данные о родителе, сколько загружать и высчитывает, а сколько данных уже отображено на странице, чтобы создать offset
И есть php файл
К этому скрипту отправляет запрос javascript и получает назад html нужных элементов которые потом подставляются на страницу.
Такой способ позволяет на странице иметь сколько угодно блоков, потому что каждый из них имеет свой уникальный идентификатор, в которые информация будет погружать отдельно.
Я помню, как изучив учебник php, я открыл код modx и ужаснулся. Какие -то квадратные скобки, какие то чанки, код хранится непосредственно в базе данных — ничего этого в учебнике не было и это неимоверно сбивало с толку.
Ну и плюс, лично из моего опыта, единственный способ действительно понять, как что то работает — это разобрать это по винтикам.
В случае с программированием это означает, что я открываю текст программ в редакторе, который умеет индексировать код (это vscode, netbeans, phpstorm) открываю index.php и начинаю пошагово и построчно изучать код, пока не пойму что делает каждая точка и запятая.
Не могу пользоваться allposition или ему подобными, поскольку задача от руководство стоит так «разработать сервис статистики для нашей компании, который будет независим от других сервисов».
В случае с яндекс я пользуюсь yandex XML. Для обхода ограничений на запросы с одного IP разработал кластерную архитектуру приложения, где к программе можно добавлять дешевые виртуальные сервера и запросы на яндекс идут с их IP.
Похоже, парсить выдачу google — это единственный вариант.
Роман, к своему стыду я не совсем понимаю фразу «купить прокси чтобы парсить». Не понимаю саму технологию процесса, можете дать ссылку почитать как это работает?
Я подозреваю, что гугл, если напрямую быстро отсылать get запросы на сайт и парсить html быстро заблокирует мой IP или включит каптчу. Но не понимаю как использование прокси может это решить, ведь это не позволит на одном сервере иметь 10 IP адресов, чтобы отсылать запросы каждый раз с разного IP и не быть забаненым?
наверное условия можно переписать короче, но во первых так нагляднее, а во вторых — я ненавижу тернарный оператор)
2. Вы наверное не так поняли Артура. Это очень плохая практика, когда у каждой услуги (товаре или что там еще) создается своя форма при помощи ajaxform. А если их будет 1000? 1000 раз будете на одной странице запускать сниппет ajaxform? Более экономично и разумно, иметь один вызов ajaxform где то в футере, он реализует одну форму. А дополнительно на js вы пишите просто скрипт который при клике на кнопку берет данные конкретно той вакансии, по которой кликнули и вставляет данные в ту форму, которая у вас в футере. И открывает модальное окно с этой формой. Тогда имея всего одну форму вы сможете сделать заказ любой вакансии, потому что данные в форме будут заполнены при клике и будут каждый раз разные.
Вы можете написать свою функцию, указав ее в качестве функции обратного вызова при событии pdopage_load
Ваша функция может получить количество карточек товаров (услуг или чего вы там выводите) и вставить это число в нужное вам место страницы.
Таким образом у вас общее число будет браться с [[+page.total]] а реальное количество на странице динамически подставляться через javascript
готовых решений наверняка нет.
Вы можете или разработать этот функционал самостоятельно или же оставить запрос на платную разработку
modx.pro/work
По сути использование const не дает никакой выгоды перед let, как это например наблюдается в других языках, где если объявляется константа, то под нее в памяти резервируется минимально необходимое количество байт.
В javascript использование const не более чем попытка пойти по модному течению «сейчас в моде снова языки строгой типизации». Раньше был турбо паскаль, фортран, позже с++, джава в которых нельзя было обьявить переменную не указав точно тип данных, которые мы планируем в ней хранить.
int var x = 5;
Потом мода менялась и стали говорить мол, вот вам новые языки, здесь не нужно думать о типе переменной, творите что хотите, теперь вы свободны и появились php, javascript и прочее.
Сейчас же (лично по моим наблюдениям) новый виток спирали — снова в моду входит строгая типизация. Javascript разрабатывает typescript, php вводит typehinting, позволяет указывать что должна вернуть функция, в общем становится очень похож на с++.
И const в javascript (на мой взгляд) не более чем баловство, ведь работает это только на примитивных данных, а для ссылочных типов данных работает некорректно, тоесть позволяет мутировать объект. Поэтому мне кажется, кому нужна строгая типизация тот пойдет писать на typescript, а остальным без разницы let или const, хотя может я и ошибаюсь.
Честь и хвала Артуру, что ему хватает нервов и времени попытаться разобраться и найти хоть крупицу логики, написать вам ответ. А потом вы вдруг все переворачиваете с ног на голову, говоря про админку.
Если бы вы описали задачу кратко, но полностью — вероятность что вам бы помогли была бы больше.
Артур вам правильно написал, formit это лишь программа для отправки форм, а форма передает информацию, данные, а не теги. Есть множество способов передать данные в форму. К примеру используя возможности javascript работать с DOM деревом, как описал Артут. Либо можно просто информацию которую лежит у вас в теге p продублировать уже в виде тега input type=hidden value=название категории name=categoryName
Если этот тег будет размешен внутри формы, то название категории отправится.
Если вы хотите чтобы отправляемые пользователем данные просто сохранялись в админке, то ознакомьтесь с документацией на formit
docs.modx.com/current/en/extras/formit/index
и особенно
docs.modx.com/current/en/extras/formit/formit.hooks/formitsaveform