Показаны сообщения с ярлыком php. Показать все сообщения
Показаны сообщения с ярлыком php. Показать все сообщения

среда, 4 декабря 2013 г.

Битрикс-компонент «продвинутая форма»

Этот компонент работает с инфоблоками (рассматривается как замена модуля веб-форм). Поля формы берутся из свойств инфоблока и данные заполненной формы сохраняются в этот же инфоблок. Результаты формы так же отправляются на e-mail администратору и на e-mail, заполнившему форму (если имеется свойство с символьным кодом "email" и оно было заполнено). Шаблоны этих e-mail-ов хранятся как элементы другого инфоблока (см. инструкции ниже).

четверг, 11 августа 2011 г.

1С-Битрикс: Иерархичное меню и result_modifier

Приветствую! Наверное уже есть множество способов решения данной задачи, но я решил сделать новый велосипед. Зачем? Не знаю. Захотел сделать простое и кроткое решение. Пожалуй не только мне досаждает то, что у Битрикса стандартный шаблон модуля меню почему-то выдаёт массив элементов одним уровнем и вложенность определяется только по ключу DEPTH_LEVEL. Приходится выкручиваться всякими финтами с подстановкой </li></ul> в начале новой итерации цикла, но это эстетически никак не доставляет, полагаю, что никому.

Я написал простой result_modifier.php, который подкладываю в директорию шаблона:
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

$menuList = array();
$lev = 0;
$lastInd = 0;
$parents = array();
foreach ($arResult as $arItem) {
    $lev = $arItem['DEPTH_LEVEL'];
    
    if ($arItem['IS_PARENT']) {
        $arItem['CHILDREN'] = array();
    }
    
    if ($lev == 1) {
        $menuList[] = $arItem;
        $lastInd = count($menuList)-1;
        $parents[$lev] = &$menuList[$lastInd];
    } else {
        $parents[$lev-1]['CHILDREN'][] = $arItem;
        $lastInd = count($parents[$lev-1]['CHILDREN'])-1;
        $parents[$lev] = &$parents[$lev-1]['CHILDREN'][$lastInd];
    }
}
$arResult = $menuList;
В итоге мы имеем ключ CHILDREN у пункта меню, если у него имеются дочерние пункты меню, и соответственно дочерние у дочерних (we need to go deeper). Обычное и логичное разветвлённое иерархичное меню.

Вот код в файле: http://lotsmanov-va.narod.ru/files/bitrix_blog/menu_levels/result_modifier.txt

UPD 11.08.2011: Исправил имя ключа children на CHILDREN, совсем забыл про единство стиля.

четверг, 5 мая 2011 г.

PHP: Класс ucResizeImg v2.0, универсальный алгоритм ресайза изображений

Первоначально приветствую вас и надеюсь вы не потратите время зря. Следующий модуль я создавал первоначально для себя, стараясь покрыть все возможные тривиальные (может некоторые и не совсем тривиальные) задачи, касательно резайзинга изображений на серверной стороне. Но также хочу поделиться со всеми своим трудом, поскольку прошлая версия этого модуля, намного менее совершенная, получила резонанс, и пришлась очень кстати многим. Это был файл, содержащий 2-е функции: http://dev.1c-bitrix.ru/community/webdev/user/25535/blog/1446/

По советам потребителей прошлой версии, я объединил эти 2-е функции в одну, если так можно сказать. Я создал класс, существенно расширив функционал и универсальность, также используя более дружелюбную параметризацию. 1С-Битрикс режим теперь включён внутрь класса, нужно только активировать его, в то время как в прошлой версии — это были два отдельных скрипта. Обо всех изменениях думаю рассказывать сейчас не стоит, ибо скорее всего вы видите этот модуль впервые, лучше я расскажу о каждой возможности отдельно. Да и по-моему эту версию и прошлую уже можно считать двумя разными не связанными между собой скриптами.

Возможности модуля:
  • Получение отрезайзеного изображения;
  • Поддержка форматов: JPEG, PNG, GIF (выходящий файл всегда JPEG);
  • Кеширование выходящих файлов;
  • Гибкая и универсальная параметризация;
  • Совместимость с 1С-Битрикс;
  • Возможность выдавать строгие размеры изображения;
  • Имеется режим отладки.