1с битрикс добавить новость
Посмотрел Яндекс метрику на свой сайт, и решил что буду частенько писать сюда именно то, что ищут люди. Итак за последнюю неделю 8 раз пытались найти на сайте информацию о том как вывести компонент новостей на страницу в Битрикс.
Итак приступим:
Создание инфоблока
1. Кликаем в структуре на "Типы инфоблоков" и нажимаем на зеленую кнопку "+ Добавить новый тип"
2. Откроется окно мастера создания инфоблока:
3. Далее в дереве "Типы инфоблоков" находим наш свежесозданный инфоблок и кликаем по нему. Далее на зеленую кнопку "+ Добавить инфоблок".
4. Откроется мастер создания инфоблока. Заполняем примерно следующим образом:
В итоге вы придете вот к такому визуальному редактору, все что вы напишите или выведете вместо фразы "Text here. " и будет отображено на сайте в этом разделе.
Далее два раза кликаем по иконке компонента на странице, откроется мастер настройки компонента.
Итак пишу сверху вниз как заполнить поля:
Еще раз нажимаем сохранить снизу слева. Все инфоблок новостей Битрикс создан, настроен и выведен на сайт.
Мои каналы:
Каналы на которые я выкладываю видео. Контент дублируется, смотрите где удобнее.
Начинаем
Итак имеем готовый инфоблок с разделами:
Необходимо развернуть список "Настройки фильтра", поставить галочку напротив "Показывать фильтр", в поле под ним вписываем слово arrFilter - все больше ничего здесь не трогаем и сохраняемся.
Далее переключаемся в режим редактирования исходного кода:
и в самом начале подключения добавляем строчку:
в итоге должно получиться вот так:
Поясню- цифра 90 это ID раздела новоси которого мы и хотим вывести на страницу.
Собственно после этого на странице выведутся только публикации из нужного нам раздела инфоблока, но над ними будет болтаться компонент фильтра, его необходимо убрать, так как в принципе он не функционален- собственно мы отфтльтровали публикации раздела- и свою задачу он выполнил, находиться на странице ни к чему.
Что бы его убрать, скопируем стандартный шаблон новостей в папку со своим шаблоном:
Открываем для редактирования шаблон списка новостей:
И в нем закомментируем кусок отвечающий за вывод фильтра, примерно с 24-ой по 39-ую строки, на картинке выделено синим:
Вот в общем-то и все. Имеем вывод публикаций только из одного раздела инфоблока Битрикс
Мои каналы:
Каналы на которые я выкладываю видео. Контент дублируется, смотрите где удобнее.
Итак приступим:
Создание инфоблока
1. Кликаем в структуре на "Типы инфоблоков" и нажимаем на зеленую кнопку "+ Добавить новый тип"
2. Откроется окно мастера создания инфоблока:
3. Далее в дереве "Типы инфоблоков" находим наш свежесозданный инфоблок и кликаем по нему. Далее на зеленую кнопку "+ Добавить инфоблок".
4. Откроется мастер создания инфоблока. Заполняем примерно следующим образом:
В итоге вы придете вот к такому визуальному редактору, все что вы напишите или выведете вместо фразы "Text here. " и будет отображено на сайте в этом разделе.
Далее два раза кликаем по иконке компонента на странице, откроется мастер настройки компонента.
Итак пишу сверху вниз как заполнить поля:
Еще раз нажимаем сохранить снизу слева. Все инфоблок новостей Битрикс создан, настроен и выведен на сайт.
Надеюсь все понятно и доступно.
Научимся создавать новые страницы на комплексном компоненте bitrix:news, как осуществляется настройка ЧПУ Битрикс, настроим автоматические кеширование. Сам комплексный компонент будет вызывать простые компоненты bitrix:news.detail и bitrix:news.list.
Создание инфоблока новостей и его настройка
Самое первое, что стоит сделать - создать нужный инфоблок. Можно в отдельном типе инфоблоков, можно в уже существиющем.
Но обратите внимание на галочку в типе инфоблока "Использовать древовидный классификатор элементов по разделам", если её снять, в инфоблоках внутри не будет разделов.
Переходим в панель управления сайтом, открываем Контент - Инфоблоки - Типы инфоблоков и жмем "Добавить новый тип".
Далее снова раскрываем Контент - Инфоблоки - Типы инфоблоков. В списке находим наш новый тип и жмем на него. В нужном нам типе инфоблоков жмем "Добавить инфоблок".
Настройка инфоблока
Для работы ЧПУ требуется настроить параметры работы URL.
Доступные макросы для формирования шаблона адреса доступны рядом с полем по кнопке.
"Индексировать разделы для модуля поиска" и "Индексировать элементы для модуля поиска" - галочки оставим, они нужны для того, чтобы мы могли находить в поиске (например через компонент bitrix:search.page) по сайту разделы и элементы инфоблока.
В итоге должно получиться так. Проверьте слеши в конце в параметрах URL, без них могут быть ошибки.
Переходим к вкладке Поля
Указываем обязательность символьного кода элементов, проверку уникальности кода, автоматическое создание кода из названия элемента.
Аналогично сделаем обязательным символьный код раздела во вкладке "Поля разделов".
Наконец, сохраним инфоблок.
Создание страницы новостей
Вручную копировать откуда-то вызов $APPLICATION->IncludeComponent(. ) не будем, потому что вызов компонентов меняется с разными версиями битрикс. Самая актуальная и подходящая версия вызова компонента - в визуальном редакторе на нашем сайте. Этот способ еще и самый удобный.
Не надо помнить для bitrix:news.list свойства, для bitrix:news.detail. Все параметры будем задавать через визуальный редактор.
Перейдем на главную страницу сайта, раскроем панель администратора (эрмитаж), нажмем Создать раздел.
Должна открыться такая страница. "Текст. " сразу удаляем.
В поиске компонентов ищем news, зеленый компонент перетаскиваем в окно редактирования. Зеленый цвет компонента говорит о том, что он комплексный.
Если списка компонентов у вас нет, нажмите на кнопку справа, он откроется. Если компонент не перетаскивается, проверьте включенный режим правки, должен быть первый "Визуальный режим".
Перетаскиванием добавьте компонент на страницу.. Так мы добавили на страницу комплексный компонент bitrix:news.
Через несколько секунд, после перетаскивания компонента, у вас появится окно его редактирования.
Выберите тип инфоблока и сам инфоблок - те, которые мы недавно создавали.
Настройки ЧПУ
Далее перейдем к вкладке Управление адресами страниц.
Если вкратце, то принцип работы комплексного компонента такой:
Сам комплексный компонент не кешируется, потому что в нем мало логики и совсем нет обращений в базе данных.
В каких файлах какой компонент вызывать:
- news.php - bitrix:news.list, либо bitrix:catalog.section.list, для вывода разделов, вместо элементов.
- section.php - тот же bitrix:news.list с передачей в параметрах этого:
Либо можно использовать компонент bitrix:catalog.section.
Кеширование
В параметрах кеширования проверяем, чтобы было Авто + Управляемое, задано приемлемое время кеширования и снята галочка Учитывать права доступа.
Навигация
Когда страница отсутствует
Последний пункт в настройках компонента - настройка 404 ошибки. Поставим галочки "Устанавливать статус 404" и "Показ специальной страницы", чтобы при отсутствии страницы пользователь видел что страница отсутствует при наборе не верного адреса, а не список новостей. Это важно для SEO, чтобы не было дублей страниц.
Всё сохраним и получим раздел с новостями на сайте! При сохранении комплексного компонента, в корне сайта в файле urlrewrite.php создается запись, с помощью которой битрикс определяет обработчик для адресов, которых физически на сайте не существует.
Если компонент сохранять вручную, через FTP, то запись не создастся и ЧПУ работать не будет. Тогда достаточно пересохранить компонент.
Если у вас 404 ошибка в комплексном компоненте
Если в разделе с комплексным компонентом Битрикс говорит вам, что страницы нет, возможно у вас следующая ошибка:
ЧПУ настроен на работу с символьными кодами, а они не заполнены
Включите обязательность, автогенерацию из названия элемента и заполните для всех записей код.
Разные настройки ЧПУ в параметрах компонента и инфоблока.
Как проверить правильность настройки ЧПУ я описал в статье выше. Перейти
Не создалась запись в urlrewrite.php
В корне сайте откройте файл urlrewrite.php, в нем должны быть строки по типу
Где /novosti - папка с комплексным компонентом.
Побился .htaccess
В корне сайт откройте файл .htaccess. В нем обязательно должны быть строки:
Если их нет - добавьте. В случае этой проблемы на сайте не будет работать ни один комплексный компонент.
Проблему сразу можно определить или отсечь посмотрев на ошибку 404. Если загружен шаблон сайта, то 404 из Битрикс, если же вы видите черно белую ошибку от Apache или Nginx, то в битрикс лезть нет смысла. Надо разбираться с .htaccess.
Тут стоит искать проблему в .htacces, Apache, Nginx:
А тут мы видим уже работу Битрикс, значит до него запрос дошел, надо разбираться с ним:
Не верная передача параметров из комплексного компонента в простой
Когда вы на странице добавили комплексный компонент, например bitrix:news, то настраиваете вы его. При том сам он никакую логику не несет, кроме как распределение запросов между простыми компонентами.
И проблема может быть в том, что не все параметры корректно передаются в простой компонент.
Откройте шаблон комплексного компонента и посмотрите как вызываются простые компоненты. Всё должно передаваться из $arParams или $arResult.
Вот я открыл файл шаблона детальной страницы в комплексном шаблоне, тут вызов bitrix:news.detail, у меня путь такой: /bitrix/templates/furniture_pale-blue/components/bitrix/news/.default/detail.php. В файле я вижу что всё хорошо, "захардкоженых" параметров нет.
Битрикс не может определить какую страницу открывать
Покажу как сделать в 1С-Битрикс форму обратной связи, как её настроить, чтобы принимать лиды.
Будет использоваться модуль bitrix webforms.
Создание и настройка формы в административном разделе
Прежде, чем приступать, рекомендую выключить упрощенный режим редактирования форм в настройках модуля Вебформы. И сохранить настройку, соответственно.
Теперь идем в Сервисы -> Веб формы -> Настройка форм и жмем там Создать, чтобы создать форму.
Во вкладке Свойства заполняем все необходимые поля. Во вкладке "Доступ" проверьте, чтобы для группы "Все пользователи" было право "Заполнение формы".
Капчу на данном этапе включать не будем.
Жмем Применить, чтобы создать форму.
Переходим во вкладку Вопросы и добавляем их.
Настройка полей для формы:
Так же создаем статус по умолчанию для результатов, если он не создался.
Заголовок: Default. Во вкладке Доступ для всех операций поставьте "Создатель результата".
В панели администратора всё добавили и сохранили, молодцы!
Вывод формы в публичном разделе сайта
Если вы хотите разместить форму на отдельной странице, создайте страницу для формы.
А если хотите разместить в шаблоне, например в шапке, тогда создайте временную страницу, чтобы настраивать форму там. После скопируете вызов компонента формы с временной страницы. Я создам файл test.php.
Открываем редактирование страницы в визуальном редакторе, в компонентах ищем form.result.new, перетягиваем в окно правки.
Если нет поиска компонентов, то нажмите на кнопку у правой границы редактора.
Через несколько секунд появится окно настройки компонента.
Там нам надо заполнить:
После сохранения компонента, на странице появится форма. Она не очень красивая, поэтому установим свой шаблон.
Включим режим правки, наведем курсор на форму, там скопируем шаблон, как показано на картинке.
Укажем новое название шаблона, шаблон сайта - текущий.
В шаблоне компонента сразу удалим все лишние файлы. Если их не удалить, в будущем они будут создавать путаницу при доработке шаблона, потому что будем иметь полно файлов не понятного назначения. А еще сайт будет тяжелый, так как пользователь будет получать много не нужных скриптов и стилей.
Оставим только файл template.php
Приступим к редактированию шаблона.
В template.php доступны следующие переменные:
$arResult["F_RIGHT"] - код права на доступ к текущей форме (вкладка Доступ формы)
$arResult["WEB_FORM_NAME"] - символьный код формы
$arResult["arrVALUES"] - значения полей введенные пользователем
$arResult["CAPTCHACode"] - уникальный код капчи. Требуется для вывода картинки.
$arResult["arForm"]["STAT_EVENT1"] - event1 с вкладки Статистика формы
$arResult["arForm"]["STAT_EVENT2"] - event2 с вкладки Статистика формы
$arResult["arForm"]["STAT_EVENT3"] - event3 с вкладки Статистика формы
Для вывода полей надо брать вопросы из $arResult["QUESTIONS"] по символьному коду.
- CAPTION - имя поля
- IS_HTML_CAPTION - имя поля в формате HTML, Y/N.
- REQUIRED - обязательно к заполнению, Y/N.
- IS_INPUT_CAPTION_IMAGE - есть ли изображение вопроса
- HTML_CODE - HTML код поля
- STRUCTURE - детальное описание поля
- IMAGE - описание изображения вопроса, если IS_INPUT_CAPTION_IMAGE равен Y.
Например, чтобы вывести инпут поля с символьным кодом NAME надо сделать в шаблоне так:
На основе переменных выше соберем шаблон
Логика его такая:
Вначале проверяем, подключает ли файл Битрикс или его открыл пользователь введя в браузере адрес шаблона. Если не битрикс - блокируем генерацию шаблона.
- выводит открытие формы со служебными скрытыми полями.
Поле web_form_submit в значении Y - триггер для Битрикс, говорящее о том, что форма отправлена и надо бы проверить, что там ввел пользователь.
Если есть ошибки - выводим их в диве с классом errors.
Далее выводим три поля, у каждого: Имя, если обязательное - галочка, HTML код инпута для ввода.
На этом можно закончить, форма уже будет работать.
Ajax отправка
Еще не забыли про ajax? Сейчас покажу вариант, который работает даже без JQuery.
Создайте в папке шаблона компонента файл script.js с контентом:
В шаблон (наш template.php) после добавьте строку . В конец файла добавьте следующее:
Выше мы привязали через функцию ajaxForm() ajax к форме. В $templateFolder хранится ссылка на папку текущего шаблона, в ней мы создадим файл ajax.php. Путь файла, например, может получиться такой: /bitrix/templates/books/components/bitrix/form.result.new/request_form/ajax.php.
Последний штрих - создать файл обработчик ajax запросов.
Создайте в папке шаблона компонента файл ajax.php с контентом:
В этом файле мы принимаем запрос от пользователя, если есть ошибки, выводим их в JSON, если всё успешно, так же через JSON говорим об успешности.
Аналогично компоненту веб формы, запускаем обработчики событий.
В этом варианте нет минусов, как в варианте с битриксовым аякс, потому что битрикс подменяет каждый раз HTML в нашей форме, а в текущем варианте DOM страницы не трогается.
Ajax. Битриксовый вариант.
Чтобы форма отправлялась без перезагрузки страницы, надо добавить в параметры вызова компонента следующее:
"AJAX_MODE" => "Y",
"AJAX_OPTION_SHADOW" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
Кстати, с помощью этих параметров добавить AJAX можно в любой компонент. Эти параметры - не особенность вебформ, реализована работа с ajax в базовом классе компонентов.
Теперь Битрикс сам добавит нужные скрипты.
Алгоритм работы Ajax формы:
Из этой логики мы получаем некоторые нюансы. Поля формы, обработанные на джаваскрипте при загрузке страницы, снова будут не обработанные, так как они заменились, а события загрузки страницы заново не было.
Особенность 1
Если в форме в поле телефона на JS ставится маска, например $('.my_phone_input').mask('9 (999) 999 9999'), то маска пропадет после замены битриксом формы. Поэтому маску придется накладывать в файле template.php, чтобы она накладывалась каждый раз заново.
Особенность 2
Если мы форму используем в попапе, а при открытии окна верстка копируется в отдельный блок (так работает fancybox) ajax режим работать не будет.
Представим ситуацию: верстку всего попапа мы убрали в шаблон формы. Имеем структуру на странице, как показано ниже.
Настройка капчи
Чтобы в форме появилась капча:
Добавьте в шаблон формы следующий код:
В настройках формы включите показ капчи.
На этом капча уже будет работать.
Обновление капчи пользователем.
Теперь, если пользователь не может прочитать код, он может обновить картинку.
Настройка формата изображения капчи
Вид капчи можно настроить в панели администратора в разделе Настройки > Настройки продукта > CAPTCHA.
Своя верстка полей ввода в форме
До этого момента поля в форму мы вставляли HTML_CODE вопроса, в котором уже содержится код инпута. Давайте и его сами генерировать, ведь бывает и такая необходимость.
Функцию генерации поля ввода объявим как анонимную, чтобы можно было копировать шаблон компонента и не было ошибок на странице, что одна функция объявлена 2 раза.
- Для поля должен быть указан соответствующий тип type.
- Требуется указать имя поля (name).
- Если форма отправлена и были ошибки, значения в поле не должны пропадать.
- Если поле обязательно к заполнению, должен быть атрибут required.
- Для полей ввода номера телефона добавим класс phone.
- Должна быть поддержка двух типов полей: text и textarea, так как в форме мы использовали только их.
В файле result_modifier.php шаблона формы добавим такой код:
Мы создали функцию, которая попадет в файл template.php, установили имя, класс из параметров вопроса, атрибут обязательного поля, значение, введенное пользователем.
В template.php вместо вывода готового HTML кода поля, выведем его через нашу функцию.
Читайте также: