Александр Мельник

Александр Мельник

С нами с 02 сентября 2016; Место в рейтинге пользователей: #64

Не могу получить значение placeholder. Тонкости работы парсера?

Уверен, вы мне подскажите, потому что я наверное один не понимаю всех этих тонкостей и нюансов работы различных парсеров и выставления плэйсхолдеров.
В чем проблема.
Есть шаблон, создан как статичный документ.
Вот на скрине его содержимое.

В нем вызывается сниппет (на скрине отображены сразу все варианты вызова, но конечно же я запускал их по одному)
в этом сниппете выставляется плэйсхолдер.
Смотрите скрин.

А ниже в шаблоне я пытаюсь значение получить (там тоже много вариантов написано, но я применял их по одному конечно)
Данные могу получить только через стандартный шаблонизатор, а очень хочется работать с этим плэйсхолдером через fenom, поскольку в коде будет много проверок, условий на наличие тех или иных настроек и хочется использовать ifы foreachи и прочие прелести фенома.

Есть идеи как получить плэйсхолдер в переменную fenom?
Спасибо.
Александр Мельник
30 июня 2022, 11:55
modx.pro
1 073
0

Кешируются ли файловые сниппеты?

Использую файловые элементы pdoTools, в документации написано что
Файловые сниппеты не кэшируются, но можно включить кэширование скомпилированных шаблонов Fenom, используя настройку pdotools_fenom_cache.
У меня она отключена.
Есть шаблон для ресурса, в нем
{include 'file:templates/category.tpl'}
Внутри category.tpl
{extends 'file:templates/layout.tpl'}
{block 'page'}
{'@FILE filter/filteredProducts.php'|snippet}
{/block}
Внутри filteredProducts.php
echo "hello world";
В системных настройках отключил кеширование
Александр Мельник
03 апреля 2022, 11:45
modx.pro
765
0

и снова у меня проблемы с фильтрацией чисел

Добрый вечер.
Вроде бы уже не раз набивал на этом месте шишки, но видимо не достаточно)
Есть сниппет msProducts.
У него есть параметр
optionFilters Фильтры по опциям товаров. Передаются JSON строкой, например, {"optionkey:>":10}
Есть опция, называется m2, тип число, значение у товара = 1000
Вызов сниппета, с попыткой отфильтровать товары у которых m2 > 600 ничего не выводит, поскольку сравнение значение происходит не как число, а как строка и 600 становится больше 1000.
$result =  $modx->runSnippet('msProducts',[
    'parents'=>0,
    'optionFilters'=>'{"m2:>":600}',
    'tpl'=>'@INLINE <p>[[+pagetitle]]</p>',
    'showLog'=>1
]);
Часть SQL запроса в котором видно, что 600 передается как строка в кавычках
WHERE  ( `msProduct`.`class_key` = 'msProduct' AND `Data`.`price` > '0' AND `m2`.`value` > '600' )
Я уже задавал подобный вопрос и мне любезно подсказали, что нужно смотреть в сторону sql метода CAST() для приведения строки к числу.
modx.pro/help/22471
Тогда я решил задачу другим способом, но сейчас решил все -таки попробовать CAST и честно говоря совсем не получилось.
Вот у Ильи
ilyaut.ru/cheats/sorting-on-tv-number-for-pdoresources/
есть пример
{'pdoResources' | snippet : [
  'tpl' => '@INLINE {$pagetitle} - {$price}',
  'sortby' => '{"CAST(`TVprice`.`value` AS DECIMAL(13,3))":"ASC"}',
  'includeTVs' => 'price'
]}
где в сортировке применяется CAST
Пробую у себя
Александр Мельник
31 марта 2022, 19:41
modx.pro
517
0

про viber, whatsapp и прочее

Нужны мне советы от более молодых и продвинутых коллег.
В жизни я не пользуюсь всеми этими миллионами мессенджеров и отсутствие этого опыта мешает мне сейчас как разработчику. Поэтому, если есть время — просветите меня пожалуйста.
Опишу задачу.
Есть сайт. у него есть менеджеры. Каждый менеджер регистрируется на сайте, вписывает свой номер мобильного. Сайт генерирует разные текстовые сообщения сообщения, их нужно отправить в viber и whatsapp каждому менеджеру, зная только его номер телефона. Есть условие — использование api напрямую, минуя всякие промежуточные сервисы.
1) я правильно понимаю, что
Александр Мельник
26 марта 2022, 15:03
modx.pro
705
0

google api для получения позиций в поисковой выдаче. Оно существует?

Господа и дамы, поделитесь пожалуйста, сталкивался ли кто то с возможностью получения позиции сайта по той или иной фразе в выдаче google?
Не через сторонние сервисы, а напрямую от google.
Буду благодарен за ссылку на информацию…
Александр Мельник
19 марта 2022, 20:44
modx.pro
573
0

Чем отличается переход по ссылке из письма от "скопировал, вставил, нажал enter"?

Хочу послушать мнение коллег.
Столкнулся с тем, что мое приложение ведет себя по разному, в зависимости от того, как перешли на страницу — из письма или просто вставив ссылку в браузер.
Немного подробностей.
Есть роут, который откликается на get запрос
$app->get('/c/{lang}/confirm/{hash}/',WelcomeController::class.":confirm");
При переходе на эту странице методом get происходит получение заключенного в ссылке хеша, получение пользователя и подтверждения его регистрации. Контроллер а вернее его метод, который обрабатывает этот роут имеет защиту, на случай если по хешу не удалось найти пользователя, выдает текст, что вы перешли по неверной ссылке.
Ссылка приходит пользователю в письме.
Все работает шикарно, если
Александр Мельник
02 февраля 2022, 20:14
modx.pro
410
0

Как кешировать фильтры?

Сразу хочу отметить, что речь не идет конкретно о modx и msearch2, вопрос в целом — об идеях, реализациях, опыте коллег.
Что собственно смущает.
К примеру есть страница, на которой условные товары. Есть фильтр с набором характеристик, к примеру есть
Размер
— s
— m
— x

Цвет
— белый
— черный
— красный

Бренд
— 1
— 2
-3
Какие варианты работы фильтра я вижу:
1) Вариант без кеширования. Любое изменение фильтра вызывает запрос на сервер, который вернет данные, соответствующие фильтру.
2) Кеширование первым пользователем. Когда пользователь что то выбрал в фильтре, отправляется запрос, получаются данные, кешируются. Когда этот же иди другой пользователь накликает в фильтре такую же комбинацию, данные будут отданы из кеша.
3) Полное предварительное кеширование. Кеш всех комбинаций фильтра готовиться заранее и даже первый клиент получает уже ответ из кеша.

Какие проблемы и недопонимания эти варианты вызывают:
1) С первым все более менее понятно. Будет работать, но если количество характеристик постоянно растет (на некоторых проектах у меня менеджеры вывели в фильтр уже 170 типов характеристик и у каждого типа не менее 10 значений) то «тормоза» неизбежны, как ты не оптимизируй и не используй индексы в базе.
2) Второй вариант лично мне кажется бесперспективным. Хотя по моему именно так кешируются большинство фильтров.
Александр Мельник
26 января 2022, 10:10
modx.pro
427
0

непроходимая reCaptchaV3

Понимаю, что дело не в компоненте, а во мне, но тем не менее.
Вчера закончил разработку нового сайта, через минуту после его переноса на production мне на почту начал валить спам. Самым первым шагом я (как и всегда) пошел устанавливать компонент reCaptchaV3.
Установил (ключи гугла получил, в формы вызов сниппета добавил, в ajaxform хук rcv3 прописал, у каждой формы задал свой уникальный rcv3Action)
И все. Ни одну форму отправить не могу, всегда ошибка — вы не прошли каптчу.
Думал дело во мне (из Украины приходится работать через vpn и это часто приносит проблемы)
Попросил коллег в России проверить — нет. Никто вообще не может пройти каптчу.
Толи придумываю, толи раньше была в системных настройках
Александр Мельник
29 декабря 2021, 12:13
modx.pro
356
0

Кто и как борется со спамом?

Нужен совет.
Кто и как борется со спамом на email в modx при использовании ajaxform и formit?
Или даже без привязки к modx а просто, какие действенные способы борьбы вы знаете?

У меня много сайтов на modx и везде установлена recaptcha 3 версии и плюс проверка того, что скрытый input в форме остается пустым. Но спам все равно идет и не мало. За день с каждого сайта может приходить до 50 спам-писем. Заметил, что спам на сайтах становится сильнее, если наши СЕО специалисты начинаю продвигать проект, потом спадает, затем снова усиливается, и только на совсем забытых и заброшенных проектах он отсутствует совсем (как впрочем и обращения от людей).
Есть около 10 ка сайтов на битриксе — там тоже самое, никакие встроенные
Александр Мельник
27 декабря 2021, 15:52
modx.pro
5
1 699
0

AjaxForm изменен формат response?

При работе с ajaxform часто использую событие af_complete, на которое можно подписаться и например отправить инфу в яндекс метрику об успешной отправке формы или же просто закрыть модальное окно.
Элемент формы можно было получить так
const form = response.form
Сегодня обнаружил, что свойство form у response перестало указывать на конкретную форму, теперь это список форм, объект у которого есть нумерованные ключи и теперь нельзя получить форму таким же образом, нужно обращаться к нулевому индексу.


Это временный глюк? Или так всегда и было и это меня глючит? Получается если я нажму обновить ajaxform на всех своих сайтах, у меня придет в нерабочее состояние отправка целей в метрику, закрытие модальных форм.
Александр Мельник
16 декабря 2021, 10:32
modx.pro
1 057
0