Модификация запроса для поиска состоящих из цифр слов как подстрок. Решает проблему с поиском по части артикула.
Патч:
--- component.php.orig 2014-05-06 15:01:54.580659648 +0400 +++ component.php 2014-06-05 13:13:51.227566838 +0400 @@ -202,6 +202,7 @@ if($arParams["USE_LANGUAGE_GUESS"] == "N" || isset($_REQUEST["spell"])) { $arResult["REQUEST"]["~QUERY"] = $q; + $arResult["REQUEST"]["~QUERY"] = preg_replace('/([a-zA-Z-]*[0-9-]+)/', '"\\1"', $arResult["REQUEST"]["~QUERY"]); $arResult["REQUEST"]["QUERY"] = htmlspecialcharsex($q); } else @@ -210,6 +211,7 @@ if(is_array($arLang) && $arLang["from"] != $arLang["to"]) { $arResult["REQUEST"]["~ORIGINAL_QUERY"] = $q; + $arResult["REQUEST"]["~QUERY"] = preg_replace('/([a-zA-Z-]*[0-9-]+)/', '"\\1"', $arResult["REQUEST"]["~QUERY"]); $arResult["REQUEST"]["ORIGINAL_QUERY"] = htmlspecialcharsex($q); $arResult["REQUEST"]["~QUERY"] = CSearchLanguage::ConvertKeyboardLayout($arResult["REQUEST"]["~ORIGINAL_QUERY"], $arLang["from"], $arLang["to"]); @@ -218,6 +220,7 @@ else { $arResult["REQUEST"]["~QUERY"] = $q; + $arResult["REQUEST"]["~QUERY"] = preg_replace('/([a-zA-Z-]*[0-9-]+)/', '"\\1"', $arResult["REQUEST"]["~QUERY"]); $arResult["REQUEST"]["QUERY"] = htmlspecialcharsex($q); } }
Общие сведения об использовании утилиты patch(1) можно найти в статье patch (Unix)
Место включения компонента: http://avtozip.su/search/index.php Компонент теперь вызывается непосредственно из bitrix:catalog, поэтому модифицирован in-place.
Версия 1С-Битрикс: УС — 14.5
Отображать артикул вместо краткого описания в списках.
Патч:
--- shop_list/template.php 2014-04-11 10:44:05.000000000 +0400 +++ shop_list_zip/template.php 2014-04-11 12:43:40.000000000 +0400 @@ -39,8 +39,8 @@ <div class="desc_name"> <a href="<?=$arItem["DETAIL_PAGE_URL"]?>"><?=$arItem["NAME"]?></a> </div> - <?if ($arItem["PREVIEW_TEXT"]):?> - <div class="preview_text"><?=$arItem["PREVIEW_TEXT"]?></div> + <?if ($arItem["DISPLAY_PROPERTIES"]["CML2_ARTICLE"]["VALUE"]):?> + <div class="preview_text"><?=$arItem["DISPLAY_PROPERTIES"]["CML2_ARTICLE"]["VALUE"]?></div> <?endif;?> <?if ($arItem["DISPLAY_PROPERTIES"]):?> <div class="show_props"> @@ -212,4 +212,4 @@ { $(this).toggleClass('open').parents(".description").find(".props-list-wrapp").slideToggle(333); }); -</script> \ No newline at end of file +</script>
Версия aspro.ishop — 1.5.2.
Экспортировать заказы в UTF-8. Кодировка XML указана как CP1251 (т.к. эта строка пишется модулем ядра Битрикс), но 1С её всё равно игнорирует (что и является причиной проблемы). Патч исправляет обмен заказами с 1С под Linux, но ломает его с 1С под Windows.
Патч адаптирован для Битрикс 14.5, нужно тестирование
Патч:
--- component.php 2014-05-06 11:14:33.596345485 +0600 +++ my_component.php 2014-05-06 15:16:20.279101584 +0600 @@ -497,7 +497,7 @@ } elseif($_GET["mode"] == "info") { - ?><<?="?"?>xml version="1.0" encoding="windows-1251"<?="?"?>> + ?><<?="?"?>xml version="1.0" encoding="utf-8"<?="?"?>> <<?=GetMessage("CC_BSC1_DI_GENERAL")?>> <<?=GetMessage("CC_BSC1_DI_STATUSES")?>> <? @@ -542,8 +542,8 @@ { if (!$bCrmMode) { - if(toUpper(LANG_CHARSET) != "WINDOWS-1251") - $contents = $APPLICATION->ConvertCharset($contents, LANG_CHARSET, "windows-1251"); + if(toUpper(LANG_CHARSET) == "WINDOWS-1251") + $contents = $APPLICATION->ConvertCharset($contents, LANG_CHARSET, "Unicode"); } if ($gzCompressionSupported) @@ -558,12 +558,12 @@ $str = (function_exists("mb_strlen")? mb_strlen($contents, 'latin1'): strlen($contents)); if(in_array($_GET["mode"], array("query", "info")) || in_array($_POST["mode"], array("query", "info"))) { - header("Content-Type: application/xml; charset=windows-1251"); + header("Content-Type: application/xml; charset=utf-8"); header("Content-Length: ".$str); } else { - header("Content-Type: text/html; charset=windows-1251"); + header("Content-Type: text/html; charset=utf-8"); } }
Внимание: компонент модифицирован in-place, в пространстве имён bitrix — это меньшее зло, чем модификация модуля ядра, из которого он вызывается. Оригинальный файл сохранён с суффиксом .orig
Версия 1С-Битрикс: УС — 14.5
Выключает USE_LANGUGE_GUESS (автокоррекция раскладки). Патч:
--- /var/www/ph243163/data/www/avtozip.su/bitrix/wizards/aspro/ishop/site/templates/ishop/components/bitrix/catalog.search/shop/template.php 2014-05-06 09:14:27.246244053 +0400 +++ template.php 2014-10-21 15:14:22.095886501 +0400 @@ -27,7 +27,7 @@ Array( "RESTART" => $arParams["RESTART"], "NO_WORD_LOGIC" => $arParams["NO_WORD_LOGIC"], - "USE_LANGUAGE_GUESS" => $arParams["USE_LANGUAGE_GUESS"], + "USE_LANGUAGE_GUESS" => "N", "CHECK_DATES" => $arParams["CHECK_DATES"], "arrFILTER" => array("iblock_".$arParams["IBLOCK_TYPE"]), "arrFILTER_iblock_".$arParams["IBLOCK_TYPE"] => array($arParams["IBLOCK_ID"]), @@ -127,4 +127,4 @@ { echo GetMessage("CT_BCSE_NOT_FOUND")."<br /><br />"; } -?> \ No newline at end of file +?>