видео на сайте много весят, даже если сделаны для красоты, поэтому удобно их подгружать на действия пользователей, нашел интересный плагин, проверил, работает, советую
http://dinbror.dk/blazy/examples/?ref=blog
в интернете много путаницы по очереди склеики сертификатов, развеем ее
если у вас нет уже объедененного файла, а есть root, intermediate и crt файл домена, их необходимо склеивать в один bundle.crt с последовательностью: домен -> intermediate -> root
При работе в header.php часто требуется использовать условия или значения, например текстовое описание страницы, а врапер использовать не хочется, решение - определить дополнительное поле для раздела (мы говорим о физическом разделе) в .section.php и получить его значение, быстро, удобно, юзабельно
.section.php
$arDirProperties = Array(
"page_top_description" => "Описание раздела"
);
header.php
<?if($page_top_description = $APPLICATION->GetProperty('page_top_description')):?>
<div class="p-top__text"><?=$page_top_description?></div>
<?endif;?>
после отключения google maps для простых смертных, т.е. после включения платного режима пользования, все задаются вопросом, какие карты использовать на сайте, чтобы можно было стилизовать и еще бесплатно и тут быстро находится решение, которое не только не уступает гугл картам, но и превосходит их по функционалу и удобству использования - представляем вам
mapbox
Переключить все названия на карте mapbox к русскому языку можно по инструкции https://www.mapbox.com/help/change-language/#multiple-layers-at-once
или через плагин
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v10',
center: [-98, 38.88],
minZoom: 2,
zoom: 3
});
mapboxgl.setRTLTextPlugin('https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.1.0/mapbox-gl-rtl-text.js');
map.addControl(new MapboxLanguage({
defaultLanguage: 'ru'
}));
https://github.com/mapbox/mapbox-gl-language/
$(form).find('input[type="text"],input[type="tel"],textarea,input[type="number"],input[type="email"]').val('');
Assets Compressor
Refactor-> Compress и получаем нимимифицированный файл
взято
отсюда
<script>
Share = {
vkontakte: function(purl, ptitle, pimg, text) {
url = 'http://vk.com/share.php?';
url += 'url=' + encodeURIComponent(purl);
url += '&title=' + encodeURIComponent(ptitle);</div><div> url += '&description=' + encodeURIComponent(text);
url += '&image=' + encodeURI(pimg);
url += '&noparse=true';
Share.popup(url);
},
odnoklassniki: function(purl, text) {
url = 'http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1';
url += '&st.comments=' + encodeURIComponent(text);
url += '&st._surl=' + encodeURIComponent(purl);
Share.popup(url);
},
facebook: function(purl, ptitle, pimg, text) {
url = 'http://www.facebook.com/sharer.php?s=100';
url += '&p[title]=' + encodeURIComponent(ptitle);
url += '&p[summary]=' + encodeURIComponent(text);
url += '&p[url]=' + encodeURIComponent(purl);
url += '&p[images][0]=' + encodeURIComponent(pimg);
Share.popup(url);
},
twitter: function(purl, ptitle) {
url = 'http://twitter.com/share?';
url += 'text=' + encodeURIComponent(ptitle);
url += '&url=' + encodeURIComponent(purl);
url += '&counturl=' + encodeURIComponent(purl);
Share.popup(url);
},
mailru: function(purl, ptitle, pimg, text) {
url = 'http://connect.mail.ru/share?';
url += 'url=' + encodeURIComponent(purl);
url += '&title=' + encodeURIComponent(ptitle);</div><div> url += '&description=' + encodeURIComponent(text);
url += '&imageurl=' + encodeURIComponent(pimg);
Share.popup(url)
},
google: function(purl) {
url = 'https://plus.google.com/share?';
url += 'url=' + encodeURIComponent(purl);
Share.popup(url)
},
popup: function(url) {
window.open(url,'','toolbar=0,status=0,width=626,height=436');
}
};
</script>
<a onclick="Share.vkontakte('URL','TITLE','IMG_PATH','DESC')"> {шарь меня полностью}</a>
<a onclick="Share.facebook('URL','TITLE','IMG_PATH','DESC')"> {шарь меня полностью}</a>
<a onclick="Share.mailru('URL','TITLE','IMG_PATH','DESC')"> {шарь меня полностью}</a>
<a onclick="Share.odnoklassniki('URL','DESC')"> {шарь меня полностью}</a>
<a onclick="Share.twitter('URL','TITLE')"> {шарь меня полностью}</a>
$length = strlen(utf8_decode($s));
if($arParams['SORT_BY_COMPLEX']){
$sectionsName = $COMPLEX_OBJECT_SECTION_INF = array();
$arFilter = Array('IBLOCK_ID' => OBJECT_MAIN_IBLOCK_ID, 'ACTIVE' => 'Y', 'DEPTH_LEVEL' => 1);//'!UF_SITE_ID'=>false
$db_list = CIBlockSection::GetList(Array('SORT' => 'ASC'), $arFilter, false, array('ID','NAME','UF_SITE_ID','IBLOCK_ID','UF_COMPLEXE_LOGO','CODE'));
while ($ar_result = $db_list->Fetch()) {
$COMPLEX_OBJECT_SECTION_INF[$ar_result['ID']] = $ar_result;
}
foreach ($arResult['ITEMS'] as &$arItem){
$res = CIBlockSection::GetByID($arItem["IBLOCK_SECTION_ID"]);
$arItem['LAST_SECTION_INF'] = $res->Fetch();
$tempArResult[$COMPLEX_OBJECT_SECTION_INF[$arItem['LAST_SECTION_INF']['IBLOCK_SECTION_ID']]['SORT']][] = $arItem;
}
if($arParams['SORT_BY_COMPLEX']=='ASC'){
ksort($tempArResult);
}
else {
krsort($tempArResult);
}
$arResult['ITEMS'] = array();
foreach ($tempArResult as $sort_key=>$group_items){
LOG_INTERFACE::debugToConsole($sort_key,'$sort_key');
foreach ($group_items as $item){
$arResult['ITEMS'][] = $item;
}
}
}
.htaccess
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/svg "access plus 1 week"
ExpiresByType text/svg+xml "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
</IfModule>
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl|svg)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
внимание! редирект кешируется браузером и говорит поисковику о постоянном(не временном) переезде страницы
Redirect 301 /some-shit-section/ http://webkernel.ru/
Decrypt Password in webServers.xml
$pwd = "Your encrypted password here.";
$decrypted = '';
while (strlen($pwd) > 0) {
$decrypted .= chr(hexdec(substr($pwd, 0, 4)) ^ hexdec('dfaa'));
$pwd = substr($pwd, 4, strlen($pwd) - 1);
}
echo $decrypted;
jquery в консоль
var jq = document.createElement('script'); jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"; document.getElementsByTagName('head')[0].appendChild(jq);
https://dev.1c-bitrix.ru/community/webdev/user/11948/blog/2047/
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// do something
}
if($arParams['BEST_SORT_ARRAY']){
foreach($arParams['BEST_SORT_ARRAY'] as $parent_news_id){
foreach($arResult["ITEMS"] as $key=> $one_item){
if($one_item['ID']==$parent_news_id)
$new_items_arr['ITEMS'][$key] = $one_item;
}
}
$arResult["ITEMS"] = $new_items_arr['ITEMS'];
}
необходимо привести массив к такому виду:
$arrFilter = array(
array(
'LOGIC'=>'OR',
array('ID'=>1749305),
array('ID'=>1994586)
)
);
приводим:
$arrFilter = array(
array(
"LOGIC" => "OR",
),
);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nTopCount"=>20), array('PROPERTY_SOME_ID'));
while($ob = $res->Fetch())
{
$arrFilter[0][] = array("ID"=>$ob['PROPERTY_SOME_ID_VALUE']);
}
$(document).bind("mousewheel", stop_scroll);
$(window).bind("scroll mousewheel", stop_scroll);
function stop_scroll(event) {
event.preventDefault();
$(document).scrollTop(top);
}
// отключаем запрет
$(document).unbind('mousewheel');
$(window).unbind("scroll mousewheel");
$("#phone").val().replace(/\D/g,'')
необходимость может возникнуть при особой настройке сервера, когда права на файлы созданные/измененные по shh будут отличаться от создаваемых сервером(apache), в этом случае может даже не получиться создать/изменить файл/папке с помощью битрикса, если права владения на родительскую папку будут отличаться. Скрипт ниже рекурсивно изменит владельца на папки и файлы директории public_html:
chown -R bitrix:bitrix /absolute/path/to/site-dir/