Кастомизация компонента «хлебные крошки» в Битрикс

Чтобы добавить на страницу компонент «хлебные крошки» (bitrix:breadcrumb), необходимо открыть страницу (либо шаблон сайта), затем в визуальном редакторе добавить элемент Служебные→Навигация→Навигационная цепочка.

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

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

<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
//delayed function must return a string
__IncludeLang(dirname(__FILE__).'/lang/'.LANGUAGE_ID.'/'.basename(__FILE__));
$curPage = $GLOBALS['APPLICATION']->GetCurPage($get_index_page=false);
if ($curPage != SITE_DIR)
{
   if (empty($arResult) || $curPage != $arResult[count($arResult)-1]['LINK'])
      $arResult[] = array('TITLE' =>  htmlspecialcharsback($GLOBALS['APPLICATION']->GetTitle(false, true)), 'LINK' => $curPage);
}
if(empty($arResult))
   return "";
$strReturn = '<div class="Breadcrumbs"><a title="'.GetMessage('BREADCRUMB_MAIN').'" href="'.SITE_DIR.'">Главная</a>';
for($index = 0, $itemSize = count($arResult); $index < $itemSize; $index++)
{
   $strReturn .= ' <span class="Del">&raquo;</span> ';

   $title = htmlspecialcharsex($arResult[$index]["TITLE"]);
   
   if($arResult[$index]["LINK"] <> ""&&$index<(count($arResult)-1))
      $strReturn .= '<a href="'.$arResult[$index]["LINK"].'" title="'.$title.'">'.$title.'</a>';
   else
      $strReturn .= '<span>'.$title.'</span>';
}
$strReturn .= '</div>';
return $strReturn;
?>

Читать далее

Селекторы JQuery

Небольшой справочник по селекторам JQuery.

Список селекторов

Базовые
«*» — все элементы
«.className» — элементы с классом className
«#idName» — элемент (один!) с идентификатором idName
«tagName» — элементы с заданным именем тега

Комбинированные селекторы
Селекторы, находящиеся в одном выражении, взаимодействуют между собой практически так же, как в правилах CSS
«first, second, …» — элементы удовлетворяющие любому из селекторов first, second, …
«outer inner» — элементы из inner, которые являются потомками (т.е. лежат внутри) элементов из outer
«parent > child» — элементы из child, которые являются прямыми потомками элементов из parent
«prev + next» — элементы из next, которые следуют непосредственно за элементами из prev
«prev ~ next» — элементы из next, которые следуют за элементами из prev

Читать далее

Отладка PHP кода в консоли браузера

Сегодня я задумался, как вывести print_r в консоль браузера? Ведь, сколько раз мы писали злосчастные var_dump и print_r и после этого долго мотали страницу в поиске отладочной информации, а если отладку нужно производить на боевом сайте — то клиенты могли увидеть вашу «работу» по устранению неисправностей.

Итак, поехали: реализации функции вывода отладочной информации PHP в консоль браузера

<?
function cl_print_r ($var, $label = '')
{
	$str = json_encode(print_r ($var, true));
	echo "<script>console.group('".$label."');console.log('".$str."');console.groupEnd();</script>";
}
function cl_var_dump ($var, $label = '')
{
	ob_start();
	var_dump($var);
	$result = json_encode(ob_get_clean());
	echo "<script>console.group('".$label."');console.log('".$result."');console.groupEnd();</script>";
}
//пример использования:
$mas = array ("1", "2", "3", array("key"=>"value"));
cl_print_r($mas, '$mas log cl_print_r');
cl_var_dump($mas, '$mas log cl_var_dump');
?>

В итоге всё будет выглядеть примерно так:

Читать далее

Полезные функции при выводе информации на русском языке (окончания, номера месяцев, дней)

Очень часто веб-разработчики ленятся и вместо, скажем, надписи «3 дня» пишут «дней: 3». Действительно, зачем заморачиваться и программировать еще и функцию подбора окончания слова? Я решил упростить Вам эту задачу и представляю свои функции, которые использую в проектах.

Функция подбора окончания слова:

function num2word($num, $words) {
    $num = $num % 100;
    if ($num > 19) {
        $num = $num % 10;
    }
    switch ($num) {
        case 1: {
                return($words[0]);
            }
        case 2: case 3: case 4: {
                return($words[1]);
            }
        default: {
                return($words[2]);
            }
    }
}

Пример использования:

Читать далее