Алексей Шумаев

Алексей Шумаев

С нами с 01 января 1970; Место в рейтинге пользователей: #21
Алексей Шумаев
15 ноября 2019, 08:41
+1
«Тестовый» сайт сегодня занял первое место по ключевому запросу. До этого — что не делали — болтался на 2-5 странице (по объективным причинам). Но, повторюсь, для меня сео — тема мутная и что там в итоге повлияло на отдачу чёрного ящика — я не знаю ) Скорее всего все наши действия в куче.
Алексей Шумаев
13 ноября 2019, 08:24
0
Действительно нужная информация. Спасибо!
Алексей Шумаев
12 ноября 2019, 09:58
0
Виртуальная страница имеет ресурс-источник. У вас есть его id в переменной $.get.id, наверное так:
{$.get.id | url : ['sheme' => 'full']}
Пишу на ходу, если не получится — уточню попозже.
Алексей Шумаев
12 ноября 2019, 09:45
0
Не знаю. Возможно, я не понял вопрос )
Вы можете вывести любой каноникал, какой вам нужен, это не имеет отношения к работе компонента.
Предложите, как и что нужно настроить.
Алексей Шумаев
12 ноября 2019, 00:41
0
В текущем виде — нет, это не ресурсы, поэтому их нельзя просто взять и выбрать.
Хотя вариант есть ) Об этом ниже.

Вопрос с «родителем» для этих страниц нужно решить.
Я думал сделать 2 варианта:
1) можно их делать «потомками» исходной страницы или потомками родителя исходной страницы. Что логично, т.к. это по-сути синонимы этой страницы;
2) назначать им нескольких «родителей» (как мультикатегории в ms2) — тогда теоретически их можно выводить в списках товаров. Самый простой вариант — заюзать preparesnippet. В нём проверять наличие «виртуальных» страниц у данного ресурса и передавать в чанк массив с их данными. В чанке проверить на пустоту этот массив — если не пуст — foreach / рендер. В общем, есть варианты.
Алексей Шумаев
11 ноября 2019, 11:56
+1
Это проверено? На каком основании он их склеит?
Таки это совсем разные страницы (если вы замените все ключевые поля).
Однако для меня сео — нечто невнятное и нестабильное, поэтому я не спорю. Пробуйте.
У нас пока нет чёткого результата (не запустили изменения в индекс в значимом объёме + время нужно).
Алексей Шумаев
08 ноября 2019, 13:59
0
Да.
На всякий случай: не стоит пускаться во все тяжкие и запускать компонент на боевом сайте прямо сходу.
Как и любое действие, которые делается во имя сео, — тренироваться нужно на кошках.
Используйте возможности fenom'а:
// видит только авторизованный в админке
{if $_modx->hasSessionContext('mgr')}
    {'!apList' | snippet : ['elinking' => 0]}
{/if}

// только для ресурса id=5
{if 'id' | resource == 5}
    {'!apList' | snippet : ['elinking' => 0]}
{/if}
Алексей Шумаев
08 ноября 2019, 13:08
0
А это все в процессе выяснения) Коллега-сеошник занимается. Но на некоторых взлетевших ресурсах такая штука замечена.
Поэтому ожидаем результата. С т.з. поисковиков должно быть все нормально.
Надо пробовать.
Я и выложил пораньше, чтобы собрать какую-то обратную связь. Может кто-то что-то полезное подскажет — внедрим. Всем польза.
Алексей Шумаев
07 ноября 2019, 22:15
0
Хлебные пока нет, это планировал на потом, если потребуется.
URL любой можно указать. Если не указывать — сгенерит по настройкам системы.

На самом деле — это заготовка, реализация хорошей идеи на скорую руку.
Я его не очень использовал пока — сделал по просьбе товарища, пробует.
Собственно, жду обратной связи от пользователей.
Планировал развивать, насколько время позволит.
Алексей Шумаев
07 ноября 2019, 12:00
0
Ну как её увидеть? Примерно так в общих чертах, навскидку:
1. Делаем шаблончик, где запускаем сниппет.
2. Делаем страницу (некешированную), назначаем ей этот шаблон
Это и есть «контроллер» ajax-запросов с фронта.
3. На этот контроллер отправляем данные
4. В сниппете берём прямо из сессии корзину (так проще)
5. Проходим по ней foreach'ом, добавляем/обновляем нужный элемент:
в option пишем состав набора, меняем стоимость товара-набора.
6. отдаём назад json_encode с нужными данными, на фронте получаем его и отображаем, как нужно.
Собственно всё. В объекте Заказа после оформления у товара будет массив в options с составом набора.
Алексей Шумаев
07 ноября 2019, 08:31
0
Сделайте контроллер свой и на него асинхронно отдавайте данные: id товара-коробки и id товара. В контроллере заускаем сниппет. В сниппете получаем данные переданного товара, перебираем корзину и для нужного элемента (товар-коробка) добавляем данные в массив + увеличиваем цену.
[ ...,
    options => [
        kit => [
            id => xx,
            count => xx
            ]
        ]
]
Fenom позволит затем просто работать с этим массивом.

Тоже самое можно и на событие msOnBeforeAddToCart повесить — как удобно.
Свой контроллер даёт удобство использования response на фронте без расширения класса корзины.
Алексей Шумаев
31 октября 2019, 16:14
0
Да, можно как список желаний.
Алексей Шумаев
31 октября 2019, 15:58
0
Сохраняется полностью корзина, соответственно товары со всеми выбранным опциями.
Алексей Шумаев
09 октября 2019, 12:49
0
Могу посоветовать новые опции сделать плагином:
docs.modx.pro/komponentyi/minishop2/razrabotka/plaginyi-tovarov
Так будет намного быстрее работать (если товаров много) и типы полей вы определите сами.
Алексей Шумаев
27 сентября 2019, 13:14
+4
А я «за», спасибо.
Но вынести бы это в отдельный раздел (как не раз уже здесь писали) + возможно на главной выводить не в общей ленте, а где-то «сбоку» (или вкладками разделить «modx / не-modx). Сейчас, если кто впервые на сайт попадёт, может слегка не понять, к чему тут конкретно эта публикация (как и статьи про Nuxt.js, впрочем).
Алексей Шумаев
16 сентября 2019, 19:20
0
Ну вот, пожалуйста, прямо первая ссылка от гугла: modzone.ru/blog/2015/12/27/frontend-events-for-modx/
От @Сергей Шлоков

Да сделайте просто сниппет и запускайте его в шаблоне карточки товара.
Алексей Шумаев
13 сентября 2019, 17:10
+1
Этого я не помню — смотрите документацию и исходник компонента или моей старой заготовки по ссылке, сказанной мной выше.
Алексей Шумаев
13 сентября 2019, 16:50
+1
Документация, очевидно, как-то так:
$tmp = $cart->get();
foreach ($tmp as $k => $v) {
    // получаем msProduct со всеми данными
    // отправляем в гугл
}