Jump to content

  • You cannot start a new topic
  • You cannot reply to this topic

Локализация Rate Topic   - - - - -

 
  • miadiva
  • Senior Member
  • Members
  • Join Date: 17-Sep 13
  • 362 posts

Posted 22 November 2013 - 10:06 AM #1

Здравствуйте. Кто-нибудь может подсказать как в функцию "Локализация" cs-cart (4.0.2) использовать для определения городов, а то там можно выбрать только страны? ((

 
  • Alex_VP
  • Senior Member
  • Members
  • Join Date: 04-Jun 10
  • 1452 posts

Posted 22 November 2013 - 10:52 AM #2

А это что за страна такая, в которой разные города используют разные метрики?

 
  • spontan
  • Member
  • Members
  • Join Date: 16-Feb 13
  • 36 posts

Posted 10 December 2013 - 10:36 AM #3

А что если хочется использовать локализацию для определения наличия товаров в конкретной области?

 
  • Alex_VP
  • Senior Member
  • Members
  • Join Date: 04-Jun 10
  • 1452 posts

Posted 10 December 2013 - 10:58 AM #4

А что если хочется использовать локализацию для определения наличия товаров в конкретной области?

Наличие товаров в конкретной области - это у вас склады в разных областях? Ну так для этого мультивендор вроде как. А если склад один, а вы хотите показывать-непоказывать товар, который в данную область-город доставляется-недоставляется - так это Пункты назначения и Способы доставки надо настраивать (тоже своего рода гемор... :) )

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 11 December 2013 - 01:31 PM #5

Тоже интересует данный вопрос. Как сделать что бы пользователь мог выбрать свой регион (город), пусть из всплывающего окна не обязательно по IP. Что бы отображались товары доступные в его городе. Склады могут быть разные и в разных городах, пункты назначения и способы доставки не влияют на ассортимент отображаемых товаров. В общем необходимо что бы был разный ассортимент товаров в зависимости от города.

Подскажите какой файл отвечает за определение IP пользователя и отображение соответствующего контента в соответствии с его локализацией?

Вопрос для 3.0.6, хотя наверно разницы особой нет.


 
  • Alex_VP
  • Senior Member
  • Members
  • Join Date: 04-Jun 10
  • 1452 posts

Posted 12 December 2013 - 06:52 AM #6

есть в cscart такая функция fn_get_ip() - она получает ip пользователя

$x = fn_get_ip();

$ip = $x['host'];

. Определять город можно по базе GeoIP. Но тут вопервых без ошибок не обходится, а во вторых что мобильный интернет, что проводной интернет от билайна - абсолютно не привязаны к городам по ip. Если вы сидите на проводном интернете от билайна в москве - сейчас у вас один ip, но стоит переподключиться, и у вас будет ip, который недавно был у компьютера например в Питере или в Хабаровске. Так что... Единственный способ определить местоположение покупателя - это указание города при регистрации.

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 14 December 2013 - 03:01 PM #7

Спасибо большое за ответ. К этой функции обращаются куча файлов, но по сути функция определения региона по ip не нужна. Хотелось бы изменять регион вручную, сразу подстановкой нужного значения localization_id. Подскажите где его можно подставлять в коде, что бы отображение контента сайта изменялось согласно выбранного региона.

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 16 December 2013 - 03:00 AM #8

Спасибо проблема решена

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 26 December 2013 - 09:13 PM #9

Как оказалось проблема решена была не полностью :(

Меняю регион, но отображение меню, категорий и блока горящих предложений на главной странице не изменяется :(
Для того, что бы оно изменилось мне необходимо очистить кеш из админки это ...admin?cc. Подскажите как можно очистить кеш когда пользователь меняет регион?

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 27 December 2013 - 05:33 AM #10

Для того, что бы оно изменилось мне необходимо очистить кеш из админки это ...admin?cc. Подскажите как можно очистить кеш когда пользователь меняет регион?


Если регион выбираете через новый блок, то изучайте схемы блоков:

/app/schemas/block_manager/blocks.php

Для очистки кэша есть специальные параметры у каждого блока.

		'cache' => array(
// Если есть изменения в таблицах БД , то очищаем кэш.
			'update_handlers' => array ('products', 'product_descriptions', 'product_prices', 'products_categories', 'product_popularity'),
// Если в запросе есть параметр , то очищаем кэш.
			'request_handlers' => array ('current_category_id' => '%CATEGORY_ID%'),
//  Если есть движуха в куках , то очищаем кэш.
			'cookie_handlers' => array ('%ALL%')
		)


 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 27 December 2013 - 11:41 AM #11

Спасибо за ответ.
Для изменения региона я не использую блоки. Для корректировки региона я меняю значение переменной localization в fn.locations.php. Пытался добавить в функцию(в файле fn.locations.php) строки которые вы написали, без результата (может я просто не знаю в каком формате их вставлять).

Пытался разобраться с blocks.php, но там идет один сплошной массив и такое ощущение, что к нему движок вообще не обращается, удаление этого файла на работоспособность движка не оказала. Вызывал его с помощью require, но так же безрезультатно. Я с PHP и SMARTY плохо знаком, корректирую код методом тыка.

Подскажите как очистить кеш из fn.locations.php результат необходим как после очистки кеша при помощи .../admin.php?cc
Возможно я ошибаюсь и делать это необходимо по другому.

У меня мультивендор 3.0.6

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 27 December 2013 - 11:58 AM #12

Функция fn_clear_cache();

поставьте её после переключения.

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 27 December 2013 - 12:17 PM #13

function fn_get_localizations_condition($db_field, $and = true, $localization = '')
{
.......

$localization = !empty($localization) ? $localization : (defined('CART_LOCALIZATION') ? CART_LOCALIZATION : '');
$condition = (empty($localization) || AREA != 'C') ? '' : (($and == true) ? ' AND' : '') . " (FIND_IN_SET($localization , $db_field))";

fn_clear_cache(); //если ставлю сюда то на сайте практически не выводятся данные, страница смотрится чистой
return $condition;
fn_clear_cache(); //если ставлю сюда ничего не происходит, кеш
}

Пробовал вставлять в файл tpl, после того как задаю куки, тоже нет реакции

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 27 December 2013 - 12:38 PM #14

fn_clear_cache(); //если ставлю сюда то на сайте практически не выводятся данные, страница смотрится чистой
return $condition;
fn_clear_cache(); //если ставлю сюда ничего не происходит, кеш


Кажется понял, что и где Вы меняете. Сюда точно не нужно очищаться кэш.

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

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 27 December 2013 - 12:48 PM #15

ОК, буду ждать, заранее спасибо.

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 27 December 2013 - 12:53 PM #16

ОК, буду ждать, заранее спасибо.


Каким образом Вы меняете значение переменной localization в fn.locations.php со стороны клиента?

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 27 December 2013 - 01:16 PM #17

Из всплывающего окна задаю значение для куки ххх в fn.locations.php задаю значение $localization=$_COOKIE["ххх"];
Куки равно значению региона из БД (там идет страна, но я задаю как город)

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 27 December 2013 - 01:23 PM #18

Вообщем код работает, все фильтруется по регионам. Даже меню изменяется которое создается в разделе дизайн/меню. Но вот проблема с основным меню, блоком категорий на главной странице и блоком горячих предложений. Думаю, так же будет проблема с другими блоками, типа "похожий товар". Я их пока не задействовал, думаю добавить позже.

 
  • asdfg
  • Member
  • Trial users
  • Join Date: 21-Jun 13
  • 16 posts

Posted 27 December 2013 - 01:27 PM #19

Странно, что меню добавленное (дизайн/меню) меняется в моем решении, а основное меню (существующее по умолчанию) нет. Хотя оба используют практически одинаковые tpl

 
  • dbazhenov
  • Senior Member
  • Authorized Reseller
  • Join Date: 15-May 12
  • 6446 posts

Posted 29 December 2013 - 01:22 PM #20

Странно, что меню добавленное (дизайн/меню) меняется в моем решении, а основное меню (существующее по умолчанию) нет. Хотя оба используют практически одинаковые tpl


Попробуйте использовать параметр URL "?ls=XXX" , где XXX = ID локализации .

Например:
http://ваш_сайт/306mv/index.php?lc=2

или
http://ваш_сайт/306mv/index.php?dispatch=categories.view&category_id=167&lc=3


Соответственно при клике в Вашем popup сделать редирект на туже страницу с параметром соответствующим городу или региону.

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