cityFields. Города, информация и цены для каждого

Представляю вам небольшой полезный компонент под названием cityFields. На данный момент его возможности скромны:
  1. Добавление списка городов.
  2. Добавление уникальной информации для каждого города.
  3. Управление ценами товаров miniShop2 для каждого города.

Список городов и управление им

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



Для вывода списка городов с возможностью переключаться между ними достаточно просто вызвать сниппет:
[[!cfCities]]

Уникальная информация для каждого города

На той же странице находится вкладка «Данные» для управления информацией для каждого города. Для вывода уникальной информации в компоненте используются несколько методов.



Во-первых, по умолчанию включена запись полей в плейсхолдеры, которые имеют префикс. И для вывода информации достаточно добавить в ваши чанки или шаблоны необходимый плейсходер, но главное — вызвать его не кешируемым. Например, так:
[[!+cf.phone]]

Во-вторых, плейсхолдеры записываются при загрузке страницы, что может тормозить систему в некоторых случаях. Поэтому я добавил возможность отключить запись полей в плейсхолдеры. В этом случае для вывода информации для каждого города нужно вызвать сниппет cfField с нужным ключом:
[[!cfField ?&key=`phone`]]

Управление ценами товаров

Для управления ценами на странице редактирования товара добавляется новая вкладка «Город — Цена». В ней вы найдете таблицу, где сможете указывать цену товара в зависимости от города. Если для какого-то города цена не указана, то будет браться его цена по умолчанию.



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

Документация к дополнению готовится. Само дополнение уже доступно в магазине modStore.pro и купить его можно всего за 390 рублей.
Сергей Фещуков
19 марта 2016, 14:17
modx.pro
5
11 900
+5
Поблагодарить автора Отправить деньги

Комментарии: 92

Владимир
19 марта 2016, 19:02
0
Доброго дня!
Добавление списка городов
— с геолокацией или нет?
    Сергей Фещуков
    19 марта 2016, 19:04
    0
    Пока нет. В ближайшее время появится определение города по ip.
      Владимир
      19 марта 2016, 21:11
      +1
      Мне кажется, что в компоненте GeoLocation уже есть заявленные вами функции. Вы их сравнивали?
      Сравните, интересно. Ваш опробовать на тестовом сайте в modhost.pro можно? (не увидел возможности добавить его к тестированию).
        Павел Гвоздь
        19 марта 2016, 23:34
        0
        Почитал о GeoLocation, да вроде оно. Ждём ответа автора. Может мы что-то упускаем…
          Сергей Фещуков
          20 марта 2016, 07:28
          +1
          Когда делал и выкладывал компонент, не знал, что существует подобный. Но есть отличия наших компонентов:
          1. В моём можно добавлять любые данные, а не только какие-то определённые.
          2. В моём можно изменять цены товаров для различных городов.
          3. Планируется сделать определение выбранного города и работу компонента по ссылкам и доменам. То есть, при переходе по ссылке moscow.site.ru или site.ru/moscow/ будет выбран город Москва и выводится данные, добавленные для этого города.

          Я не знаю как сделать так, чтобы на тестовом сервере можно было устанавливать мои компоненты.
            Андрей
            20 марта 2016, 13:12
            0
            Планируется сделать определение выбранного города и работу компонента по ссылкам и доменам. То есть, при переходе по ссылке moscow.site.ru или site.ru/moscow/ будет выбран город Москва и выводится данные, добавленные для этого города.
            Правильно ли я понимаю, что это позволит по сути сделать мультисайт. Поддоменов будет несколько к примеру, но всё будет лежать на основном сайте с настроенными данными по городам?
              Сергей Фещуков
              21 марта 2016, 13:57
              0
              Да. Естественно, без дополнительной настройки сервера и самого сайта не обойдётся.
              Евгений Webinmd
              04 августа 2016, 10:01
              0
              когда планируете сделать «определение выбранного города и работу компонента по ссылкам и доменам»?
                Павел
                30 сентября 2016, 12:40
                0
                Тоже интересуюсь этим вопросом
        lexikon
        24 августа 2016, 11:42
        +1
        Сергей, а как можно вшиться в процесс определения города? Я хотел бы прикрутить геолокацию по яндекс картам(API), а потом использовать в коде текущий ID города где необходимо.
        О процессе определения в описании ни слова, так же ни слова об этом нигде:
        Планируется сделать определение выбранного города и работу компонента по ссылкам и доменам. То есть, при переходе по ссылке moscow.site.ru или site.ru/moscow/ будет выбран город Москва и выводится данные, добавленные для этого города.
        Купил плагин, прикрутил — всё отлично работает… Связал с магазинами через MIGX — короче плагин то что нужно! но с учетом того, что он платный, хотелось бы более «полированного» плагина) К примеру не хватает группировки по городам в Данных, более удобной фильтрации.

        PS
        GeoLocation в проекте не совсем подходит да и геолокация в рамках только активных списков городов — бред(
          Сергей Фещуков
          27 сентября 2016, 09:54
          0
          На текущем этапе вы можете нельзя внедряться в процесс определения города. Но я подумаю как можно решить этот вопрос. Прикручивать свои сервисы для определения города было бы совсем неплохо.

          К примеру не хватает группировки по городам в Данных, более удобной фильтрации.
          Об этом я совсем не подумал. Спасибо за совет, реализую этот функционал в ближайшем обновлении.
            lexikon
            27 сентября 2016, 11:05
            0
            Сергей, спасибо!
            На данный момент у меня реализован странный функционал на сайте)
            Процесс определения города происходит благодаря cityFields, но при подгрузке яндекс API, происходит его замена со всеми необходимыми данными. Если пользователь нажал «Да это мой город» — все гео данные яндекса сохраняются в сессию(кстати не помешало бы из базы SxGeo получать все данные которые возможно определить). Если же пользователь нажимает «Другой город» — то открываем модальное окно со строчкой для поиска города и списком городов CityFields, к строчке привязан kladr API и при выборе города подтягивается еще больше гео данных о местоположении пользователя. Пример в лс могу кинуть
              lexikon
              27 сентября 2016, 11:21
              0
              короче если то процесс определения происходит по sxgeo + yandex api + kladr
          Денис
          15 сентября 2016, 12:50
          0
          Добрый день!
          Реализует ли данный модуль следующий функционал?

          1. Страница контакты должна иметь разный контент в зависимости от города
          2. Доставка оформляется только в города присутствия, выбирается из списка, желательно, чтобы активным сразу был пункт текущего города
          3. В подвале и шапке будут чанки с контактной информацией, информация должна меняться в зависимости от выбранного города

          Также хотелось бы узнать реализован ли функционал о котором писали 20 марта: а конкретно
          То есть, при переходе по ссылке moscow.site.ru или site.ru/moscow/ будет выбран город Москва и выводится данные, добавленные для этого города.
            Сергей Фещуков
            27 сентября 2016, 09:49
            0
            Добрый день. Да, этот функционал возможно реализовать с помощью моего компонента. Для этого просто добавляйте данные в соответствующей вкладке на странице компонента и выводите её в контенте страницы контактов и в подвале/шапке страниц.

            2. Доставка оформляется только в города присутствия, выбирается из списка, желательно, чтобы активным сразу был пункт текущего города
            Для этого просто вызовите сниппет cfCities с нужным оформлением и без добавления JS функций. Типа такого:
            [[!cfCities? &frontend_js=`` &tplWrapper=`msOrder.city` &tpl=`msOrder.city.row`]]
            В чанк msOrder.city вставьте:
            <select name="city">[[+rows]]</select>
            В чанк msOrder.city.row вставьте:
            <option value="[[+id]]"[[+selected]]>[[+name]]</option>
            И сделайте обработку поля city в своём заказе. Чанки подгоняете под свои стили и готово.

            Также хотелось бы узнать реализован ли функционал о котором писали 20 марта
            К сожалению, ещё нет. Сейчас решается вопрос о том, как лучше его реализовать, чтобы со стороны пользователя компонента было меньше мороки и меньше необходимости вносить какие-то свои дополнительные правки, чтобы полностью реализовать решение.
              lexikon
              27 сентября 2016, 11:17
              0
              К сожалению, ещё нет. Сейчас решается вопрос о том, как лучше его реализовать, чтобы со стороны пользователя компонента было меньше мороки и меньше необходимости вносить какие-то свои дополнительные правки, чтобы полностью реализовать решение.
              а это решение позволит для каждого города управлять еще ресурсами? будет реализовано через контексты?
              когда я нахожусь к примеру на странице moscow.site.ru в разделе блог, я бы хотел видеть другие записи в блоге, чем люди из Санкт-Петербурга. Если да — то будет отличный компонент на перспективу для реализации мультирегиональности сайта.
                Сергей Фещуков
                30 сентября 2016, 14:11
                0
                Нет, это решение не будет реализовано через контексты. Через контексты и без этого дополнения можно сделать города.
                  Dmitry
                  10 октября 2016, 13:15
                  0
                  Сергей, Добрый день, скажите, с помощью вашего дополнения можно ли как-то реализовать следующее:
                  Выводить разные товары для разных городов, не только цену. К примеру в Москве показывать одни товары, в Липецке — другие.
                    Сергей Фещуков
                    10 октября 2016, 13:25
                    0
                    Здравствуйте. Теоретически, возможно. Например, если выставить для города цену 0 или вообще не выставлять цену для города. А при выводе товаров присоединить таблицу с данными компонента cityFields и искать все товары, у которых цена для города есть и выше 0.
            Андрей
            18 декабря 2016, 12:51
            0
            День добрый. Необходимо реализовать следующее: в зависимости от города во всех текстах сайта выводить нужный город или регион.
            Например выбрал я Москва — и везде тексты у меня про Москву и Московскую область. Выбрал и Тверь — везде все про Тверь. ну и конечно сами контакты менять.
            Это можно сделать с помощью данного компонента?
              Сергей Фещуков
              18 декабря 2016, 17:10
              0
              Добрый день. Если я правильно понял ваши задачи, то это можно сделать с помощью данного компонента. Но полностью поменять контент страницы этим компонентом не получится. Он позволяет создавать свои плейсхолдеры, в которые можно записывать нужный вам текст для каждого города, и использовать их на сайте.
                Андрей
                26 декабря 2016, 18:47
                0
                Добрый день. А есть ли возможность развернуть тестовый сайт с компонентом, чтобы я смог попробовать подойдет ли он мне полностью для решения моей задачи?
                  Сергей Фещуков
                  26 декабря 2016, 18:49
                  0
                  Тестовый сайт с данным компонентом есть, пройдите по этой ссылке. Можно посмотреть как на фронтенде это работает.
                    Андрей
                    26 декабря 2016, 18:53
                    0
                    Вопрос из области SEO — возможно не по теме, но все же. Если с помощью компонента подменять во всем сайте ему регион или город, будет ли индексироваться страницы в регионах в соответствии с подменными фразами?
                    То есть для Москвы по Москве, для Санкт-Петербурга по Питеру?
                      Эрадж Шамс
                      18 марта 2022, 13:05
                      0
                      Это скорее надо использовать поддомены, примерно как тут SEODomains , добавлять в вебмастеры и указывать региональность
              Евгений Webinmd
              27 января 2017, 01:05
              1
              0
              Добрый вечер, если позволите небольшое пожелание, предложение — сделать сортировку городов перетаскиванием в таблице или просто поле по которому можно было бы отсортировать
                Олег
                08 июня 2017, 20:12
                0
                Здравствуйте! Подскажите, пожалуйста — возможен ли импорт/экспорт цен каким-либо способом? К примеру с помощью msImportExport

                И еще вопрос: каким образом работает старая цена? Нет ли возможности добавить в карточку товара рядом с ценой старую цену?
                  Сергей Фещуков
                  09 июня 2017, 20:39
                  0
                  Импорт/экспорт цен каким-либо способом не предусмотрено из коробки.
                  Старая цена работает так: если для города установлена цена, отличная от цены по умолчанию, то в плейсхолдер old_price запишется цена по умолчанию, а в плейсхолдер price — цена для города.
                  Константин
                  09 июня 2017, 10:19
                  0
                  Добрый день)) Писал разработчику в личку, напишу и сюда, так как важный вопрос: возможна ли интеграция с модулем сравнения Comparison?
                    Сергей Фещуков
                    09 июня 2017, 20:40
                    0
                    Добрый день. Прошу прощения за долгие ответы, но сейчас у меня полная загрузка. Интеграция теоретически возможна, о чём я вам писал, но надо пробовать.
                      Константин
                      22 июня 2017, 06:21
                      0
                      Сергей, может есть способ, чтобы хотя бы текущая цена города попадала в сравнение?)
                    terlim
                    19 июня 2017, 20:59
                    0
                    Добрый день. Очень хотелось бы иметь возможность устанавливать значение цены относительно текущей. Например: плюс/минус %. И еще было бы идеально, если бы компонент имел интеграцию с msOptionPrice
                      Максим
                      03 июля 2017, 09:41
                      0
                      Доброго времени суток, подскажите есть ли возможность у компонента сменить город, но при этом оставаясь на основном домене?
                        Сергей Фещуков
                        03 июля 2017, 09:44
                        0
                        Добрый день. Да, если не включать опцию «Город в домене», домен заменяться никак не будет.
                      terlim
                      13 июля 2017, 23:16
                      0
                      Цена меняется в зависимости от выбранного города только в карточке товара, в каталоге — цена не меняется. До обновления версии minishop все работало. Это только у меня такая проблема?
                        Сергей Фещуков
                        15 июля 2017, 12:10
                        0
                        Добрый день. Я посмотрю обязательно в чём проблема. Укажите версию minishop2, пожалуйста.
                          terlim
                          15 июля 2017, 12:14
                          0
                          cityfields 1.1.3-beta
                          miniShop2 2.4.11-pl
                          pdoTools 2.9.1-pl
                        Андрей
                        16 августа 2017, 11:27
                        0
                        Скажите, а можно как-то вывести название города просто в тексте. Или для этого проще создать плейсхолдер с названием города?
                          Сергей Фещуков
                          16 августа 2017, 11:29
                          0
                          [[!+cf.current_city]]
                            Андрей
                            16 августа 2017, 11:30
                            0
                            Благодарю)
                              Андрей
                              16 августа 2017, 11:41
                              0
                              Не подскажите, почему конструкция [[!+cf.current_city:caseChanger=`&m=1&p=2`]] выдает 500 ошибку?
                                Сергей Фещуков
                                16 августа 2017, 11:48
                                0
                                Ищите ответ внутри сниппета caseChanger. Попробуйте вывести плейсхолдер без фильтров. Может сниппет ожидает другие входные данные?
                                Или ищите ответ в логах ошибок php на сервере.
                            Андрей
                            18 августа 2017, 15:02
                            0
                            Подскажите, можно ли как-то сделать свою карту сайта sitemap.xml для городов которые реализованы поддоменами?
                              Сергей Фещуков
                              21 августа 2017, 08:10
                              0
                              Я как-то создавал sitemap.xml для каждого города, но, к сожалению, не помню реализации. Я попробую снова реализовать его на демо-сайте и покажу пример как сделано
                                Сергей Фещуков
                                21 августа 2017, 09:06
                                0
                                На текущий момент сделал так:
                                [[!pdoSitemap?
                                    &cache=`0`
                                    &scheme=`-1`
                                    &tpl=`@INLINE <url>
                                <loc>{{!+cf.current_city.url}}{$url != '/' ? $url : ''}</loc>
                                <lastmod>{{+date}}</lastmod>
                                <changefreq>{{+update}}</changefreq>
                                <priority>{{+priority}}</priority>
                                </url>`
                                ]]
                                Примеры здесь:
                                demo.focusone.ru/sitemap.xml
                                surgut.demo.focusone.ru/sitemap.xml
                                nv.demo.focusone.ru/sitemap.xml
                                hanty.demo.focusone.ru/sitemap.xml
                                  Андрей
                                  21 августа 2017, 16:38
                                  0
                                  Отлично, спасибо.
                                    Андрей
                                    21 августа 2017, 17:09
                                    0
                                    Странно, сейчас проверил на одном сайте, там выхов карты сайта такой:
                                    [[pdoSitemap? scheme=`https`]]
                                    и он правильно отображает карту для поддоменов.
                                      АндрейЧ
                                      07 октября 2017, 12:22
                                      0
                                      Сергей, а подскажите, в этом варианте что такое "&scheme=`-1`"?
                                      Как сделать чтобы все товары.html выпали в карту сайта, а не только каталоги?
                                      Или так карты сайта не делаеют?
                                        Сергей Фещуков
                                        10 октября 2017, 20:18
                                        +1
                                        Из документации:
                                        The scheme indicates in what format the URL is generated.
                                        -1: (default value) URL is relative to site_url
                                        0: see http
                                        1: see https
                                        full: URL is absolute, prepended with site_url from config
                                        abs: URL is absolute, prepended with base_url from config
                                        http: URL is absolute, forced to http scheme
                                        https: URL is absolute, forced to https scheme
                                        То есть -1 означает, что все ссылки в плейсхолдере [[+url]] будут относительными, то есть, без адреса сайта.
                                        В данном варианте все страницы должны попасть в карту сайта, в том числе товары.html.
                                          АндрейЧ
                                          10 октября 2017, 21:26
                                          0
                                          Сергей, спасибо вобщем за помощь!!! ваш код карты сайта который выше — помог, отлично. Тока я вместо единиц прямо так и написал, и удалил {{!+cf.current_city.url}} а то с этой строчкой делается city.city.site.ru но не из-за компонента, а т.к. у меня все переделано было по другому сессии там и что-то подобное,

                                          вот хорошая карта получилась по каталогам, только товары не попали.
                                          [[!pdoSitemap?
                                              &cache=`0`
                                              &scheme=`http`
                                              &tpl=`@INLINE <url>
                                          <loc>{$url != '/' ? $url : ''}</loc>
                                          <lastmod>{{+date}}</lastmod>
                                          <changefreq>{{+update}}</changefreq>
                                          <priority>{{+priority}}</priority>
                                          </url>`
                                          ]]
                                    АндрейЧ
                                    07 октября 2017, 12:01
                                    0
                                    Добрый день. Кто знает как отменить редирект именно карты сайта?

                                    Яндекс редиректит карту сайта и всех поддоменов на москву…

                                    site.ru/sitemap.xml > редирект moskva.auto-grow.ru/sitemap.xml
                                    perm.site.ru/sitemap.xml > редирект moskva.auto-grow.ru/sitemap.xml
                                    и т.п., очень желаю это исправить,
                                        АндрейЧ
                                        07 октября 2017, 16:45
                                        0
                                        Изв я вас не понял, в роботс указан site.ru/sitemap.xml
                                        а робот яндекса заходит с московского айпи и видит что карты сайта всех поддоменов редиректятся сюда, на moskva.auto-grow.ru/sitemap.xml как то так, prnt.sc/guesx5

                                        Вобщем задумлся, как исключение сделать, чтобы [[!geoCity]] карту сайта не редиректил, а в остальном работал как работает (фунционал нравится)

                                        ps у меня оказывается авто-редирект ситифиелдс не в настройках включается, а вызовом этого [[!geoCity]].
                                          АндрейЧ
                                          07 октября 2017, 16:59
                                          0
                                          Поможет думаете, если так сделать?

                                          [[*id:ne=`1295`or:if=`[[*id]]`:ne=`1314`:then=`[[!geoCity]]`]]

                                          1295 и 1314 — id карт сайта
                                            Сергей Фещуков
                                            10 октября 2017, 20:26
                                            0
                                            Сниппет [[!geoCity]] не относится к компоненту cityFields. Или это вами написанный сниппет? Редирект осуществляется в классе cityFields при первоначальном определении города.

                                            У вас город по-умолчанию отличается от Москвы?
                                              АндрейЧ
                                              10 октября 2017, 21:30
                                              0
                                              Сергей, спс, зная про класс CitiFields думаю смогу разобраться
                                                АндрейЧ
                                                10 октября 2017, 21:42
                                                0
                                                Снипет не я делал.
                                                Отличается город по умолчанию — site ru
                                            Андрей
                                            01 ноября 2017, 12:29
                                            0
                                            Я указал
                                            <base href="{$_modx->getPlaceholder('cf.current_city.url')}" />
                                            И он правильно карту строит
                                            АндрейЧ
                                            08 октября 2017, 00:46
                                            0
                                            Вобщем у меня проблема не только с редиректом карты сайта, а еще и в целом, яндекс с московского айпи видит что сайт редиректится на moskva.site.ru и удаляет основной site.ru из поиска.

                                            Даже и не знаю как это решить, но очень интересно, пока просто выключил «Москва» в настройках компонента CityFields. Он у мня модифицирован, редиректы по ip не отключает, а где отключить я так и не понял))0

                                            <div class="col-xs-12 col-sm-9 no-margin">
                                                       [[!cfCities?
                                                            &tplWrapper=`cfCities.outer`
                                                            &tpl=`cfCities.row`
                                                            &selected=`1`
                                                        ]]
                                                     
                                                        
                                                        [[!setCookie:is=`0`:then=`[[!+cf.geo_city:ne=``:then=`[[!$tpl.IsYourCity]]`]]`]]
                                                        
                                                        
                                                        <div id="popover-cityfields-big" class="hidden">
                                                            <div class="row">
                                                                <div class="col-xs-12 m-b">
                                                                    [[!pdoCfField?tpl=`tpl.YourCity`]]
                                                                    <hr>
                                                                    [[!listCities?tpl=`tpl.listCities` &sortby=`name` &sortdir=`DESC`]]
                                                                </div>
                                                                
                                                            </div>
                                                        </div>
                                              Сергей Фещуков
                                              10 октября 2017, 20:27
                                              0
                                              site.ru удаляется по Московскому региону, вместо него добавляется moskva.site.ru, верно? А в других регионах вашего присутствия какие домены в поиске Яндекса?
                                                АндрейЧ
                                                10 октября 2017, 21:39
                                                0
                                                Москва.сайт.ру в порядке в индексе он и был, и все поддомены города.сайт.ру были проиндексированы нормально. Потом страницы поддоменов и основного домена массово удаляться стали — я их вовремя отследил в вебмастере, увидел что них редирект на «москву» и пока отключил. За поддержку благодарен!
                                                Андрей
                                                01 ноября 2017, 12:26
                                                0
                                                У меня была такая ботва. С ТП с разработчиком этот момент обсуждали и я ему решение говорил — нужно в качестве основного города сделать Москву, тогда робот Яндекса при обходе никуда редиректить не будет и основной сайт и индекса не будет пропадать.
                                                Ilya Ev
                                                23 октября 2017, 11:24
                                                0
                                                Добрый день. Подскажите, есть пару вопросов по дополнения

                                                1. как можно сменить город по ссылке. Например нужно для рекламы в регионе чтобы точно был верный город (без субдоменов) что-то типа site.ru/page.html?city=1

                                                2. Можно ли как-то исключить товар для определенных городов, не показывать его по условию для снипетов where или типа того.

                                                3. Как происходит авто определение города, невижу привязки созданных горовод к гео данным или выбор происходит при совпадении имени города в базе гео данных

                                                спасибо
                                                  Сергей Фещуков
                                                  23 октября 2017, 13:30
                                                  0
                                                  1. Компонент принимает только AJAX-запросы для смены города с параметрами:
                                                  cityfields_action = city/select
                                                  city = 1
                                                  Через ссылку работает только при включенной опции «Город в домене» и, соответственно, надо отправлять на соответствующий домен.

                                                  2. Надо подключить класс cfField и искать плейсхолдер
                                                  [pre]123_price[/pre]
                                                  где 123 — это ID товара. И где, например, цены для города нет, то не выводим его.

                                                  3. Авто определение идёт по IP, находится город в базе SxGeo, затем берётся название города из их базы и ищется в БД сайта город по названию.
                                                    Ilya Ev
                                                    23 октября 2017, 13:38
                                                    0
                                                    2. Надо подключить класс cfField и искать плейсхолдер
                                                    [pre]123_price[/pre]где 123 — это ID товара. И где, например, цены для города нет, то не выводим его.
                                                    Можно пример для msProducts или подобного. Не совсем понятно.

                                                    И еще один момент можно как-то ограничить список городов в выводимом select по их id (типа id=1,2,3). Порой бывает нужно показать не все города из списка а только часть, а отключать их нельзя. Разные наборы городов.
                                                      Ilya Ev
                                                      23 октября 2017, 17:51
                                                      0
                                                      Со вторым решил правкой сниппета cfCities

                                                      а вот по
                                                      Надо подключить класс cfField и искать плейсхолдер
                                                      я так понимаю надо сделать
                                                      &leftJoin=`{"Pprice":{"class":"cfField",.....}}`
                                                      Да? но где посмотреть структуру запроса, какие поля джоинить чтобы потом делать where по ним. Или я неверно понял.
                                                        Ilya Ev
                                                        24 октября 2017, 10:33
                                                        0
                                                        Пробовал как-то так
                                                        'leftJoin' => '{
                                                                        "Pprice":{"class":"cfField","on":"Pprice.city_id = 2 AND Pprice.placeholder LIKE \'[pre]78_price[/pre]\'"}
                                                                    }',
                                                        
                                                        'where' => '{"Pprice.value":"1"}'
                                                        Ничего не выходит. ( Может кто подскажет в чем ошибка?
                                                    Ilya Ev
                                                    26 октября 2017, 18:47
                                                    1
                                                    +1
                                                    в муках родился запрос, делюсь думаю будет полезно, ктото спрашивал тоже. Вроде работает
                                                    'leftJoin' => '{
                                                    
                                                    		        "Pprice" : {
                                                    
                                                    			"class" : "cfField",
                                                    
                                                    			"alias" : "Pprice",
                                                    
                                                    			"on" : "Pprice.city_id = ' ~ $_modx->getPlaceholder('cf.current_city.id') ~ ' AND Pprice.placeholder = CONCAT(\'[pre]\', msProduct.id, \'_price[/pre]\')"
                                                    		}
                                                    	}',
                                                    'select' => '{ "Pprice" : "Pprice.value" }',
                                                    'where' => '{"Pprice.value:>":"0"}'
                                                    исключает все товары города у которых не выставлены цены.

                                                    Остальное тоже решил. Кроме переключения города по ссылке без домена. Буду надеется автор добавит данную возможность в пакет.
                                                      Ilya Ev
                                                      19 ноября 2017, 17:41
                                                      0
                                                      Иногда в ошибках появляется

                                                      [2017-11-18 14:43:39] (ERROR @ /core/components/pdotools/model/pdotools/pdofetch.class.php : 171) [pdoTools] Error 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND Pprice.placeholder = CONCAT('[pre]', msProduct.id, '_price[/pre]') WHERE  ( ' at line 1
                                                      Причем когда возникает не понятно, но все работает. Может, кто сталкивался
                                                        R2m0x94 (Vasily)
                                                        20 июня 2024, 23:29
                                                        2
                                                        +1
                                                        Пока нет, но будут новости — сообщу! Спасибо за рабочий пример)
                                                        {'!mFilter2' | snippet  : [
                                                            'leftJoin' => '{
                                                                "cfFieldPrices" : {
                                                                    "class" : "cfField",
                                                                    "alias" : "cfFieldPrices",
                                                                    "on" : "cfFieldPrices.city_id = ' ~ $_modx->getPlaceholder('current_city.id') ~ ' AND cfFieldPrices.placeholder = CONCAT(\'[pre]\', msProduct.id, \'_price[/pre]\')"
                                                                }
                                                            }',
                                                            'select' => '{ "msProduct" : "*", "cfFieldPrices" : "cfFieldPrices.value AS cfprice" }'
                                                        ]}
                                                          R2m0x94 (Vasily)
                                                          20 июня 2024, 23:34
                                                          0
                                                          Да идут пару ошибок:
                                                          [2024-06-20 23:32:54] (ERROR @ /core/xpdo/xpdo.class.php : 644) /assets/components/msearch2/action.php
                                                          [2024-06-20 23:32:54] (ERROR @ /core/xpdo/xpdo.class.php : 645) Could not load class: cfField from mysql.cffield.
                                                          pdofetch.class.php: 188) [pdoTools] SELECT SQL_CALC_FOUND_ROWS
                                                          pdofetch.class.php: 189) [pdoTools] Error 42S22: Unknown column 'cfFieldPrices.value' in 'field list'
                                                            R2m0x94 (Vasily)
                                                            20 июня 2024, 23:41
                                                            0
                                                            Решается добавлением 'loadModels' => 'cityfields',
                                                            РОМАН
                                                            15 октября 2019, 09:45
                                                            0
                                                            Использую ваш вариант для фильтра, все работает. Но только при перезагрузки страницы. Как только пытаешься дополнительно отфильтровать результат в фильтре веб браузера пишет — Подходящих результатов не найдено. Но при перезагрузке страницы они появляются. В чем может быть проблема?
                                                              РОМАН
                                                              15 октября 2019, 10:52
                                                              0
                                                              [2019-10-15 10:52:03] (ERROR @ /var/www/u150978/data/www/multisite/core/components/msearch2/model/msearch2/msearch2.class.php: 1137) [mSearch2] Method «get{*resourceValues» not exists in class «mse2FiltersHandler». Could not retrieve filters from "{*resource"
                                                              [2019-10-15 10:52:25] (ERROR @ /var/www/u150978/data/www/multisite/core/components/msearch2/model/msearch2/msearch2.class.php: 1137) [mSearch2] Method «get{*resourceValues» not exists in class «mse2FiltersHandler». Could not retrieve filters from "{*resource"
                                                              [2019-10-15 10:52:25] (ERROR @ /var/www/u150978/data/www/multisite/core/xpdo/xpdo.class.php: 644) Could not load class: cfField from mysql.cffield.
                                                              [2019-10-15 10:52:25] (ERROR @ /var/www/u150978/data/www/multisite/core/components/pdotools/model/pdotools/pdofetch.class.php: 172) [pdoTools] Error 42S22: Unknown column 'Pprice.value' in 'where clause'

                                                              Вот ошибки которые выдает лог
                                                                Сергей Фещуков
                                                                15 октября 2019, 11:21
                                                                0
                                                                Попробуйте добавить в вызов сниппета аргумент loadModels=`cityfields`
                                                                  РОМАН
                                                                  15 октября 2019, 12:37
                                                                  0
                                                                  Спасибо, заработало! Еще вопрос возник, как в настройках сниппета добавить возможность включить все города в вызове модального окна?
                                                                    РОМАН
                                                                    15 октября 2019, 12:38
                                                                    0
                                                                    Кнопка — Все города
                                                                      РОМАН
                                                                      15 октября 2019, 12:57
                                                                      0
                                                                      Решил добалением города — Все города
                                                            Андрей
                                                            01 ноября 2017, 12:31
                                                            0
                                                            А подскажите, как заносить кириллические поддомены: в кодировке или прямо как есть буквами русскими? Что-то у меня поддомен кириллический 404 ошибку отдает.
                                                              v2254303
                                                              21 декабря 2017, 20:34
                                                              0
                                                              Как вынести выбор города в модальное окно?
                                                                Сергей Фещуков
                                                                22 декабря 2017, 09:24
                                                                0
                                                                К сожалению, в актуальной версии компонента данной функции нет. Необходимо перерабатывать вывод на фронт, то есть переписывать чанки. стили и js-код.
                                                                Андрей Стручков
                                                                22 декабря 2017, 14:12
                                                                0
                                                                Приветствую! Планируется ли что-то по ускорению заполнения данных для большого числа городов? Например копирование набора данных(что то типа для Москвы 4 переменные, отменить галочкой все — копировать в другой город)? Сложно ли реализовать импорт из csv?
                                                                  Андрей
                                                                  18 января 2018, 19:45
                                                                  0
                                                                  Добрый день, Андрей.
                                                                  Импорт из csv я реализовывал, могу скинуть файлы для доработки функционала. В техподдержке тишина полная, такое ощущение, что компонент более не поддерживается.
                                                                  Меня интересует вопрос, кто сталкивался с некорректной работой компонента с кириллическими доменами? С ними он не работает.
                                                                  АндрейЧ
                                                                  19 января 2018, 10:58
                                                                  0
                                                                  Сергей, доброго дня Вам. Подскажите пожалуйста, все ли нормально?

                                                                  У меня после 30-го города, данные добавляются без названия города, вот так оно выглядит в админке:



                                                                  при редактировании — вместо пустого названия города появляется правильный ID… 46





                                                                  Проблема 30-м и всеми следующими городами.
                                                                    АндрейЧ
                                                                    19 января 2018, 11:14
                                                                    0
                                                                    Дальше можно работать? такие «Данные» с свиду пустым полем города не подведут?
                                                                    АндрейЧ
                                                                    19 января 2018, 11:29
                                                                    0
                                                                    Пока так все города заполнил, проверил — работает. Просто, волнуюсть, будут ли проблем в будущем.

                                                                      Александр
                                                                      29 апреля 2018, 15:40
                                                                      0
                                                                      1) Не работает с последним msOptionsPrice2. Думаю это как-то связано с:
                                                                      2.5.2 beta (24.04.2018)
                                                                      Change «saveProductModification» [msopModification]
                                                                      Change «isWorkingClassKey, isWorkingTemplates, loadControllerJsCss» [msoptionsprice]
                                                                      2.5.1 beta (23.04.2018)
                                                                      Change «msOptionsPriceMsOnGetProductPrice,msOptionsPriceMsOnGetProductWeight,msOptionsPriceMsOnBeforeAddToCart» [msOptionsPricePlugin]
                                                                      Add «msoptionsprice_mid» [js]
                                                                      2) При установке даже на чистый MODX на демо modhost.pro не загружаются лексиконы. В меню вместо «cityFields» написано «cityfields_action». Также вместо ошибок выводятся названия лексиконов.

                                                                      3) Можно ли как-то интегрировать это решение с msOptionsPrice2? Т.е. города и информацию для городов добавлять через cityFields, а цены регулировать msOptionsPrice2?
                                                                      Например, если товар «iPhone 5» в двух цветах: красный и белый. 2 региона: Москва и Санкт-Петербург. В таком виде, как это сделано сейчас, можно лишь изменить отдельно цену для региона и отдельно цену для цвета, а если добавить как модификатор, то можно будет и для разных регионов и разных опций выставлять цену. К тому же, можно будет выставлять старую цену отдельно для каждой модификации.
                                                                        Денис
                                                                        03 июля 2019, 19:50
                                                                        0
                                                                        Добрый день подскажите, при смене города цена меняется только после очистки кеше в админе. Чистка кеша в браузере не помогает в чем может быть проблема?
                                                                          Сергей
                                                                          15 августа 2021, 10:55
                                                                          0
                                                                          Всем привет, учитывая что у компонента есть определение города по ip, как отобразить реальный город посетителя? Не выбранный [[!+cf.current_city]] а реальный?
                                                                            varanika
                                                                            03 декабря 2021, 18:01
                                                                            0
                                                                            Добрый день. А [ [!+cf.current] ] или [ [!+cf.key] ] не работают? Не могу ключ получить города.
                                                                              varanika
                                                                              06 декабря 2021, 15:51
                                                                              0
                                                                              [ [+cf.current_city.key] ]
                                                                              Нашла таки)
                                                                              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                              92