bitrix: меню из подразделов текущего раздела инфоблока

result_modifier.php

$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;

template.php

if(empty($arResult))return;
foreach($arResult as $itemIndex=>$arItem){
	if($arItem['SELECTED']){
		echo '<ul>';
			foreach($arItem['CHILDREN'] as $arChild){
				$arChildActive=($arChild['SELECTED'])?' class="active"':'';
				echo '<li'.$arChildActive.'>';
					echo '<a href="'.$arChild['LINK'].'">'.$arChild['TEXT'].'</a>';
				echo '</li>';
			}
		echo '</ul>';
	}
}

.left1.menu.php

$aMenuLinks=Array();

.left1.menu_ext.php

if(!defined("B_PROLOG_INCLUDED")||B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
$aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections","",array(
	"IS_SEF"=>"Y",
	"SEF_BASE_URL"=>"",
	"SECTION_PAGE_URL"=>"/section/#SECTION_CODE#/",
	"DETAIL_PAGE_URL"=>"/section/#SECTION_CODE#/#ELEMENT_CODE#",
	"IBLOCK_TYPE"=>"razdel",
	"IBLOCK_ID"=>"81",
	"DEPTH_LEVEL"=>"2",
	"CACHE_TYPE"=>"A",
	"CACHE_TIME"=>"0",
	"CACHE_TYPE"=>"A",
	"CACHE_TIME"=>"3600"
	),
	false
);
$aMenuLinks=array_merge($aMenuLinks,$aMenuLinksExt);

Вызов:

$APPLICATION->IncludeComponent("bitrix:menu","vert",array(
	"ROOT_MENU_TYPE"=>"left1",
	"MENU_CACHE_TYPE"=>"A",
	"MENU_CACHE_TIME"=>"3600",
	"MENU_CACHE_USE_GROUPS"=>"Y",
	"MENU_CACHE_GET_VARS"=>array(
	),
	"MAX_LEVEL"=>"2",
	"CHILD_MENU_TYPE"=>"left1",
	"USE_EXT"=>"Y",
	"DELAY"=>"N",
	"ALLOW_MULTI_SELECT"=>"N"
	),
	false
);
Categories: PHP, Web Tags:

tiny carousel swipe

1. Подключаем Touchwipe с http://www.netcu.de/jquery-touchwipe-iphone-ipad-library
2. При свайпе эмуляция нажатия на стрелки

$(window).load(function(){
	$("#carousel").touchwipe({
		wipeLeft:function(){$("#carousel").find('.next').click();},
		wipeRight:function(){$("#carousel").find('.prev').click();}
	});
});
Categories: Javascript, Web Tags:

php удалить все кроме цифр (оставить только цифры)

$xml.="\t\t\t\t<param name=\"Фасовка\" unit=\"кг\">".preg_replace('/[^0-9]/','',$db->f('f_116_ru'))."</param>\r\n";
$xml.="\t\t\t\t<param name=\"Фасовка\" unit=\"кг\">".preg_replace('~[^0-9]+~','',$db->f('f_116_ru'))."</param>\r\n";
$xml.="\t\t\t\t<param name=\"Фасовка\" unit=\"кг\">".preg_replace('~\D+~','',$db->f('f_116_ru'))."</param>\r\n";
Categories: PHP, Web Tags:

mysql: найти дубли по 2 столбцам

Находим строки в которых и значение chpu и parent_chpu одинаковы

SELECT x.* FROM seo AS x WHERE x.chpu IN ( SELECT y.chpu FROM seo AS y GROUP BY y.chpu,y.parent_chpu HAVING COUNT(*) > 1 ) ORDER BY chpu
Categories: Web Tags:

php — strtolower кроме первой буквы (слово с большой буквы)

Лучший вариант:

<?=mb_convert_case($item['name'],MB_CASE_TITLE,'UTF-8')?>

Не получится преобразовать всю строку в нижний регистр, а затем сделать первую букву заглавной:

<?=ucfirst(strtolower($item['name']))?>

Не будет работать для кириллицы.

<?=ucfirst(mb_strtolower($item['name'],'UTF-8'))?>

Преобразует строку в нижний геристр, но не сделает первую букву заглавной.

Categories: PHP, Web Tags:

php nofollow для внешних ссылок автоматически

function add_nofollow($text){
	return preg_replace('/href="(http:\/\/.*?)"/','href="$1" rel="nofollow"',$text);
}
Categories: PHP, Web Tags:

Пример генерации артикулов

Генерируем в формате A + id с ведущим нулем (7 цифр)

$ac=get_from_base('*','catalog','1','id');
foreach($ac as $c){
	mysql_query("UPDATE `catalog` SET `code`='A".str_pad($c['id'],7,'0',STR_PAD_LEFT)."' WHERE id='".$c['id']."'");
}

т.е. для товара с id 1458 получим артикул A0001458

Categories: PHP, Web Tags: ,