Начинаю переходить на создание магазинов и в душе возникает смятение, как все же правильно делать каталог и корзину в магазине.
До этого я кастомизировал компоненты не для магазинов в основном, магазины только в части техподдержки. И когда я кастомизировал, например news.list, то я обычно удалял шаблон по умолчанию и делал все с нуля, под уникальную верстку, скопировав со стандартных шаблонов в основном вывод тех или иных полей, чтобы ускорить процесс. Но с кастомизацией компонентов каталога история получается иная. Тут намешано php с javascript прилично и проверенным способом сделать корректно не получилось. Пришлось оставить стандартный код и ухищряться, чтобы впихнуть нужную верстку, промеж стандартной битриксовой, некоторые блоки нельзя было удалить, т.к. стандартный функционал переставал работать, пришлось что-то оставить, что-то скрыть для работоспособности функционала из коробки (например чтобы работало увеличение, уменьшение, пришлось оставить
хотя мне это в моей верстке сто лет в обед нужно. Я даже сделал минимальный шаблон путем удалил, посмотрел работает или уже нет)), чтобы выводилась цена, кнопка и увеличение, уменьшение количества товара, чтоб легче было кастомизировать, но и тут бывает сюрпризы вылазят при интеграции верстки. Попробывал с ходу проследить цепочку, например, работы кнопок увеличения и уменьшения и тут приятный сюрприз)) одна функция javascripta вызывает другую, та еще одну и еще и еще, зачем такие сложности, видимо в силу своей малой компитентности, не совсем понимаю, но погуглив нашел старые шаблоны каталога и оказалось, что всего-то нужно отправить запрос с параметрами к этому же компоненту, но сейчас в 15 версии это реализовано через 100500 шагов.
Извиняюсь за многобукавок), но хочется максимально понятно сформулировать вопрос, как правильно делать кастомизацию стандартного шаблона каталога битрикса при создании магазина? Либо с нуля делать свой шаблон и в будущем им пользоваться, а дефолтный использовать только как пример, либо нужно и дальше детально и досконально все же докапываться до всех тонкостей текущего шаблона .default, хитросплетений php and javascript, и научиться промеж них вставлять нужный мне функционал и верстку. Спасибо, что дочитали до конца, буду рад любому экспертному мнению в данном вопросе.
зы Книжку чтоль кто-нибудь написал бы по кастомизации каталога и корзины, без размазывания и прилюдий, я б купил за тысячу другую такой труд. зызы Мож самому разобраться да и написать... шутка:D
Чем же Вас так пугают несколько шаблонов сайтов? Для главной создать отдельный шаблон, если структуры разные, да и все. Хедеры и футеры одинаковые? Вынесите во включаемые файлы, да и правьте в одном месте при изменениях. Если хотите все запихнуть в один шаблон, то без if else не обойтись, и с чего это интересно это стало говнокодом использование if else?
Будьте осторожны с этим кодом, может закешироваться и показаться неавторизованным пользователям, если в компоненте делаете, лучше передавать параметр через arParams, тогда кеш будет создаваться отдельно для админов и нет. Или используете AddMessage2Log
Подскажите, пожалуйста, у кого-нибудь был удачный опыт интеграции на сайт сервиса мобильные сотрудники от МТС? А то уже третий день бьюсь и все бестолку. Работают они через SOAP, я подключаюсь к ним, получая токен, выбираю id сотрудников и id запросов и остается только получить координаты пользователей (подписчиков) и тут возвращается неудача обработки запроса. Вот часть кода получения координаты пользователя (возвращается статус FAILURE):
В ТП мобильных сотрудников отправлял весь php код, все что возвращают их soap функции, но у них ответ один:
Цитата
Добрый день!
Для разбора ошибки пришлите информацию вида:
1) Нам НЕ нужен ваш код 2) Нам нужен запрос к нашему API, либо в дампе, либо приложением в txt 3) Нам нужен ответ от API, либо в дампе, либо приложением в txt
Пожалуйста, сохраняйте номер запроса по ходу всей дальнейшей переписки, не изменяйте поле «тема» при ответах.
Ладно думаю, никаких рекомендаций, как им предоставить то, что они хотят нет, воспользовавшись поиском нашел Wireshark, перенес сайт на веб окружение по винду, установил Wireshark, сделал дамп запросов для функции GetRequest и отправил, вчера вечером последовал ответ от ТП:
Цитата
Добрый день!
Остался последний шаг - переключитесь с https на http, запустите сниффер, сделайте запрос, и пришлете что получилось.�
Пожалуйста, сохраняйте номер запроса по ходу всей дальнейшей переписки, не изменяйте поле «тема» при ответах.
Понимаю, что что-то я не понимаю в этой схеме в виду неопытности интеграции сервисов, но если кто-то уже делал подобное или может направить на путь истинный, помогите, пожалуйста.
Я б тоже хотел почитать нормально расписанные примеры по данной теме, но боюсь тут придется только самому ковыряться в стандартных компонентах, чтоб разобраться. Я вот начал разбираться с компонентом оформления заказа и корзиной, как да что работает, и периодически наступает ступор. Нашел старые шаблоны на одном сайте, там вроде без js и все более менее понятно, отправил запрос к компоненту с get параметрами и все сработало. А в текущем шаблоне корзины, например, хз как разобраться с ходу, все через js, начинаешь копать по стилям, нашел одну функцию js, она использует другую, нахожу ее, там еще одна и так еще много много раз . А простого шаблона для быстрого старта, увы нет, а он ох как нужен таким новичкам, как я...
в браузере, например хроме, нажмите правой кнопкой мыши по интересующим дивам и "Просмотр кода элемента". В появившемся окне смотрите стили (обычно справа), напротив которых будут ссылки на стили. Если адрес будет содержать непонятные имена с идентификаторами, то скорей всего стили либо в самом компоненте в файле style.css, либо в файле стилей шаблона сайта, либо подключаются в шаблоне сайта с помощью специальных функцию.
Если есть возможность, то лучше кастомизировать стандартные, с уже готовым кешированием. Если все же не получается сделать так, то по столь скудному коду маловероятно, чтоб гуру битрикса помогли (например непонятно, что за класс; Ваш или API битрикса).
1. Вчера начал работу с highload блоками и обнаружил в компоненте highloadblock.view, вывод ошибок прям в component.php (стр 51-55):
Код
if (empty($row))
{
ShowError(sprintf(GetMessage('HLBLOCK_VIEW_NO_ROW'), $arParams['ROW_ID']));
return 0;
}
Это что, никак побороть не получится, получается? Только копировать и править, но это ж п.ц. какой-то...
2. В этом же компоненте нету кеширования. Правильно ли я понимаю тогда, что highload блоки используются только там, где не должно быть кеширования, и тогда выигрыш в производительности, по сравнению с инфоблоками будет ощутимый. Ведь если инфоблоки и тяжелые, но когда их закешируешь, они сделают эти хайлоады в любом случае. Так? Возможно, предполагается, что нужно компонент этот обязательно скопировать и сделать самому кеширование, скажем CPHPCache или этого нельзя делать?
Для простого вывода элементов с разбивкой постраничной можно воспользоваться компонентами news.list либо catalog.section и в настройках компонента включить вывод пагинации
Мои пять копеек. (Как я сделал на главной для catalog.section ссылки с применением SECTION_CODE_PATH и с минимальным количеством запросов к БД )
в result_modifier.php
//замена поля DETAIL_PAGE_URL из настроек инфоблока, т.к. в catalog.section не работает SECTION_CODE_PATH $arID = array(); foreach ($arResult['ITEMS'] as $arItem){ $arID[] = $arItem['ID']; }
Кузнецов Павел написал: Для чего весь этот изврат с ЧПУ и т.п.? Создайте в инфоблоке разделы "2015" в нем "06" в нем "17" и в нем уже размещайте элемент с кодом nazvanie-posta.
Тогда можно вот этот вариант брать, как самый простой в реализации. Если же вы технически подкованы то можно и по лучше найти реализацию. Не забывайте о ТП битрикса, продукт все же платный, а они хоть и не каждый раз, но хорошо помогают
Я конечно плохо знаю сео, но если вы делаете 301 редирект со старого на новый адрес, то, вроде как, через какое-то время поисковики указывают уже конечную ссылку, а не старую, в гугле так было...
А не правильней ли будет сделать все же редирект для старых страниц на новые адреса? Через время в поисковиках старые адреса поменяются на новые и все ровно станет с новыми адресами
Создал новую группу пользователей для вновь зарегистрированных, в главном модуле отметил ее для вновьзареганных, делаю личный кабинет, вверху страницы определяю константу define("NEED_AUTH", true); (функция IsAuthorized() отрабатывает корректно), но она не срабатывает, когда пользователь уже зарегистрирован в соответствующей группе, и по прежнему выбрасывает форму авторизации. Что еще нужно до настроить, чтобы новый пользователь распознавался как авторизованный с помощью NEED_AUTH?
Если бы не временные рамки, в которые нужно уложиться, то да интересно, не спорю. А так взял нужный компонент, вывел arResult, добавил недостающее и готово)) Под давлением времени и костыли порой начинаешь лепить, т.к. пока многих компонент не знаю.
Мне не админка битрикса нужна, а в публичке личный кабинет, слева меню из двух пунктов (личные настройки, личный публикации), а справа настройки и публикации редактировать нужно, решать нужно на инфоблоках и редакция стандарт. Пока думаю сделать физический раздел на сайте, к нему дать доступ определенной группе пользователей, при регистрации нового пользователя, его, каким-то образом помещать в эту группу. А вот далее пока не пойму как делать. Допустим размещу на странице news.list, в arFilter помещать наверно нужно id пользователя и как-то по нему выбирать его публикации. Для добавления нового и редактирования элемента в инфоблок стандартного компонента не нашел, буду свой делать похоже, для редактированя данных пользователя, судя по всему, тоже свой делать нужно. Как комментарии прикрепить к элементу инфоблока и на чем их делать вообще тоже пока не понятно.
Стоит задача создать личный кабинет пользователя. Пользователь должен зарегистрироваться и в последующем попадать в свой кабинет после авторизации, где он может редактировать свои данные + создавать публикации от своего имени, которые будут сохраняться в инфоблоке, к публикациям также будут прикреплены комменты. Есть какой-нибудь пример по данной задаче, а то что-то по поиску не попался, если нет, то какие компоненты для реализации этой задачи можно использовать?