Самое главное не забывайте при переиндексации отключать галочку "Переиндексировать только измененные" - http://prntscr.com/nf4d8h и будет вам счастье!!)
просто добавил транслитерацию $url_id , решение для свойства Привязка к элементам в виде списка
toLower в данном примере можно не использовать. CUtil::translit по умолчанию переводит в нижний регистр. Так же перед данной модификацией я бы посоветовал добавить $arParamsTranslit = array("replace_space" => "-"); и передавать его методу CUtil::translit третьим параметром - это нужно для замены пробелов и прочего. У меня фильтр не хавал пробелы(
И в новом шаблоне немного по другому В методе fillItemValues находим switch($PROPERTY_TYPE) и в условии default $url_id = toLower($value); меняем на - $arParamsTranslit = array("replace_space" => "-"); $url_id = CUtil::translit($this->cache[$PROPERTY_ID][$key]['UF_XML_ID'], "ru", $arParamsTranslit);
Денис Сон написал: Если хотите чтобы порядок элементов был как в фильтре, попробуйте в result_modifier.php перестроить массив ITEMS в соответствии с фильтром - для этого необходимо запрограммировать несколько строчек кода.
Вот пример как я сделал:
Код
$arIDs = array(); // В этот массив будут собираться значения поля, по которому сортируем
$resultArray = array(); // Отсортированный массив
foreach ($arResult['ITEMS'] as $key => $arItem) {
$arIDs[$key] = $arItem['ID']; //Здесь задается поле по которому сортировать
}
//Здесь задается массив ключей
$arIDs = $arResult['ORIGINAL_PARAMETERS']['GLOBAL_FILTER']['ID'];
foreach ($arIDs as $id) {
foreach ($arResult['ITEMS'] as $key => $arItem) {
if ($id == $arItem['ID'])
$resultArray[] = $arItem; //Отсортированный массив
}
}
$arResult['ITEMS']= $resultArray;//Записываем отсортированный массив обратно в основной массив
/**
* Переводим избранное из сессии в пользовательское поле
* после авторизации методом $USER->Authorize
* @param $arFields
*/
public static function OnAfterUserAuthorizeHandler(&$arFields) {
if ($arFields["user_fields"]['ID'] > 0) {
$arFavorite = $_SESSION['FAVORITE'];
global $USER;
$idUser = $arFields["user_fields"]['ID'];
$rsUser = \CUser::GetByID($idUser);
$arUser = $rsUser->Fetch();
$arElements = unserialize($arUser['UF_FAVORITES']);
if ($arFavorite) {
foreach ($arFavorite as $id) {
$key = array_keys($arElements, $id, true);
if (!$key) {
$arElements[] = $id;
} else {
unset($arElements[$key[0]]);
}
$USER->Update($idUser, Array("UF_FAVORITES" => serialize($arElements)));
}
}
unset($_SESSION['FAVORITE']);
}
}
А еще можно написать метод, переносящий избранное из кукисов в свойства пользователя после авторизации. Только я хранил не в куках, а сессии. И авторизовал пользователя АПИ методом $USER->Authorize. Поэтому обработчик onafteruserauthorize. Так же стоит отметить что данный код только для примера. В классе его можно разбить на методы и т.д.
Ustinov написал: В на сайте замените файл bitrix/components/bitrix/sale.export.1c/component.php этим файлом . На всякий случай сделайте бекап оригинального файла.
Спасибо мы уж лучше подождем обновления, чем качать неизвестный файл от неизвестного участника)
Код, используемый для связи инфоблока с внешним источником данных. Поле отображается при включенной опции Показывать код загрузки из внешних источников в настройках модуля Информационные блоки. Если поле отображается, то оно обязательно к заполнению.
Ну а как быть, если выгрузка есть и внешний код нужен. Но есть и другие инфоблоки, например, слайдер на главной, где этот код совсем не нужен. И автоматом он не генерируется. Как тут поступить? Постоянно включать, выключать галочку? Не комильфо...
Здравствуйте. Подскажите как показать в умном фильтре числа с форматированием, а применить без? Пробовал в script.js применять форматирование внутри функции SmartFilter.prototype.recountMinPrice и SmartFilter.prototype.recountMaxPrice, все работало. Но при выдаче результатов фильтр пишет вот так - http://prntscr.com/9edp4w, т.е. пробелы заменяются +, что вполне логично. Кто сталкивался с данным и как решал?
Dmitry Ban написал: 1) Скопировать bitrix:catalog.smart.filter в свое пространство имён, поменять в нём название класса в файле class.php (скажем, с CBitrixCatalogSmartFilter на CBitrixCatalogSmartFilter2). Первый фильтр брать из пространства имён bitrix, второй -- из вашего.
Данный метод не сработал.
Кому-нибудь удавалось подключить два фильтра на одной странице? У меня тоже появилась такая необходимость...
У меня решилось гораздо проще. Была точно такая же ситуация. Имелось два раздела - Новости и Публикации, все это работало таким же способом через аякс. Так вот, в новостях все работало, а в публикациях нет. При переходе на детальную новость выводился тупо текст публикаций. Что я только с ЧПУ не делал. Пробовал и вашим способом подключать хэдэр и футер по условию. Но! Решение оказалось простым гораздо. Залез в urlrewrite.php и там увидел, что мой раздел с публикациями перенаправляется не туда куда нужно) Было "PATH" => "/include/publication.php", а нужно "PATH" => "/publication/index.php"!!!!