Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 128 комментариев

al1ve
al1ve
а, я думал head, body — это ошибка по сео. Но с обычным скриптом тоже генерирует свои head, body. Тогда ладно. Кстати, я находил похожий код, где нужно вводить координаты и некоторые другие параметры. их вручную как то вычислять или где то прописаны? Я про myPlacemark, к примеру.

UPD: Всё, разобрался. Спасибо большое!
Денис Усманов
Денис Усманов
И вот тут уже немного иначе надо делать отложенную подгрузку, надо эти 2 скрипта подгружать уже не на место карты, а внизу сайта, рядом с остальными скриптами, насколько это всё работает, надо проверять…
Денис Усманов
Денис Усманов
Код, представленный мной, подгружает карту Яндекс от их конструктора, но если делать по API, то там 2 скрипта нужно, первый — сам API

<script src="https://api-maps.yandex.ru/2.1/?load=package.full&lang=ru-RU" type="text/javascript"></script>

Второй, индивидуальные параметры карты, пример:

<script type="text/javascript">
    ymaps.ready(function() {
        var mapexMap = new ymaps.Map('map', {
                center: [55.721190, 52.440409],
                zoom: 16,
                controls: ['zoomControl']
            }),
        myPlacemark = new ymaps.Placemark(
            [55.721190, 52.440409], {
                "iconContent": "",
                "balloonContentBody": "423800, РТ, г.Набережные Челны, Промышленно-коммунальная зона, Индустриальный проезд, 62/21",
                "balloonContentHeader": "АО «КАМАтранссервис»"
            }, {
                // Опции.
                // Необходимо указать данный тип макета.
                iconLayout: 'default#image',
                // Своё изображение иконки метки.
                iconImageHref: '/assets/img/map-marker.png',
                // Размеры метки.
                iconImageSize: [30, 42],
                // Смещение левого верхнего угла иконки относительно
                // её "ножки" (точки привязки).
                iconImageOffset: [-5, -38]
            });
        mapexMap.behaviors.disable('scrollZoom');
        mapexMap.geoObjects.add(myPlacemark);

    });
</script>
al1ve
al1ve
ну вроде работает, но почему то создаёт на всю ширину и ненужные теги в виде html, head, body. Если что — сам сайт smnu-vos.ru. Сама карта должна быть в правом блоке. Но спасибо за подсказку.
И этот код нужно поставить вместо стандартного яндексовского?
Денис Усманов
Денис Усманов
Если правильно помню, этот скрипт подгружает карту при скролле после загрузки, если карта (как правило) внизу, то будет работать как надо.

<script>
    let ok = false;
    window.addEventListener('scroll', function() {
        if (ok === false) {
            ok = true;
            setTimeout(()=>{
                let mapScript = document.createElement('script');
                mapScript.src = 'https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A55fa9cd5f69ce35aa1eabe9bdf02db7fce18bb55c2ae44e2745b1b8b6cee9464&width=100%25&height=577&lang=ru_RU&scroll=true';
                document.getElementById('map').replaceWith(mapScript);
            }
            , 1000)
        }
    });
</script>

Где mapScript.src = '... это подключение скрипта Яндекс.Карты.
Где document.getElementById('map')… — это id элемента, в который надо загрузить карту.
Артур Шевченко
Артур Шевченко
Если на fenom то как-то так наверное
{set $cats = []}
{foreach $products as $product}
    {set $parent = $product.id | resource: 'parent'}
   {set $productsByCategory[$parent][] = $product}
{/foreach}
{foreach $productsByCategory as $parent => $products}
    {$parent | resource: 'pagetitle'}
    {foreach $products as $product}
       {$product | print}
    {/foreach}
{/foreach}
Дима Касаткин
Дима Касаткин
Вам бы, коллеги, скооперироваться чтобы список ботов (user agent-ов) общий использовать для botAim и SmartSessions)

Предлагаю, если нужно, захостить его там же, где статистика установки компонентов, в надёжной инфраструктуре одного из крупных ДЦ. Я поспособствую!

Или выпустить список в качестве отдельного пакета, который наследовать, чтобы обновлять средствами MODX.

С каждым годом всё больше и больше проблем от ботов. Ваши решения (Алексея и Андрея) очень помогают, и необходимость в них только растёт!
Наумов Алексей
Наумов Алексей
Перенесу и свой ответ тогда уж!:
пару месяцев назад я переписал это всё… сейчас по другому, в github код доступен. Можно даже PR сделать!
Интересная мысль насчет целесообразности создания сессий для ботов… в принципе может они и не нужны… как вариант можно добавить соответствующую настройку в компонент. В общем мысль сохранил.
Wassi Wassinen
Wassi Wassinen
<script>
document.addEventListener('fetchit:success', (e) => { // Добавляем listener на событие успешной обработки формы
    const { form } = e.detail; // Получаем форму

    switch (form.getAttribute('id')) {
        case 'form-1':
            // Обрабатываем только форму с id="form-1"
            // Тут код с отправкой целей
            break;
        case 'form-2':
            // Обрабатываем только форму с id="form-2"
            // Тут код с отправкой целей
            break;
    }
})
</script>

Я могу это так вставить на страницу с формами?
Баха Волков
Баха Волков
например так

document.addEventListener('fetchit:success', (e) => { // Добавляем listener на событие успешной обработки формы
    const { form } = e.detail; // Получаем форму

    switch (form.getAttribute('id')) {
        case 'form-1':
            // Обрабатываем только форму с id="form-1"
            // Тут код с отправкой целей
            break;
        case 'form-2':
            // Обрабатываем только форму с id="form-2"
            // Тут код с отправкой целей
            break;
    }
})
Андрей Степаненко
Андрей Степаненко
Перенос из modx.pro/components/24542#comment-142930

Проанализировал код

1. Во время удаления сессий выполняется N запросов, если быть точным то сколько прописано сигнатур user agent столь и будет выполнено запросов
2. Поле user_agent не индексное, то есть это будут медленные запросы



Еще хотел узнать, зачем для ботов создавать сессию?
И потом её удалять, целесообразность этого функционал не понимаю
особенно с учетом тяжести запросов в цикле
Наумов Алексей
Наумов Алексей
так если про smartSessions вопрос — то я пару месяцев назад переписал это всё… сейчас по другому, в github код доступен. Можно даже PR сделать! и да, если еще вопросы будут — давай переедем в соседнюю тему, чтобы Володю не дергать)
Андрей Степаненко
Андрей Степаненко
Проанализировал код

1. Во время удаления сессий выполняется N запросов, если быть точным то сколько прописано сигнатур user agent столь и будет выполнено запросов
2. Поле user_agent не индексное, то есть это будут медленные запросы



Еще хотел узнать, зачем для ботов создавать сессию?
И потом её удалять, целесообразность этого функционал не понимаю
особенно с учетом тяжести запросов в цикле