Перейти к содержимому


ocStore v1.0.0 RC1


  • Вы не можете ответить в тему
Сообщений в теме: 138

#41 Peredelkin

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений

Отправлено 02 Июль 2011 - 22:09

Просмотр сообщенияPeredelkin (02 Июль 2011 - 21:50) писал:

Атрибуты создаются без проблем, только когда в товаре этот атрибут пытаешся вбить, он не выпадает списком, и не сохраняется. Это касается только Русского языка!
Баг можно обойти, если в системе оставить два языка (английский и русский) и заполнять оба, в товаре выбирать атрибут на английском, а выводится он будет на языке "по умолчанию".

#42 Yesvik

    Почему программистов все считают телепатами?

  • OC Team
  • PipPipPip
  • 1 603 сообщений
  • ГородМосква

Отправлено 03 Июль 2011 - 04:40

Просмотр сообщенияPeredelkin (02 Июль 2011 - 21:50) писал:

Атрибуты создаются без проблем, только когда в товаре этот атрибут пытаешся вбить, он не выпадает списком, и не сохраняется. Это касается только Русского языка!
Вот за это я люто люблю UTF...
Теперь на форуме кроме того что такое BOM будет ещё одна любимая тема... прийдётся объяснять что такое mbstring, как его настраивать на разных версиях php, что на что менять если настройки не помогают и т.д.

#43 Peredelkin

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений

Отправлено 03 Июль 2011 - 15:15

Просмотр сообщенияYesvik (03 Июль 2011 - 04:40) писал:

Вот за это я люто люблю UTF...
Теперь на форуме кроме того что такое BOM будет ещё одна любимая тема... прийдётся объяснять что такое mb_string, как его настраивать на разных версиях php, что на что менять если настройки не помогают и т.д.
Давай Yesvik, помогай.

#44 Yesvik

    Почему программистов все считают телепатами?

  • OC Team
  • PipPipPip
  • 1 603 сообщений
  • ГородМосква

Отправлено 03 Июль 2011 - 21:52

Просмотр сообщенияPeredelkin (03 Июль 2011 - 15:15) писал:

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

Скрипт автокомплита отправляет введённые символы на сервер в кодированном виде, с помощью encodeURIComponent, а на стороне сервера нет декодирования. Декодировать можно по разному, я использовал urldecode вот так:
в файлах
admin/controller/catalog/attribute.php
admin/controller/catalog/option.php
admin/controller/catalog/product.php
admin/controller/sale/affiliate.php
admin/controller/sale/customer.php
catalog/controller/affiliate/tracking.php
строку
'filter_name' => $this->request->post['filter_name'],
изменил на
'filter_name' => urldecode($this->request->post['filter_name']),
И это только часть проблемы. Даже после декодирования, приключения не заканчиваются...
В модели, при подстановке введённых символов в SQL запрос, используется функция strtolower для корректной работы которой необходима корректная установка локали, а с учетом того что используется UTF-8 - нужна многобайтная версия этой функции - mb_strtolower. И вот тут начинается цирк...
Ручками отловить strtolower и прописать многобайтный аналог с указанием кодировки UTF-8 - во первых геморойно, а во вторых кто-то обязательно нарвётся на отключенный mbstring и вообще ничего не будет работать. Проще включить автоматическую замену функций на их многобайтные аналоги с помощью mbstring.func_overload 2 и указанием кодировки по умолчанию mbstring.internal_encoding UTF-8. Но и тут не всё так просто...
У меня на PHP 5.2.4 всё решилось добавлением в .htaccess строк
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8
А не просто потому что mbstring кривой как поросячий хвост и установка настроек на уровне директорий иногда приводит к тому что начинается полный бардак и настройки начинают путать педали... Проблема известна давно и на сколько мне известно по сей день не решена. Пытаясь как-то решить эту проблему, начиная с PHP 5.2.8 (или PHP 5.2.9, точно не помню), mbstring.func_overload нельзя включить в .htaccess и проблему можно решить только на уровне php.ini

Кроме этого в файлах
admin/view/template/catalog/product_form.tpl
admin/view/template/catalog/review_form.tpl
admin/view/template/module/featured.tpl
admin/view/template/sale/contact.tpl
admin/view/template/sale/coupon_form.tpl
admin/view/template/sale/order_form.tpl
admin/view/template/sale/return_form.tpl
catalog/view/theme/default/template/affiliate/tracking.tpl
желательно выставить задержку...
Ищем все строки
delay: 0,
и меняем на
delay: 500,
Это не имеет отношения к проблеме, но нужно что-бы не задалбывать сервак кучей бесполезных запросов автокомплита.

#45 Peredelkin

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений

Отправлено 04 Июль 2011 - 00:35

Мега програминг, мне не потянуть. Даже если по указке делать, раза с сотого получится. А почему такой проблемы не было до 1.5 версии?

#46 Yesvik

    Почему программистов все считают телепатами?

  • OC Team
  • PipPipPip
  • 1 603 сообщений
  • ГородМосква

Отправлено 04 Июль 2011 - 04:36

Просмотр сообщенияPeredelkin (04 Июль 2011 - 00:35) писал:

А почему такой проблемы не было до 1.5 версии?
А до 1.5 был автокомплит?

#47 agoodis

    Пользователь

  • Пользователи
  • PipPip
  • 28 сообщений

Отправлено 04 Июль 2011 - 08:45

Просмотр сообщенияYesvik (04 Июль 2011 - 04:36) писал:

А до 1.5 был автокомплит?

Если это баг, то лучше написать про это в http://code.google.c...art/issues/list или на форуме.

#48 Yesvik

    Почему программистов все считают телепатами?

  • OC Team
  • PipPipPip
  • 1 603 сообщений
  • ГородМосква

Отправлено 04 Июль 2011 - 15:13

Просмотр сообщенияagoodis (04 Июль 2011 - 08:45) писал:

Если это баг, то лучше написать про это в http://code.google.c...art/issues/list или на форуме.
Я думаю что "Проблемы негров шерифа не волнуют".
В данном случае трудно сказать кто отвечает за эти баги.
С точки зрения синтаксиса и алгоритма работы - всё нормально, проблема с кириллицей возникает из за особенностей реализации некоторых функций в PHP.
Во многих проектах, для обхода подобных особенностей, свои шаманские бубны пишут...

#49 Sammy95

    Продвинутый пользователь

  • OC Team
  • PipPipPip
  • 497 сообщений
  • Городпланета

Отправлено 04 Июль 2011 - 16:27

Yesvik: а если сделать тупое решение в лоб, как здесь во втором примере: http://2lx.ru/2009/0...olower-i-utf-8/
??

Добавить ещё украинский алфавит и для ocStore вполне сойдёт, ИМХО.

#50 Yesvik

    Почему программистов все считают телепатами?

  • OC Team
  • PipPipPip
  • 1 603 сообщений
  • ГородМосква

Отправлено 04 Июль 2011 - 17:56

Просмотр сообщенияSammy95 (04 Июль 2011 - 16:27) писал:

Yesvik: а если сделать тупое решение в лоб, как здесь во втором примере: http://2lx.ru/2009/0...olower-i-utf-8/
??

Добавить ещё украинский алфавит и для ocStore вполне сойдёт, ИМХО.
Нечто подобное я и имел ввиду когда писал про шаманские бубны.

#51 Yesvik

    Почему программистов все считают телепатами?

  • OC Team
  • PipPipPip
  • 1 603 сообщений
  • ГородМосква

Отправлено 04 Июль 2011 - 19:11

Вот пример элегантного бубна из друпала, но с регами которые тут не жалуют
/**
 * Lowercase a UTF-8 string.
 */
function drupal_strtolower($text) {
  global $multibyte;
  if ($multibyte == UNICODE_MULTIBYTE) {
    return mb_strtolower($text);
  }
  else {
    // Use C-locale for ASCII-only lowercase
    $text = strtolower($text);
    // Case flip Latin-1 accented letters
    $text = preg_replace_callback( '/\xC3[\x80-\x96\x98-\x9E]/', '_unicode_caseflip', $text);
    return $text;
  }
}

/**
 * Helper function for case conversion of Latin-1.
 * Used for flipping U+C0-U+DE to U+E0-U+FD and back.
 */
function _unicode_caseflip($matches) {
  return $matches[0][0] . chr(ord($matches[0][1]) ^ 32);
}

А это бубен из PHPBB без регулярок
/**
* UTF-8 aware alternative to strtolower
* Make a string lowercase
* Note: The concept of a characters "case" only exists is some alphabets
* such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does
* not exist in the Chinese alphabet, for example. See Unicode Standard
* Annex #21: Case Mappings
*
* @param string
* @return string string in lowercase
*/
function utf8_strtolower($string)
{
	static $utf8_upper_to_lower = array(
		"\xC3\x80" => "\xC3\xA0", "\xC3\x81" => "\xC3\xA1",
		"\xC3\x82" => "\xC3\xA2", "\xC3\x83" => "\xC3\xA3", "\xC3\x84" => "\xC3\xA4", "\xC3\x85" => "\xC3\xA5",
		"\xC3\x86" => "\xC3\xA6", "\xC3\x87" => "\xC3\xA7", "\xC3\x88" => "\xC3\xA8", "\xC3\x89" => "\xC3\xA9",
		"\xC3\x8A" => "\xC3\xAA", "\xC3\x8B" => "\xC3\xAB", "\xC3\x8C" => "\xC3\xAC", "\xC3\x8D" => "\xC3\xAD",
		"\xC3\x8E" => "\xC3\xAE", "\xC3\x8F" => "\xC3\xAF", "\xC3\x90" => "\xC3\xB0", "\xC3\x91" => "\xC3\xB1",
		"\xC3\x92" => "\xC3\xB2", "\xC3\x93" => "\xC3\xB3", "\xC3\x94" => "\xC3\xB4", "\xC3\x95" => "\xC3\xB5",
		"\xC3\x96" => "\xC3\xB6", "\xC3\x98" => "\xC3\xB8", "\xC3\x99" => "\xC3\xB9", "\xC3\x9A" => "\xC3\xBA",
		"\xC3\x9B" => "\xC3\xBB", "\xC3\x9C" => "\xC3\xBC", "\xC3\x9D" => "\xC3\xBD", "\xC3\x9E" => "\xC3\xBE",
		"\xC4\x80" => "\xC4\x81", "\xC4\x82" => "\xC4\x83", "\xC4\x84" => "\xC4\x85", "\xC4\x86" => "\xC4\x87",
		"\xC4\x88" => "\xC4\x89", "\xC4\x8A" => "\xC4\x8B", "\xC4\x8C" => "\xC4\x8D", "\xC4\x8E" => "\xC4\x8F",
		"\xC4\x90" => "\xC4\x91", "\xC4\x92" => "\xC4\x93", "\xC4\x96" => "\xC4\x97", "\xC4\x98" => "\xC4\x99",
		"\xC4\x9A" => "\xC4\x9B", "\xC4\x9C" => "\xC4\x9D", "\xC4\x9E" => "\xC4\x9F", "\xC4\xA0" => "\xC4\xA1",
		"\xC4\xA2" => "\xC4\xA3", "\xC4\xA4" => "\xC4\xA5", "\xC4\xA6" => "\xC4\xA7", "\xC4\xA8" => "\xC4\xA9",
		"\xC4\xAA" => "\xC4\xAB", "\xC4\xAE" => "\xC4\xAF", "\xC4\xB4" => "\xC4\xB5", "\xC4\xB6" => "\xC4\xB7",
		"\xC4\xB9" => "\xC4\xBA", "\xC4\xBB" => "\xC4\xBC", "\xC4\xBD" => "\xC4\xBE", "\xC5\x81" => "\xC5\x82",
		"\xC5\x83" => "\xC5\x84", "\xC5\x85" => "\xC5\x86", "\xC5\x87" => "\xC5\x88", "\xC5\x8A" => "\xC5\x8B",
		"\xC5\x8C" => "\xC5\x8D", "\xC5\x90" => "\xC5\x91", "\xC5\x94" => "\xC5\x95", "\xC5\x96" => "\xC5\x97",
		"\xC5\x98" => "\xC5\x99", "\xC5\x9A" => "\xC5\x9B", "\xC5\x9C" => "\xC5\x9D", "\xC5\x9E" => "\xC5\x9F",
		"\xC5\xA0" => "\xC5\xA1", "\xC5\xA2" => "\xC5\xA3", "\xC5\xA4" => "\xC5\xA5", "\xC5\xA6" => "\xC5\xA7",
		"\xC5\xA8" => "\xC5\xA9", "\xC5\xAA" => "\xC5\xAB", "\xC5\xAC" => "\xC5\xAD", "\xC5\xAE" => "\xC5\xAF",
		"\xC5\xB0" => "\xC5\xB1", "\xC5\xB2" => "\xC5\xB3", "\xC5\xB4" => "\xC5\xB5", "\xC5\xB6" => "\xC5\xB7",
		"\xC5\xB8" => "\xC3\xBF", "\xC5\xB9" => "\xC5\xBA", "\xC5\xBB" => "\xC5\xBC", "\xC5\xBD" => "\xC5\xBE",
		"\xC6\xA0" => "\xC6\xA1", "\xC6\xAF" => "\xC6\xB0", "\xC8\x98" => "\xC8\x99", "\xC8\x9A" => "\xC8\x9B",
		"\xCE\x86" => "\xCE\xAC", "\xCE\x88" => "\xCE\xAD", "\xCE\x89" => "\xCE\xAE", "\xCE\x8A" => "\xCE\xAF",
		"\xCE\x8C" => "\xCF\x8C", "\xCE\x8E" => "\xCF\x8D", "\xCE\x8F" => "\xCF\x8E", "\xCE\x91" => "\xCE\xB1",
		"\xCE\x92" => "\xCE\xB2", "\xCE\x93" => "\xCE\xB3", "\xCE\x94" => "\xCE\xB4", "\xCE\x95" => "\xCE\xB5",
		"\xCE\x96" => "\xCE\xB6", "\xCE\x97" => "\xCE\xB7", "\xCE\x98" => "\xCE\xB8", "\xCE\x99" => "\xCE\xB9",
		"\xCE\x9A" => "\xCE\xBA", "\xCE\x9B" => "\xCE\xBB", "\xCE\x9C" => "\xCE\xBC", "\xCE\x9D" => "\xCE\xBD",
		"\xCE\x9E" => "\xCE\xBE", "\xCE\x9F" => "\xCE\xBF", "\xCE\xA0" => "\xCF\x80", "\xCE\xA1" => "\xCF\x81",
		"\xCE\xA3" => "\xCF\x83", "\xCE\xA4" => "\xCF\x84", "\xCE\xA5" => "\xCF\x85", "\xCE\xA6" => "\xCF\x86",
		"\xCE\xA7" => "\xCF\x87", "\xCE\xA8" => "\xCF\x88", "\xCE\xA9" => "\xCF\x89", "\xCE\xAA" => "\xCF\x8A",
		"\xCE\xAB" => "\xCF\x8B", "\xD0\x81" => "\xD1\x91", "\xD0\x82" => "\xD1\x92", "\xD0\x83" => "\xD1\x93",
		"\xD0\x84" => "\xD1\x94", "\xD0\x85" => "\xD1\x95", "\xD0\x86" => "\xD1\x96", "\xD0\x87" => "\xD1\x97",
		"\xD0\x88" => "\xD1\x98", "\xD0\x89" => "\xD1\x99", "\xD0\x8A" => "\xD1\x9A", "\xD0\x8B" => "\xD1\x9B",
		"\xD0\x8C" => "\xD1\x9C", "\xD0\x8E" => "\xD1\x9E", "\xD0\x8F" => "\xD1\x9F", "\xD0\x90" => "\xD0\xB0",
		"\xD0\x91" => "\xD0\xB1", "\xD0\x92" => "\xD0\xB2", "\xD0\x93" => "\xD0\xB3", "\xD0\x94" => "\xD0\xB4",
		"\xD0\x95" => "\xD0\xB5", "\xD0\x96" => "\xD0\xB6", "\xD0\x97" => "\xD0\xB7", "\xD0\x98" => "\xD0\xB8",
		"\xD0\x99" => "\xD0\xB9", "\xD0\x9A" => "\xD0\xBA", "\xD0\x9B" => "\xD0\xBB", "\xD0\x9C" => "\xD0\xBC",
		"\xD0\x9D" => "\xD0\xBD", "\xD0\x9E" => "\xD0\xBE", "\xD0\x9F" => "\xD0\xBF", "\xD0\xA0" => "\xD1\x80",
		"\xD0\xA1" => "\xD1\x81", "\xD0\xA2" => "\xD1\x82", "\xD0\xA3" => "\xD1\x83", "\xD0\xA4" => "\xD1\x84",
		"\xD0\xA5" => "\xD1\x85", "\xD0\xA6" => "\xD1\x86", "\xD0\xA7" => "\xD1\x87", "\xD0\xA8" => "\xD1\x88",
		"\xD0\xA9" => "\xD1\x89", "\xD0\xAA" => "\xD1\x8A", "\xD0\xAB" => "\xD1\x8B", "\xD0\xAC" => "\xD1\x8C",
		"\xD0\xAD" => "\xD1\x8D", "\xD0\xAE" => "\xD1\x8E", "\xD0\xAF" => "\xD1\x8F", "\xD2\x90" => "\xD2\x91",
		"\xE1\xB8\x82" => "\xE1\xB8\x83", "\xE1\xB8\x8A" => "\xE1\xB8\x8B", "\xE1\xB8\x9E" => "\xE1\xB8\x9F", "\xE1\xB9\x80" => "\xE1\xB9\x81",
		"\xE1\xB9\x96" => "\xE1\xB9\x97", "\xE1\xB9\xA0" => "\xE1\xB9\xA1", "\xE1\xB9\xAA" => "\xE1\xB9\xAB", "\xE1\xBA\x80" => "\xE1\xBA\x81",
		"\xE1\xBA\x82" => "\xE1\xBA\x83", "\xE1\xBA\x84" => "\xE1\xBA\x85", "\xE1\xBB\xB2" => "\xE1\xBB\xB3"
	);

	return strtr(strtolower($string), $utf8_upper_to_lower);
}

Как видиш выбирать есть из чего и заниматься велосипедостроительством не обязательно.

#52 agoodis

    Пользователь

  • Пользователи
  • PipPip
  • 28 сообщений

Отправлено 04 Июль 2011 - 22:50

Вроде разработчики исправят баг с utf-8.
http://code.google.c...mary%20Reporter

#53 Yesvik

    Почему программистов все считают телепатами?

  • OC Team
  • PipPipPip
  • 1 603 сообщений
  • ГородМосква

Отправлено 04 Июль 2011 - 23:02

Просмотр сообщенияagoodis (04 Июль 2011 - 22:50) писал:

Вроде разработчики исправят баг с utf-8.
http://code.google.c...mary%20Reporter
Я видел это, и хоть речь идёт о поиске - проблема абсолютно идентична.

#54 sitecreator

    Пользователь

  • Пользователи
  • PipPip
  • 61 сообщений

Отправлено 05 Июль 2011 - 14:38

Просмотр сообщенияagoodis (04 Июль 2011 - 22:50) писал:

Вроде разработчики исправят баг с utf-8.

так такая проблема только с utf-8? А с win1251 ее нету? или?

#55 Yesvik

    Почему программистов все считают телепатами?

  • OC Team
  • PipPipPip
  • 1 603 сообщений
  • ГородМосква

Отправлено 05 Июль 2011 - 17:17

Просмотр сообщенияsitecreator (05 Июль 2011 - 14:38) писал:

так такая проблема только с utf-8? А с win1251 ее нету? или?
OpenCart использует utf-8, причем тут win1251?
Если интересуешся для общего развития, без привязки к OpenCart, то с windows-1251 таких проблем нет и быть не может.
В ANSI кодировках, к которым относится windows-1251, каждому символу соответствует один байт. В Unicode одному символу соответствует от 1 до 4 байт, а конкретно в UTF-8 от 1 до 2. Для работы с UTF-8 используется набор многобайтных функций и весь сыр-бор из-за них...

#56 sitecreator

    Пользователь

  • Пользователи
  • PipPip
  • 61 сообщений

Отправлено 05 Июль 2011 - 18:10

Просмотр сообщенияYesvik (05 Июль 2011 - 17:17) писал:

OpenCart использует utf-8, причем тут win1251?

Я предположил, что есть возможность гибкой смены кодировки как базы данных, так и движка. И такие движки есть. Тот же Modx.


Просмотр сообщенияYesvik (05 Июль 2011 - 17:17) писал:

Если интересуешся для общего развития, без привязки к OpenCart, то с windows-1251 таких проблем нет и быть не может.
да я то как раз таки интересовался конкретно с привязкой к OpenCart, т. к. необходимы на русском языке атрибуты.
Я не могу понять почему сделали так неудобно (автоподстановка ...). Неужто нельзя было сделать выпадающим списком?
Например, в первом списочке выбираешь группу атрибутов, а во втором сами атрибуты. А то ведь получается, что еще и все атрибуты нужно заранее знать и помнить как они называются.

#57 Falcosha

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 114 сообщений

Отправлено 07 Июль 2011 - 00:20

Куда же наша бабушка делась, кто в курсе? Вот-вот уже будет пора делать магазинчик, а хочется на ocStore 1.0.0 сделать :rolleyes:

#58 sergfedo

    Пользователь

  • Пользователи
  • PipPip
  • 45 сообщений

Отправлено 07 Июль 2011 - 00:22

Скинте бабулькин твиттер, будем брать измором )

#59 Acden

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 280 сообщений

Отправлено 07 Июль 2011 - 00:39

Просмотр сообщенияFalcosha (07 Июль 2011 - 00:20) писал:

Куда же наша бабушка делась, кто в курсе? Вот-вот уже будет пора делать магазинчик, а хочется на ocStore 1.0.0 сделать :rolleyes:


Просмотр сообщенияsergfedo (07 Июль 2011 - 00:22) писал:

Скинте бабулькин твиттер, будем брать измором )
:lol:

извините – не удержался.

Зашел в инет от бессонницы, а тут такое :lol:


Babushka, озвучьте хоть примерные сроки выпуска, как у Вас дела идут с доработками?

#60 agoodis

    Пользователь

  • Пользователи
  • PipPip
  • 28 сообщений

Отправлено 07 Июль 2011 - 11:07

http://twitter.com/#!/rassypnov
http://vkontakte.ru/id2436378
http://ibabushka.livejournal.com/





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных