КОНЬЯКОВ.ру

Аудит, Разработка, ИБ, Поддержка и SEO сайтов

Category: Bitrix

Ошибочное отображение старых новостей в RSS фиде Новостей Битрикс (проблема кросспостинга через RSS ленту)

Для того чтобы распространять новости по различным социальным сетям нужно использовать отдельные сервисы кросспостинга либо своё решение реализующее данную возможность. Как правило все эти сервисы используют RSS ленту, чтобы публиковать новости. Система кросспостинга периодически (по расписанию) запрашивает RSS ленту сайта, разбирает её на составляющие части и принимает решение. Публиковать новость (если она еще не опубликована) или не публиковать её (следовательно уже опубликована).

В Битрикс, чтобы в новостях была подключена возможность генерации RSS, необходимо в настройках разрешить RSS.

[здесь и далее вам нужно заменить https://www.example.com/ на URL своего сайта]

На странице: https://www.example.com/bitrix/admin/iblock_type_admin.php?PAGEN_1=1&SIZEN_1=10&lang=ru

[где “news” это ID типа инфоблока]

https://www.example.ru/bitrix/admin/iblock_type_edit.php?lang=ru&ID=news

После этих манипуляций в свойствах нужного инфоблока:

Появляется возможность редактировать параметры RSS:

Чтобы включить отображение ссылки на RSS-фид (иконка RSS) нужно (в режиме редактирования битрикс) в включаемом компоненте bitrix:news нажать на шестерёнку

Далее в вкладке “Настройки RSS” выставить нужные настройки RSS:

Также необходимо определить порядок сортировки новостей (вкладка “Источник данных”). Как правило Первичная сортировка происходит “по дате начала активности” (по убыванию), и вторичная сортировка “по ID” (по убыванию):

Просмотр RSS фида. Обратите внимание, что вверху самые свежие новости…

А внизу RSS… старые записи. Почему так может проиходить? Мы же правильно выставили настройки RSS. Правильно выставили направления сортировок, и так далее. Но с завидным упорством вылезают старые записи.

Начал копать, и выяснил что:

Старые новости имели пустоту в поле начала активности (поле не было заполнено). Такие события нежелательны в принципе.

После заполнения этого поля, сохранения, обновления кеша вывода компонента RSS ленты будет выводиться…

Корректный вывод RSS ленты:

Следующим шагом будет
проверка настройки “Поля элементов инфоблока” на странице
https://www.example.com/bitrix/admin/iblock_edit.php?type=news&lang=ru&ID=1&admin=Y&return_url=iblock_section_admin.php%3FIBLOCK_ID%3D44%26type%3Dcatalog%26lang%3Dru%26find_section_section%3D0

Где желательно поставить в поле “Начало активности” значение “Текущие дата и время”, а также поставить галочку “Обязательное поле”.

Благодарю за внимание.

Двуязычная форма в Битриксе

Сегодня мы рассмотрим вопрос создания формы на двух (и более) языках в Битриксе.

Имеем форму:

Где все описания к вопросам на двух языках разделенные слешем (/):

Все действия проводятся в шаболне формы. Чтобы создать новый шаблон, нужно в режиме редактирования:

Нужно скопировать шаблон формы по умолчанию (.default) с новым именем, например visit-form

и выбрать месторасположение (по умолчанию в общем шаблоне .default).

Сохраняем. Затем нажимаем на шестеренку формы, выбираем Заполнение веб-формы -> Редактировать шаблон компонентов:

Мы увидим шаблон формы, а точнее адрес этого шаблона в файловой системе хостинга.

После этого, я настоятельно рекомендую вам найти этот файл в FTP-клиенте, сделать его резервную копию. После этого можете открыть рабочий файл в своём любимом текстовом редакторе, и уже работать с ним.

Далее опишу алгоритм решения вопроса:

Мы определяем элемент(ы) которы(й|е) нужно распарсить на два языка и вывести на той или иной стороне сайта. В моём случае мы определяем массив, где элементов больше 200 (список стран и регионов) – строка 25. Потом пробегаемся по массиву этого отдельного вопроса “Страны” (строка 32) и распарсиваем его на 2 языка – строка 37.

Строки 40-44 описывают условие при котором на той или иной стороне сайта выводится тот или иной язык описания вопроса (в нашем случае название страны-региона то на английском то на русском языке).

Подобный алгоритм используем в отношении самих “Вопросов” – строки 62-70.

В целом код прокомментирован и там всё понятно.

Обновление данных в отдельном результате заполнения формы Битрикс через Bitrix API

Здесь мы обновим ответ у вопроса “Город” у отдельного результата заполнения формы = 428523

<?php

require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");

if (CModule::IncludeModule("form")) {

// обновим Значение для вопроса "Город" (ID поля ответ №25557) у результата заполнения формы №428523

$RESULT_ID = 428523; // id результата
$arVALUE = array();
$FIELD_SID = "SIMPLE_QUESTION_344"; // символьный идентификатор вопроса
$ANSWER_ID = 25557; // ID поля ответа
$arVALUE[$ANSWER_ID] = "Москва";
CFormResult::SetField($RESULT_ID, $FIELD_SID, $arVALUE);

// вот так, например, можно обновить IP адрес поля формы для определенного результата заполнения формы

CFormResult::SetField(428523, 'user_ip', '58.12.103.27');

}

?>

Смотрим символьный идентификатор вопроса (например: SIMPLE_QUESTION_344)
Обновление данных в отдельном результате заполнения формы Битрикс через Bitrix API

ID поля ответа (например: 25557)
Обновление данных в отдельном результате заполнения формы Битрикс через Bitrix API

Смотрим идентификатор поля user_ip:
Обновление данных в отдельном результате заполнения формы Битрикс через Bitrix API

Минификация html кода в 1С-Битрикс

Для ускорения загрузки сайта необходимо уменьшить количество бесполезной информации, передаваемой от сервера к клиенту.

На выходе Битрикс генерирует html-код, в котором много лишних переносов сток, табуляций и пробелов.

Чтобы исправить данную ситуацию, нужно в /bitrix/php_interface/init.php файл внести следующие строки (перед модификацией настоятельно рекомендую сделать резервную копию init.php файла):

Файл init.php правильней всего модифицировать через ftp доступ, т.к. если модифицировать его через веб-интерфейс админ-панели 1С-Битрикс, то при малейшей ошибке в синтаксисе, вы приведете сайт в нерабочее состояние (попросту сломаете его). Чтобы этого не произошло, логиньтесь через ftp к вашему хостингу, находите файл, скачиваете его на компьютер (делаете его копию), далее работаете с ним. После изменения файла, заливаете обратно, проверяете работоспособность сайта. Если всё прошло хорошо, то вы увидите примерно такую картину в исходном коде сайта:

Кастомизация формы битрикс

Ну какого чёрта Битрикс не позволяет задать class для вопроса формы? Почему это возможно только для дочернего элемента вопроса?

1

Т.е. для стандартного <input> задать class можно только в текстовых вопросах. Но в вопросах содержащих ответы, это невозможно. Не текстовые вопросы: radio button, checkbox button, dropdown и др., невозможно задать class для самого вопроса, а не для ответа.

Сейчас есть возможность задать отдельный параметр для ответа:
2

Но не для вопроса:
5

А хотелось бы как-то так, чтобы была возможность задания class для вопроса:
4

Еще хорошо, если битрикс сделает возможность обрамить каждый вопрос в определенные теги. Например вот так:

6

Таким образом, мы сможем делать кастомизированные формы, не прибегая к кастомизации шаблона формы!

Вопрос: Ну почему битрикс за множество лет своего существования до сих пор этого не сделал???

Непонятное нечто или говнокод в дефолтовом шаблоне формы Битрикс (Bitrix)

Почему в шаблоне .default форм Битрикс

default2

для type="radio" одно оформление, а для type="checkbox" другое?

На иллюстрации видно явно, что для type="radio" присутствует ненужный <label>

default

WTF???

Bitrix – Отписка в один клик

1) Создаем директорию (если она еще не создана) include в директории /bitrix/php_interface/.

Читать далее…

© 2007–2018, konyakov.ru