Архивы: Апрель 2014

Обрезать текст в битриксе

Для обрезания текста в битриксе есть функция TruncateText, которая отрезает от строки все символы свыше указанной длины и длбавляет в окнчании три точки.
Привер:

$str = "Строка";
echo TruncateText($str, 3);

Так же довольно таки часто встают задачи, обрезать текст с учетом html тегов. Для этого есть функция html_cut класса CTextParser, которая отрезает HTML/text до указанной длины с корректным закрытием тегов.
Привер:

$obParser = new CTextParser;
if($arParams["PREVIEW_TRUNCATE_LEN"] > 0)
$arItem["PREVIEW_TEXT"] = $obParser->html_cut($arItem["PREVIEW_TEXT"], $arParams["PREVIEW_TRUNCATE_LEN"]);

Есть задачи немного и посложнее.=) Необходимо обрезать текст по словам, а не по символам. К нам придет напомощь такая вот функция:

// $str - исходная строка
// $word_limit - количество символов, которое нам нужно
function anouncetext($str, $word_limit) {
	preg_match("/.{".$word_limit."}[^.!;?]*[.!;?]/si", $str.". ", $matches);
	$str=$matches[0];
	echo $str;
}

Наложение водяного знака средствами битрикс

В Битрике есть возможность реализовать наложение водяного знака на изображения. Можно наносить как изображения, так и текст. Чтобы нанести водяной знак на фотографию достаточно передать параметры фильтра:

$arFilter_watermark = Array(Array('name' => 'watermark',   'position' => 'br', 'size'=>'real',   'type'=>'image',   'alpha_level'=>'10',   'file'=>$_SERVER['DOCUMENT_ROOT'].'/img/watermark.png',    ),);

Возможные значения параметров:
position — указание расположения водяного знака на изображении возможно в двух нотациях:
tl | tc | tr | ml | mc | mr | bl | bc | br
или
topleft | topcenter | topright | centerleft | center | centerright | bottomleft | bottomcenter | bottomright

size — big | medium | small | real, для произвольного изменения масштаба возможно указание коэффициента через параметр ‘coefficient’, параметр ‘real’ применим только для изображений (‘type’=>’image’)
type — text | image
alpha_level — прозрачность от 0 до 100, где 0 = прозрачно, 100 = непрозрачно
text — текст водяного знака
font — путь к файлу с TTF-шрифтом
color — цвет в HEX-формате

Пример реализации:

$arFilters = Array(array("name" => "watermark", "position" => "right", "size"=>"real", 'type'=>'image', "file"=>$_SERVER['DOCUMENT_ROOT']."/images/watermark.png"));

Вместо /images/watermark.png подставляете свой путь к изображению водяного знака.

Далее при ресайзе изображения добавляете вывод фильтра $arFilters

$PICTURE = CFile::ResizeImageGet($arResult["PREVIEW_PICTURE"], Array('width'=>455, 'height'=>315), BX_RESIZE_IMAGE_EXACT, true, $arFilters);

Далее следует разместить код вывода нашего изображения с водяным знаком:

<img src="<?=$PICTURE["src"]?>" alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" />

Получение полей и свойств элемента по его ID в битриксе

Чтобы вывести поля и свойства элемента по ID необходимо воспользоваться следующим кодом:

$arFilter = Array("IBLOCK_ID"=>$arElement[IBLOCK_ID], "ID"=>$arElement[ID]);
$res = CIBlockElement::GetList(Array(), $arFilter);
if ($ob = $res->GetNextElement()){;
    $arFields = $ob->GetFields(); // поля элемента
    print_r($arFields);
    $arProps = $ob->GetProperties(); // свойства элемента
    print_r($arProps);
   }