tips and tricks

закрыть сайт паролем .htaccess, .htpasswd

размещаем .htpasswd в корне, пароль генерируем через онлайн сервисы в md5 формат, должна получиться запись в стиле: admin:$apr1$4U6Sd3mX$GRTmqSENCrK9mMTFPV7TE1
AuthType Basic
AuthName "Thats protected Area!"
AuthUserFile /home/bitrix/www/.htpasswd
Require valid-user
<Files .htpasswd>
deny from all
</Files>

Удобное добавление lang языковых файлов к файлам компонента

можно например использовать при ajax запросе файла в шаблоне компонента, после добавление вызова просто вызываем функцию GetMessage(), как в шаблоне компонента: например создали файлик props.php в шаблоне компонента и соответственно создаем одноименный файл в /lang директории для соответствующего языка, радуемся жизни.
<? $this_file_name = pathinfo(__FILE__); require_once($BX_DOC_ROOT.'/bitrix/components/some_space/some_component/templates/.default/lang/'.LANGUAGE_ID.'/'.$this_file_name['basename']); ?>

ajax запрос


$.ajax({       
type: "POST",
url: $(this).attr("action"),
data: $(this).serialize()
,

dataType: 'json'
})
.done(function(data) {
console.log(data);
});

доступ к битрикс api


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

нежадное вытаскивание значение между


preg_match_all('/d="(.*)"/sU',$some_var,$matches, PREG_SET_ORDER);

логирование под админом


global $USER; if($USER->IsAdmin()):
print_r($arrResult);
endif;

масштабированное отображение на мобильных девайсах


<meta name="viewport" content="width=device-width">

вызов jQuery last version и других


<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

Запрет прокрутки окна браузера


$('.some-class').on('focus', function(){
        OffScroll();  //Запустили отмену прокрутки
    });

$('.some-class').on('blur', function(){ $(window).unbind('scroll'); //Выключить отмену прокрутки });
function OffScroll () { var winScrollTop = $(window).scrollTop(); $(window).bind('scroll',function () { $(window).scrollTop(winScrollTop); }); }

html5 для старых версия браузеров


<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>

разбивка списка на блоки


<ul>
<li>
<?foreach($arResult["ITEMS"] as $key=>$arItem):?>
<?if(($key+1)%3==0 &&$arItem!=end($arResult["ITEMS"])):?>
</li><li>
<?endif?>
<?endforeach;?>
</li>
</ul>

css стили для placeholder


::-webkit-input-placeholder { color: #646464}
::-moz-placeholder { color: #646464}/* Firefox 19+ */
:-moz-placeholder { color: #646464}/* Firefox 18- */
:-ms-input-placeholder { color: #646464}

ссылки со слешем в конце и без:


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]

заголовок файлового раздела:


$sSectionName = ""; 
$sPath = $_SERVER["DOCUMENT_ROOT"].$APPLICATION->GetCurDir().".section.php";
<h1><?=$sSectionName?></h1>

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


$APPLICATION->GetProperty("shown_menu");

подьем на верх окна jquery


$('body,html').animate({scrollTop: 0}, 400);

создание/обрезка изображения превью/большой картинки + водяной знак/watermark:

запись сего в result_modifier.php компонета


$param_sharpen = 30;
$arFilter = array("name" => "sharpen", "precision" => $param_sharpen);  //  можно просто false
foreach($arResult['ITEMS'] as $item_key=>$item){
$arFile = CFile::GetFileArray($one_pic_id);
$arFileTmp = CFile::ResizeImageGet(
$item['PREVIEW_PICTURE'],
array("width" => 183, "height" => 159),
BX_RESIZE_IMAGE_EXACT,
true, $arFilter
);
$arResult["OUR_WORKS_PICS"][$item_key] = array(
"SRC" => $arFileTmp["src"],
'WIDTH' => $arFileTmp["width"],
'HEIGHT' => $arFileTmp["height"],
);
$arBigFileTmp = CFile::ResizeImageGet(
$item['PREVIEW_PICTURE'],
array("width" => $item['PREVIEW_PICTURE']['WIDTH'], "height" => $item['PREVIEW_PICTURE']['HEIGHT']),
BX_RESIZE_IMAGE_PROPORTIONAL,
true,
$arFilters = Array(array(
"name" => "watermark",
"position" => "center",
"size"=>"real",
'type'=>'image',
'alpha_level'=>30,
"text"=>'sometext',//  это поле не выводится (
"file"=>$_SERVER['DOCUMENT_ROOT']."/bitrix/templates/.default/img/logo.png")
)
);
$arResult["OUR_WORKS_BIG_PICS"][$item_key] = array(
"SRC" => $arBigFileTmp["src"]
);
}

CIBlockSection::GetList


$arFilter = Array('IBLOCK_ID'=>$arResult['IBLOCK_ID'], 'GLOBAL_ACTIVE'=>'Y', 'ID'=>$arResult['ID']);
$db_list = CIBlockSection::GetList(Array(), $arFilter, false,array('ID','UF_ADDITIONAL_DESC'));
if($ar_result = $db_list->GetNext())
{
$arResult['UF_ADDITIONAL_DESC'] = $ar_result['~UF_ADDITIONAL_DESC'];
}

редирект с несуществующих поддоменов на основной


RewriteCond %{HTTP_HOST} !^www.webkernel.ru$ [NC]
RewriteRule ^(.*)$ http://www.webkernel.ru/$1 [R=301,L]

переопределение lang файлов компонента, если их нет в шаблоне компонента


требуется создать такой файл: /bitrix/php_interface/user_lang/ru/lang.php с требуемой lang переменной

$MESS["/bitrix/components/bitrix/catalog.section/lang/ru/component.php"]["CATALOG_SECTION_NOT_FOUND"] = "Мой раздел не найден";


Вы должны авторизоваться, чтобы оставлять комментарии.

Загрузка ...
some text