Ситуация похожая, кастомизированный sale.order.ajax и в одном случае служба доставки показывается, в другом нет. Конкретнее после окончания сессии пользователя выполняю повторную авторизацию и служба доставки показывается, перегружаю страницу и служба пропадает. Сравнивал объект $shipment полученный в $this->initShipment($order); нашёл единственное отличие. В одном случае параметр LOCATION содержит ID местоположения, в другом символьный код http://joxi.ru/L21LaPGSRQdB5m . При этом массив параметров $this->arUserResult['ORDER_PROP'] в методе initProperties() не изменялся.
Проверьте ещё файл в корне urlrewrite.php возможно у вас там создано не верное правило разбора урлов и несуществующую страницу это правило "разбирает" подтягивая какой-нибудь index.php и возвращая при этом статec 200 ok. А лучше сюда скиньте содержимое urlrewrite.php.
Александр Лыженков, мужик ты издеваешься? Тут свой сайт впихнул, на тостере тут ответил https://toster.ru/q/445881 тут https://toster.ru/q/535732 эти вопросы старые и давно решённые. У тебя 33 сообщения на форуме 1С Битрикс где ты рекламируешь свою статью про верную настройку 404-й страницы, ты где SEO изучал вообще? =)
Есть сайт, в разделе партнёров 6000+ организаций, которые сразу же выводятся на Google карту. В разделе используется умный фильтра, с пеудачно-переделанным шаблоном (о не убирает свойства по которым будет пустой результат, в общем используется непонятно как). Фильтр работает в обычном режиме (не ЧПУ), каждый его запрос создаёт ощутимую нагрузку для сайта. На сколько знаю результаты умного фильтра не кешируются чтобы отдавать пользователю максимально свежую информацию о товарах, но в нашем случае список партнёров организаций меняется раз в 100 лет.
Что если отказаться от использования умного фильтра и поставить там обычный или вообще переписать компонент news.list и учитывать все переданные параметры фильтра как уникальный ключ для StartResultCache()? Как лучше поступить. Ещё раз суть задачи максимально запихнуть всё в кеш.
В каталоге 40 000 + наименований товаров, на dev версии сайта сделали ряд больших доработко, итоговый тест надо провести на актуальном каталоге (разница уже в несколько месяцев, на prod всё сильно поменялось). Попытался перенести данные вначале через экспорт xml, который при импорте не захотел грузиться в существующий инфоблок, а начал создавать свой и в итоге завис. Потом через экспорт csv (Контент -> Инфоблоки -> Экспорт -> CSV) , этот экспорт создал csv-шку 30 Гб весом и на сервере кончилось место. ))
Чёт я в затруднении. Как всё это добро перенести так чтобы не положить prod? Можно без картинок, просто товары со свойствами и разделы.
Игнатьев Александр написал: В моей задаче нужно, чтобы формы на сайте работали именно на функционале веб-форм с записью о результатах заполнения в админку.
Игнатьев Александр написал: Пока единственное решение нашёл - добавить скрытые чекбоксы в тело самой формы и с помощью js связать чекбоксы из вёрстки с теми, которые в веб-форме лежат, но хочется более красивого решения.
Александр, это жесть. Сделайте обычную форму, закиньте куда-нибудь в корень/ajax/sendform.php обработчик, примерно с таким кодом:
Код
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); //Подключили ядро битрикса
/* проверка входных данных от формы, можете убрать весь HTML, проверить на пустоту и
т.п., в общем предварительная обработка данных, в итоге собираете массив $mailFields с данными для письма
*/
$mailFields = array('USERNAME'=>$_REQUEST['USERNAME'], .... );
/* дальше используем метод CEvent::Send() или CEvent::SendImmediate()*/
CEvent::Send('ТИП_ПОЧТОВОГО_СОБЫТИЯ', SITE_ID, $mailFields, 'N', ID_ПОЧТОВОГО_ШАБЛОНА);
/* т.е. Send() возвращает идентификатор созданного события, можно проверить это и отдать true или false js-ке,
которая послала запрос с формы и ждёт ответа от этого скрипта */
и не используйте встроенный конструктор форм для битрикса. Там со сложными формами настоящий гемор. И как писала Анна, для тестирования проверяйте событие в таблице b_event.
Александр Карпов, можете повторно написать в саппорт, кинув ссылку на это обсуждение. Может моя заявка потерялась. Хотя мне тут недавно пришло уведомление о том что по моему обращение что-то они там починили. Обращение было больше года назад. ))
Sergey Kruglikov, поставьте IDE какое-нибудь, Eclipse например или PhpStorm, и посмотрите как устроен интересующий вас метод. Если в доках чего-то нет, я смотрю реализацию конкретного метода и сразу становится понятно, что он может, а чего нет. =)
На сайте сделан ajax шаблон постраничной навигации, всё просто, перехватывается клик по ссылке в навигации, ajax-ом отправляется запрос. Из ответа с помощью jquery достаётся содержимое контентной части страницы и заменяется содержимое на текущей странице в том же блоке. Примерно так:
Код
//перехватываение события click()
$.get(
link.attr('href'), //Ссылка, например /catalog/vino/?PAGEN_2=3
function(response) { //Обработка ответа
//ищем товары в ответе, заменяем их в DOM-е текущей страницы
// ищем блок постраничной навигации и зменяем его в DOM-е текущей страницы
}
без композита всё работает безотказно как автомат Калашникова, при включенном композитном режиме наблюдает баг такого характера. Если идти по страницам постраничной навигации по возрастанию, т.е. 2,3,4 ...n всё ок, товары грузятся, блок с навигацией обновляется. Если шагнуть назад, товары пропадают. Я посмотрел что в этом случае приходит в ответе response в js-обработчике постраничной навигации. Там в блоке где должны быть товары висит вот такой вот блок:
и всё. В шаблоне компонента catalog.section у меня все динамическая область идёт на весь шаблон. Т.к. перед вызовом компонента в файле section.php формируется фильтр с учётом ID региона пользователя и на одни и те же товары может быть разная цена в разных регионах. Пришлось обернуть в динамическую область всё. Т.е. шаблон выглядит так:
Код
$this->setFrameMode(true);
//вывод пары статичных элементов не зависящих от фильтра
$frame = $this->createFrame()->begin('');
//тут основной код шаблона, цикл с выводом товаров и т.п.
// потом вывод постраничной навигации т.е. echo $arResult["NAV_STRING"];
$frame->end();
Согласно докам (https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=39&LESSON_ID=3253), чтобы в композите работали скрипты js, я вынес обработчик постраничной навигации прямо в шаблон компонента system.pagenavigation (а то из подключаемого файла script.js не хотело работать). Собственно я не могу понять почему при "возврате" на предыдущие страниы в постраничной навигации с включённым композитом, приходит пустой список товаров и как это можно победить.
Добрый день, заминка с композитом. На сайте есть выбор региона, ID региона попадает в массив фильтра элементов раздела. От этого зависит какие товары (с какими ценами) будут показаны в разделе. Фильтр формируется пере вызовом catalog.section в файле комплексного компонента section.php примерно так:
Код
//Получаем ID региона
$regionID = $geo->getRegionID();
global $arrFilter; //arrFilter - имя фильтра в параметрах компонента
$arrFilter[] = [
"LOGIC" => "OR",
["PROPERTY_REGION" => $regionID],
["PROPERTY_REGION" => false]
];
//вызов компонента
соответственно на первом хите всё кешироется и php больше не работает. Если регион пользователя определился не правильно, он его меняет но страница ведь уже закешировалась и пользователь видит товары другого региона с другими ценами и т.п. Как быть?
Ярослав Абрамов написал: Возможно, все это из разряда "на вкус и цвет".
А как быть с обновлениями? Компоненты дорабатываются, появляются новые параметры, вставляя компонент через визуальный редактор вы сразу получаете в коде полный наборы параметров с учётом всех изменений, а вот описание компонента в документации может отставать от его реальных возможностей.
В общем не беспокойтесь, эта справка даёт всё необходимое для сдачи экзамена.
Можно ли в стандартный компонент sale.order.ajax в блок "товары в заказе" ( http://joxi.ru/gmvRw4lILD367m ) вытащить функционал корзины? Т.е .кнопки +/- и поле количество, чтобы на шаге оформления у покупателя ещё была возможность изменить количество товара.
В старых версиях компонента sale.order.ajax такое реализовывалось без проблем, но новая версия изменилась до неузнаваемости. Может есть примеры где подсмотреть?
Клиент хочет иметь на сайте кнопку "Перейти на полную версию сайта", я вынес все css стили отвечающие за адаптив в отдельный файл adaptive.css, в шаблоне файл подключаю так:
всё работает, но кешируется =)) не пойму как побороть. Может я изначально не так делаю? Может нужно подвязаться на какое-нибудь событие в init.php . Раньше делал подобную штуку с помощью двух шаблонов, и в админке ставил условие в настройках сайта, но сейчас не хочу копировать шаблон, пытаюсь сделать в рамках одного.