Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Сайт на DIAFAN.CMS Программирование на DIAFAN.CMS Несколько городов на сайте - раздельная информация


Максим (web-prosto) 2312 апреля 2016 г., редакция 12 апреля 2016 г.

Всем привет! Кто-нибудь реализовывал сайт на несколько городов? Хотелось бы увидеть примеры уже рабочих сайтов, ну или как это вообще делали (сам принцип).

На сайте будут разделы общие для всех городов и раздельные. Например, О компании, Отзывы, Партнеры будут общие для всех городов. Каталог, Новости, Галерея и т.п. будут раздельные, т.е. разная информация для разных городов.

Первое, что пришло на ум – сделать на разных поддоменах, т.е. получается каждый город это отдельный сайт с отдельной админкой. Но тогда общую информацию придется просто дублировать на всех сайтах (городах). И соответственно адреса для городов будут вида:
moscow.site.ru
spb.site.ru
kazan.site.ru
и т.д.

Вторая мысль – это сделать по что-то подобное на «Языки сайта». Удобно тем, что админка одна, просто вверху где сейчас язык переключается – будут названия городов, нажав на нужный будет отображаться информация этого города. Ну и соответственно адреса для городов будут вида:
site.ru/moscow/…
site.ru/spb/…
site.ru/kazan/…
и т.д.

Какой из этих способов более правильный и грамотный, или есть более интересные варианты?

Максим (web-prosto) 2312 апреля 2016 г.

Хотя по второму варианту - тот принцип как этот модуль сделан, наверное не пойдет. Т.к. создав страницу или товар или другой элемент в модуле на одном языке (городе) он появляется, но не активный и в других городах. Это еще терпимо для страниц, но если каталоги разные для разных городов, то тут уже будет неразбериха.

Виталий NVGPRO (DIAFAN.CMS) 33412 апреля 2016 г., редакция 12 апреля 2016 г.

Всё лучшее состоит из простых вещей. Чем сложнее система, тем выше вероятность ошибок.
И так, если у Вас ассортимент для каждого города разный, то Вы можете создать несколько модулей "Интернет-магазин", т.е. свой для каждого города. А, например, по ip определять вероятное местоположения. Cookie использовать, чтобы запомнить выбор пользователя о месте его нахождения. Соответственно отображать для пользователя нужный модуль "Интернет-магазин".
Если ассортимент не такой уж и разный, то в характеристиках можно создать характеристику "Список с выбором нескольких значений", где перечислить требуемые города (можно определить такую характеристику, как влияющую на цену, чтобы иметь возможность увеличивать или уменьшать цену в зависимости от города). Далее, также отрабатывать по ip с использованием cookie. Т.е. фильтруем товар по характеристике. Опять же поиск можно организовать интересный по городам, дизайн сайта под каждый город и т.д. В общем вариантов много ...
Успехов.

Максим (web-prosto) 2313 апреля 2016 г.

Виталий, спасибо за вариант, идею! А вы уже подобное реализовывали? есть пример?

Виталий NVGPRO (DIAFAN.CMS) 33413 апреля 2016 г.

На cms.diafan не делал, т.к. не было такого заказа.

Максим (web-prosto) 2302 сентября 2018 г.

Создавал данную тему очень давно, НО в итоге так и не дошли до реализации этой задачи. Теперь она появилась снова ).

Не прошу её решить, а прошу поделиться опытом, если у кого есть, или мыслями… идеями. Задача подобная, но чуть конкретней:

Интернет-магазин на несколько городов. По умолчанию будет основной город ЕКБ и адрес будет типа site.ru. Другие города будут на поддоменах, например: gorod1.site.ru ... gorod2.site.ru … gorod3.site.ru и т.д.
Т.е. по сути как бы разные сайты для каждого города - РАЗНЫЙ контент (новости, доставка, контакты, статьи … да всё подряд) и КАТАЛОГ в том числе, ну и СЕО!

КАТАЛОГ у каждого города свой - т.е. в 1С для каждого города своя БД будет и будет синхронизация на каждый сайт (город) отдельная. Т.е. будут и позиции отличаться, и цены, и характеристики возможно и т.д. - в общем независимые друг от друга.

Далее раскидываем копии сайтов на необходимые поддомены для городов . И организовываем определение по IP подходящего города и переключение городов, с помощью cookie запоминать выбор.

!!!Вот теперь по поводу КРОССДОМЕННОСТИ для Регистрации пользователей, Личного кабинета и Заказов - тут вот и «соображалка пока не соображает» как поступить и сделать, т.к. опыта нет ещё и вот какие МЫСЛИ:

Вариант 1: БЕЗ кроссдоменности – ну тут всё понятно… разные параллельные сайты, всё независимое, только определение и переключение между городами сделать.

Вариант 2: Кроссдоменность для Регистрации пользователей, ЛК и Заказов:
Без разницы где зарегистрировался пользователь (на основном сайте или каком-то поддомене) - он может войти под тем же логином в любом из городов. И соответственно при переключении городов остаётся авторизированным. Переключаясь между городами - состав корзина не меняется... сохраняется… дополняется. В личном кабинете история и состав заказов общий на все города.
Т.е. БД у городов разные, а вот данные ПОЛЬЗОВАТЕЛЕЙ и ЗАКАЗОВ должны быть общие или дублироваться как то.

Данный вариант был бы ИДЕАЛЕН для удобства клиентов, НО - КАТАЛОГИ то разные (и БД тоже), т.е. в них разные товары могут быть и цены тоже. Например, вот такие ситуации:
На ОСНОВНОМ домене мы положили в корзину товар "ТОВАР1" по цене 250 рублей. Потом перешли поддомен gorod2.site.ru - а на нём у этого товара цена 260 рублей! Что тогда?
ИЛИ, например, на ОСНОВНОМ домене мы положили в корзину товар " ТОВАР1", а на gorod2surgut.site.ru этого товара вообще нет! Тогда как быть? … и так много моментов!

ПОЭТОМУ думаем над Вариантом 3!
Вариант 3: Кроссдоменность только для Регистрации пользователей, ЛК:
РЕГИСТРАЦИЯ и АВТОРИЗАЦИЯ пользователей должна быть общая или параллельная/дублирующая, а Корзина и заказы уже отдельное всё по городам.
1) ЕСЛИ клиент зарегистрировался на основном домене или на любом поддомене, то он автоматом регистрируется и на всех остальных поддоменах и основном домене. Как бы параллельно в остальные БД в соответствующие таблицы вносит дубликаты записей пользователей или как-то общее это сделать.
2) АВТОРИЗАЦИЯ – если залогинился на одном сайте, то и автоматом должен залогинится на остальных сайтах. Тоже не знаю насколько возможно это… может какими-то скриптам или запросами это делать при авторизации.
3) РЕДАКТИРОВАНИЕ ПРОФИЛЯ – если на одном из сайтов поменять какие-то свои данные в профиле, то они параллельно сохраняются и в других домена/поддоменах.
4) КОРЗИНА – тут уже всё РАЗДЕЛЬНОЕ (НЕ кроссдоменное)! Для каждого города КОРЗИНА своя… , т.е. перейдя на другой город содержимое корзины НЕ перенесется!
Просто сделать, чтобы при переключении города, если клиент уже что-то положил в корзину - УВЕДОМЛЯТЬ клиента, что «перейдя на другой город содержимое корзины НЕ перенесется! А останется в том городе».
5) ЛИЧНЫЙ КАБИНЕТ и ИСТОРИЯ ЗАКАЗОВ. В личном кабинете в истории заказов отображать заказы только для текущего города, и там же разместить кнопки или ссылки "Ваши заказы в других городах: Город1 Город2 Город3" и просто по ссылкам переходят в личный кабинет другого соответствующего поддомена в историю заказов сразу… и там уже соответствующие городу заказы, если есть они.


================
Возможен ли вообще Вариант 3? Или это бредовая мысль? ) В общем прошу не кидаться камнями, а подсказать ))

Александра (Alexa0105) 20102 сентября 2018 г.

Ммм.. Ну мысля такая: делаете сайты на поддоменах, независимые друг от друга в принципе, раз у вас все там разное будет.
Далее подключаете фиговину для определения города пользователя.
Вылезает табличка: вы из города1? Правильно?
Пользователь тычет "ага" и попадает на нужный сайт.
Либо говорит нет и тогда ему предлагают список городов (типа к которому вы ближе).

Остается только под "ага" и список городов подсунуть нужные ссылки.

Типа того.

Максим (web-prosto) 2302 сентября 2018 г.

Александра, спасибо за ответ:) Но тут вопрос не о переключении городов - это всё понятно как сделать... а именно про Кроссдоменность, т.е. регистрация и авторизация пользователей сразу на всех городах...

Александра (Alexa0105) 20102 сентября 2018 г.

А. Извиняюсь тогда. Это, видимо, к сотрудникам диафана лучше вопрос: здесь-то регистрация и авторизация сразу на всех поддоменах сделана. Но, видимо, база единая.

Максим (web-prosto) 2302 сентября 2018 г.

Кстати да! Не обратил внимание даже на это ))

Максим (web-prosto) 2302 сентября 2018 г.

Текста ооочень много, но краткость мне с трудом дана, и то это раза в 2-3 сократил))

Максим (web-prosto) 2303 сентября 2018 г.

Никто не делал что ли подобное?

Привет (romaromk) 8703 сентября 2018 г.

Делали такое, только разработчики диафана

Александра (Alexa0105) 20103 сентября 2018 г.

Вы поищите на форуме, как делают разные языковые версии на поддоменах. Вроде недавно что-то такое обсуждали.

Собственно, вопрос так можно решить.
База единая, следовательно и регистрация будет срабатывать сразу везде.
А вот вместо разных языков у вас будут разные города со своим контентом.

С товарами придется как-то решить. Наверное создавать несколько страниц с разными ИМ и там свои товары, только на сайтах уже выводить определенный ИМ.

П.С. Я вижу в этом единственный вариант.
Спасибо сказали: Максим (web-prosto)

Андрей (R4W) 9504 сентября 2018 г.

Максим, я пытался приблизиться к этому, но потом мне помнится свернули проект. Диафан система конечно любимая но уж очень неудобная для подобного. Тут функционала CMF(Content Management Framework ) не хватает конечно катастрофически.


Смысл делать имеет в любом случае ибо по слухам можно срубать нехилый трафон.

Если каталог, цены и остатки Если бы я стал делать, я бы делал примерно так:

- Оставил все в рамках 1го сайта и 1 БД.
- Наплодил бы под каждый город сущностей типа новости/статьи и т.п.
- Сделал бы некую кросс таблицу: какому городу соотвествуют какие новости/статьи/ окончание title/description и т.п.
- В шаблонах вставил бы костыль позволяющий показывать в этом месте новости/статьи/ возможно даже меню соотвествующие этому городу по кросс/таблице
- внимательно проработал бы все места где у нас Title генерится и иже с ними

Зашли на поддомен, где то в init проверили есть ли поддомен в кросс таблице городов и так далее.

Виталий (DIAFAN.CMS) 69604 сентября 2018 г.

Цитата
Возможен ли вообще Вариант 3?

Да. Конечно. Всё возможно.
Авторизация, пользователи, регистрация - это модуль пользователей (т.е. БД) и сессии (т.е. хостинг). Соответственно, сделать нужно две вещи: 1. на хостинге указать одну единую папку для хранения сессий для всех сайтов. И 2. выбрать основной сайт, оставив таблицу пользователей на нём, а в скриптах других сайтов поправить все запросы, убрав {} в таблицах, изменив на прямое указание таблиц. Т.е. не {user} чтобы было, а prefix_user
Спасибо сказали: Максим (web-prosto)

Максим (web-prosto) 2304 сентября 2018 г.

Виталий (DIAFAN.CMS), спасибо!

Виталий (DIAFAN.CMS) 69604 сентября 2018 г.

На скорую руку писал, если будут вопросы, давайте обсуждать

Максим (web-prosto) 2301 ноября 2018 г., редакция 01 ноября 2018 г.

Всем привет! И снова возвращаюсь к данной теме.

Теперь кое-что поменялось и соответственно вариант реализации тоже подбираем другой.

ОСНОВНЫЕ МОМЕНТЫ:
1. Основной город должен быть на основном домене, а остальные города должны быть на отдельных ПОДДОМЕНАХ.

2. В общем КАТАЛОГ на всех городах по сути будет один и тот же, т.е. Структура категорий, и товары одни и те же, НО отличаться будут Цены и Наличие.
В 1С в данный момент это одна БД, в которой для каждого товара отмечена своя цена и наличие для каждого города.
Что-то подобное и думаем на самом сайте сделать, т.е. БД одна и в ней у каждого товара должна быть цена и наличие для каждого города… чтобы в дальнейшем на сайте на соответствующем городе выводить соответствующие цены и наличие.

3. Структура сайта тоже будет одна и та же для городов, а контент разный. Т.е. набор разделов (Статичные страницы - Доставка, О компании, Контакты, Новости, Акции, Галерея и т.д.) будет одинаковый на всех городах, а вот само содержимое (например, сами новости и их содержимое и т.д.) будет разными.

4. Находясь на внутренних страницах сайта (новость какая-нибудь, Товар, Категория Каталога, Контакты и т.д.) и переключаясь между городами – мы должны остаться на тоже странице (т.е. с тем же URL), только меняется ПОДДОМЕН, и соответственно информация.

5. Регистрация, ЛК, Заказы… должны быть едиными на все города, т.е. централизованными.

6. Управление сайта с одной админки на ОСНОВНОМ адресе.

7. По тому как организовано переключение городов и как себя ведет сайт при переключении городов хотелось бы как тут примерно - https://stroyudacha.ru/

СПОСОБ РЕАЛИЗАЦИИ:
Что если реализовать на базе модуля «ЯЗЫКИ САЙТА» или на его Копии. Вроде идеально почти … многое уже учтено и реализовано! Т.е. БАЗА то по сути ОДНА. Есть определенные моменты:
1. Переделать на ПОДДОМЕНЫ, чтобы вместо site.ru/msk/… добавлялся поддомен MSK (msk.site.ru). Соответственно учесть это в ПРЕКЛЮЧЕНИИ городов.

Отсюда ВОПРОС – возможно ли переделать как то ЯЗЫКИ САЙТА, чтобы поддомен добавлялся, а не приписка к адресу /msk/? Например, как сейчас есть возможность делать с мобильной версией - "Использовать имя мобильной версии в качестве ПОДДОМЕНА".

2. КАТАЛОГ – вот тут нужно сообразить, как организовать и переработать!
Думаю у товаров добавить новые поля типа («Цена для города1», и галочка «Наличие в городе1» … и так для каждого города).
Далее нужно доработать скрипт импорта из 1С так, чтобы он грузил каталог во все города сразу, т.е. Добавлялись, Активировались, Было одно и тоже название для КАТЕГОРИЙ, БРЕНДОВ, ХАРАКТЕРИСТИК (а также всё что с ними связано), ТОВАРЫ (Название, Описание, Фото, Характеристики, Похожие товары, и т.д. должны сразу заполняться для всех городов одними и теми же данными, КРОМЕ цены и галочки НАЛИЧИЕ для каждого города – они свои). Галочка НАЛИЧИЕ должна влиять не на Активность товара, а на отображение или нет его в Списке товаров, в Фильтрации и в Поиске по сайту.

ВОПРОС – так реально вообще? Есть в этом разумное? Или как-то по другому лучше сообразить?

И еще вопрос! Если всё-таки сделать всё что написано выше, НО не на Поддоменах, а как по умолчанию Языки сайта, т.е. города будут так site.ru/msk/ site.ru/spb/ и т.д.
Как это со стороны СЕО для разделения городов? Плохо, нормально, никак, нормально но нужно заморочится, чтобы нормально для СЕО было?

Степан (idxdoc) 23202 ноября 2018 г.

По реализации я сделал бы иначе, но хочу сказать о другом.
По СЕО, делать отличия между городами только в цене и в наличии, ничего хорошего не даст, яндекс тупо все поддомены посчитает за зеркало и склеит их. Нужно менять еще как минимум тексты на всех страницах, маленького шаблона будет недостаточно. А еще лучше отображение самих товаров, если этого товара нет в таком то городе, то не отображать его, чтобы еще больше сделать уникальным поддомен.

Максим (web-prosto) 2302 ноября 2018 г.

Степан, спасибо за инфу по СЕО.

По поводу отображения товаров... думали сделать так: если нет в наличии, то исключить товар из списка товаров, из поиска, из фильтра,... и чтобы не индексировался ... в карте сайта отсутствовал, НО чтобы был доступен по прямой ссылке. Это для того, чтобы если на одном городе находимся на странице товара и переключаемся на другой город, где этот товар отсутствует, то по прежнему бы видели этот товар (т.е. и URL тот же), НО вместо цены - "Нет в наличии в этом городе".

А по реализации какие у вас мысли - иначе?)

Степан (idxdoc) 23202 ноября 2018 г.

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

На самом деле все очень легко, но времени нужно от 3 дней точно. Сырую версию можно и за день написать, ничего такого тут нет. А потом уже по доработкам, кто что желает, можно вечность делать)))

Илья Кочнев (Absolutnik) 25 сентября, среда

Ап. Появились ли у кого решения?

Нам до кучи к вышеописанному функционалу надо еще создать учетки менеджеров, чтобы каждый из них управлял контентов (каталогом, ценами, страницами) - только своего магазина.

Александр (capitan) 10925 сентября, среда

а такой вариант не будет работать, если прописать в htaccess на сайте https://gorod.site.ru/?

Код
RewriteRule ^/(.*)$ https://site.ru/gorod/$1 [QSA]