1c-bitrix

Битрикс ЧПУ, готовим символьный код элемента [bitrix api]

Итак вот вам маленький пример, снипет, как можно легко подготавливать добавляемые элементы для поддержки ЧПУ в Битриксе.

Вообще считаю что это должно быть по умолчанию. Т.е. выставляться в настройках инфоблока просто галочкой, так как это займет для разработчиков БУС примерно 1 час.

Пока этого нет, будем делать сами. Итак сейчас в стандартном функционале множества компонент добавили ЧПУ по полю CODE элемента. Это хорошее поле и удобно с ним работать, да и именно для этого оно видимо и предназначено, хотя можно использовать и просто свойства да и пользовательские свойства тоже.

Итак задача :

1. Нужно название элемента переводить в траслит и добавлять его в поле CODE.

2. Это нужно делать автоматически.
Continue reading

Правильное удаление элементов [bitrix api]

Есть такая уязвимость, когда атакующий может удалить элемент, каталог, или даже инфоблок. Для этого нужно найти страницу или скрипт который выполняет эти действия.

После чего ему нужно всего навсего добавить картинку, например на форум, и в адрес url картинки подставить определенно сформированный адрес.

Например есть функционал вывода новостей, причем пользователь может как добавлять так и удалять новости. Ссылка на удаление новости  выглядит у нас вот так.

www.site.ru/news/detail.php?ID=777&del=Y

Теперь если мы добавим пост на форум или блоги, и добави картинку с ссылкой,

<img src=»www.site.ru/news/detail.php?ID=777&del=Y» />

то администратор будучи авторизованным благополучно удалить элемент в ID 777. Проблема думаю ясна, теперь как это предотвратить.

Continue reading

Создаем опции для пользователя. cохранение настроек страницы для авторизованных пользователей [bitrix api]

В битриксе есть не задокументированный инструмент для весьма интересной задачи. Допустим нам нужно открыть ту страницу сайта на которой последний раз был пользователь. Или настроить фильтры на списках элементов, т.е. задача где-то хранить последние значения по нужным движениям пользователя на сайте, чтобы когда он вернулся восстановить прежний вид. Это бывает нужно не так часто но нужно иметь ввиду что для этого есть таблица и API с которой вполне можно работать не изобретая своего велика.

Итак класс находится в файле require_once($_SERVER[«DOCUMENT_ROOT»].BX_ROOT.»/modules/main/classes/».$GLOBALS[«DBType»].»/favorites.php»);

Основные методы записи и чтения

function CUserOptions::SetOption($category, $name, $value, $bCommon=false, $user_id=false)

function CUserOptions::GetOption($category, $name, $default_value=false, $user_id=false)

В классе есть еще методы, подробно все освещать не буду так как хочу попробовать использовать этот класс, и написать подробно как и где его можно применять.

2 титла на странице как?… Элементарно Ватсон…

Зачастую юные разработчики очень не внимательно относятся к документации тех средств с которыми они работают. В этом случае начинают появляться мутированные строки кода в web приложении. Это очень плохо, это просто очень очень плохо.

Конечно все через это прошли, и на клепали свою десятку, а то и сотню костылей дабы заработало сцуко.

Continue reading

Комплексные компоненты, маленький баг [bitrix api]

Если кто использует комплексные компоненты в битриксе то возможно сталкивался с тем что метод CComponentEngine::ParseComponentPath который делает практически всю работу по разбору и подмену для ЧПУ возвращает false.

Это происходит потому что может стоять лишний слеш, приведу правильный и не правильный массив описаний URL из документации.

Правильно :

$arUrlTemplates = array("list" => "index.php");

Не правильно:

$arUrlTemplates = array("list" => "/index.php");

Мелочь, а может отнять кучу времени. В доках оставил коммент, так что
надеюсь что вспоткунтся меньше людей.

Компоненты 2.0::Кеширование в компоненте

Хотел написать про кэширование в компонентах по просьбам читателей, но нашел вполне понятное описание в официальной документации . Если честно я его раньше почему-то не видел и не читал, все пришло с опытом.

То что там написано собственно я и хотел написать. Все что нужно для сложного, контролируемого кэша это использовать класс CPHPCache. Это позволит выделить из кэша участи кода которые не нужно кэшировать и указать точное расположение кэша.

Кэш [bitrix api]

Хочу выложить маленький снипет кода для кэширования.

Кэш это наше все. У битрикса есть система кэширования компонентов, она немного заточена под сами компоненты, в этом примере я не буду рассматривать. У нее есть свои плюсы и свои минусы, я расскажу о них чуть позже.

Этот код можно использовать если вы пишите на голом API битрикса обвертки для какого -то сложного функционала.

Continue reading

XML парсер битрикса [bitrix api]

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

Continue reading

TinyMCE + 1с-Битрикс

tinymce

TinyMCE - Javascript WYSIWYG Editor

Пост скорее для новичков битрикса. В нем я хочу показать как просто и легко можно создать компонент. Мы сделаем компонент по выводу виз редактора (WYSIWYG). К сожалению в стандартной поставке упрощенный редактор, мягко говоря не всегда удобен. Я придерживаюсь мнения что нужно чуть больше уделять внимания интерфейсам которые используют именно пользователи сайта, битрикс хоть и что-то сделал для этого, но как всегда не фундаментально. Я это называю как пускание пыль в глаза. Но да ладно, это все понятно, да и написать хороший редактор не очень то и просто. Мы будет интегрировать популярный редактор

TinyMCE + 1с-Битрикс.


Continue reading