programming languages

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

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

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

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

Итак задача :

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

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

Рамка вокруг ссылок

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

:focus {outline: none;}

И еще пару примеров:

Для кнопок
button::-moz-focus-inner,
input[type="reset"]::-moz-focus-inner,
input[type="button"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
input[type="submit"]::-moz-focus-inner,
input[type="file"] > input[type="button"]::-moz-focus-inner {/* */
border: none;
}

Для input type="radio"
:focus {-moz-outline: 3px solid #fff !important;}
input[type="radio"]:focus {-moz-outline-radius: 12px !important;-moz-outline-offset: 0px !important;}

Для input type="checkbox"
input[type="checkbox"]:focus {
 -moz-outline-offset: -1px !important;
 -moz-outline: 1px solid #000 !important;
 }

Правильное удаление элементов [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

Парсинг прямых ссылок

Задача состоит в том чтобы пропарсить контент и заменить все прямые ссылки вида

http://yunaliev.ru/

на http://yunaliev.ru/redirect.php?goto=http://yunaliev.ru/

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

Continue reading

Кэш [bitrix api]

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

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

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

Continue reading

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

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

Continue reading

Eclipse code completion php

Итак это скорее быстрая заметка чем пост, но думаю будет полезна. Иногда происходит так что при установки новой версии PHP Development Tools на новый Eclipse, напрочь отказывается работать   code completion из под RSE.

Решение есть, чтобы он видел core функции т.е. базовые, нужно зайти в RemoteSystemsTempFiles открыть .project и вместо <natures>тут что-то было тоже</natures> добавить

<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>

После чего перезагрузить Eclipse.