|
Ok!
|
|
|
Ok!
|
---|---|---|---|---|
25 | SELECT CONVERT(CONVERT(message USING BINARY) USING cp1251) AS cp1251, CONVERT(CONVERT(message USING BINARY) USING utf8) AS utf8 FROM b_event_message bem WHERE CONVERT(message USING BINARY) RLIKE CONCAT('[', UNHEX('80'), '-', UNHEX('FF'), ']') | sql, script, detect wrong encoding | 506 | Обнаружить не так кодированную ячейку в таблице mysql |
24 | $rs_Section = CIBlockSection::GetList( array('DEPTH_LEVEL' => 'desc'), $ar_Filter, false, array('ID', 'NAME', 'IBLOCK_SECTION_ID', 'DEPTH_LEVEL', 'SORT') ); $ar_SectionList = array(); $ar_DepthLavel = array(); while($ar_Section = $rs_Section->GetNext(true, false)) { $ar_SectionList[$ar_Section['ID']] = $ar_Section; $ar_DepthLavel[] = $ar_Section['DEPTH_LEVEL']; } $ar_DepthLavelResult = array_unique($ar_DepthLavel); rsort($ar_DepthLavelResult); $i_MaxDepthLevel = $ar_DepthLavelResult[0]; for( $i = $i_MaxDepthLevel; $i > 1; $i-- ) { foreach ( $ar_SectionList as $i_SectionID => $ar_Value ) { if( $ar_Value['DEPTH_LEVEL'] == $i ) { $ar_SectionList[$ar_Value['IBLOCK_SECTION_ID']]['SUB_SECTION'][] = $ar_Value; unset( $ar_SectionList[$i_SectionID] ); } } } function __sectionSort($a, $b) { if ($a['SORT'] == $b['SORT']) { return 0; } return ($a['SORT'] < $b['SORT']) ? -1 : 1; } usort($ar_SectionList, "__sectionSort"); | битрикс, массив, перебор | 780 | Перебор массива Битрикс в виде дерева |
23 | $mySignatureValue = md5("$nOutSum:$nInvId:$mrh_pass1:shpdate=$shpdate:shpphone=$shpphone:shppin=$shppin:shptime=$shptime"); | signature value, robokassa | 450 | Строка signature value для платежей через Робокассу |
22 | // Create an iframe: const iframe = document.createElement('iframe'); // Put it in the document (but hidden): iframe.style.display = 'none'; document.body.appendChild(iframe); // Wait for the iframe to be ready: iframe.onload = () => { // Ignore further load events: iframe.onload = null; // Write a dummy tag: iframe.contentDocument.write('<streaming-element>'); // Get a reference to that element: const streamingElement = iframe.contentDocument.querySelector('streaming-element'); // Pull it out of the iframe & into the parent document: document.body.appendChild(streamingElement); // Write some more content - this should be done async: iframe.contentDocument.write('<p>Hello!</p>'); // Keep writing content like above, and then when we're done: iframe.contentDocument.write('</streaming-element>'); iframe.contentDocument.close(); }; // Initialise the iframe iframe.src = ''; | iframe vs link | 1755 | Возможный способ ускорения загрузки через Javascript |
21 | <img src="http://bit.ly/2heoc2H" alt="Simon's cat" width="200" height="200"> img { object-fit: cover; // magic goes here } | картинка, по ширине, по высоте, подогнать картинку, вместо background-size, object-fit | 190 | Решение с изображением, чтобы отображалось без сжатия и не бэкграунд |
20 | :root { font-size: calc(1vw + 1vh + .5vmin); } Now you can utilize the root em unit based on the value calculated by :root: body { font: 1rem/1.6 sans-serif; } | css, шрифт, адаптивно | 20 | Установка размера шрифта в CSS адаптивно изменяющегося к любой ширине экрана |
19 | К картинкам <img src="/img/eyes-l.jpg" srcset="/img/eyes-m.jpg 1x, /img/eyes.jpg 2x" alt="Глаза" height="375" width="500" data-p="/img/eyes.jpg"> <a href="#" rel="prefetch">Ссылка</a> | srcset, prefetch | 100 | srcset для изображений, предпросмотр для ссылок |
18 | Use the "update-ping" mechanism to permanently remove content from the Google AMP Cache after the content has been removed from its origin. For example, to purge content formerly served at https://cdn.ampproject.org/i/s/example.com/favicon.ico, send an update ping request to: https://cdn.ampproject.org/update-ping/i/s/example.com/favicon.ico. Cached content that no longer exists will eventually get removed from the cache; it's just faster to use "update-ping". Google's Remove AMP content "documentation" | amp, удалить, гугл сео | 1234 | Убрать AMP описание удаленной страницы из Гугла |
17 | if($arParams["PREVIEW_TRUNCATE_LEN"] > 0 && strlen($arItem["PREVIEW_TEXT"])>5) $arItem["PREVIEW_TEXT"] = $obParser->html_cut($arItem["PREVIEW_TEXT"], $arParams["PREVIEW_TRUNCATE_LEN"]); | truncate, bitrix, prewiew text | 400 | Функция Битрикс для обрезки превью текста, если обрезка автоматически не работает |
16 | function getCoordinates($address){ $address = urlencode($address); $url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=" . $address; $response = file_get_contents($url); $json = json_decode($response,true); $lat = $json['results'][0]['geometry']['location']['lat']; $lng = $json['results'][0]['geometry']['location']['lng']; return array($lat, $lng); } | координаты, гугл, php | 1050 | Функция получения координат через Гугл на php |
15 | $useragent=$_SERVER['HTTP_USER_AGENT']; $mob = 0; if(preg_match('/(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i',substr($useragent,0,4))){ $mob = 1; } | mobile detect, мобильные php, пхп мобильный | 129 | Код определения мобильных телефонов через PHP |
14 | (in_array($r[1] % 10, array(2, 3, 4)) && $r[1] < 10 ) ? "отзыва" : ($r[1] == 1 ? "отзыв" : "отзывов") | человека, человек | 1050 | PHP выражение для вывода "человека или человек" в зависимости от цифры |
13 | $was_id = intval($DB->LastID()); | last id, последний id | 150 | Выбрать из базы последний добавленный ID при autoincrement |
12 | $items_sel = (new CIBlockElement())->GetList([], $filter, 0, 0, ['ID']); $arResult['ITEMS_SELECTED'] = $items_sel->SelectedRowsCount(); if(!$arResult['ITEMS_SELECTED']) $ids = []; else while($item = $items_sel->Fetch()) $ids[] = $item['ID']; | select, iblock, bitrix | 100 | Выбор айблоков в Битрикс |
11 | $(document).ready(function(){ /**function for slider change*/ var sizeSl = $('.slq-wrap li.slide-q').length; var indexSl = 0; var fSlq = function(indexSl){ $('.slq-wrap li.slide-q').removeClass('activ'); $('.slq-wrap li.slide-q').eq(indexSl).addClass('activ'); if ($('.slq-wrap li.slide-q').eq(indexSl).hasClass('video_sl')) { $('.paly-sl-q').show(); } else { $('.paly-sl-q').hide(); } } $('.left-c-sl').click(function(){ clearTimeout(R); /*pause on left click*/ var active_index = 0; window.Int; if (typeof(video)!='object'){ var video = $('slide-q').length; } for(var i=0; i<video.length; i++){ if($(".video_sl").eq(i).hasClass('activ')){ active_index = i; } } var jVideo = document.getElementsByTagName('video'); if(document.getElementsByTagName('video').length!=0){ if (!jVideo[active_index].paused) { $('video').eq(active_index).trigger('pause'); var button = $('.paly-sl-q.comm'); button.removeClass('paused'); } } if (indexSl == 0) { indexSl = sizeSl - 1; } else { indexSl = indexSl - 1; } fSlq(indexSl); }); $('.right-c-sl').click(function(){ /*pause on right click*/ clearTimeout(R); var active_index = 0; window.Int; if (typeof(video)!='object'){ var video = $('slide-q').length; } for(var i=0; i<video.length; i++){ if($(".slide-q").eq(i).hasClass('activ')){ active_index = i; } } var jVideo = document.getElementsByTagName('video'); if(document.getElementsByTagName('video').length!=0){ if (!jVideo[active_index].paused) { $('video').eq(active_index).trigger('pause'); var button = $('.paly-sl-q.comm'); button.removeClass('paused'); } } // console.log(indexSl) if (indexSl == sizeSl - 1) { indexSl = 0; } else { indexSl = indexSl + 1; } fSlq(indexSl); }); }); | видео, ютьюб, youtube, видео пауза | 190 | При переключении видео в Ютьюб в списке ставит прошлое на паузу |
10 | require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); | битрикс пролог, prolog_before | 1040 | Подключение пролога вместо вывода шапки Битрикс |
9 | CModule::IncludeModule("iblock"); $res = CIBlockElement::GetByID(273); if($obRes = $res->GetNextElement()) { $ar_mir = $obRes->GetProperty("href_mir"); $ar_gil = $obRes->GetProperty('href_gil'); echo $ar_mir['VALUE']['TEXT']; echo $ar_gil['VALUE']['TEXT']; } | битрикс, свойство блока, свойство инфоблока, свойство, инфоблок | 29 | Получить свойство инфоблока по ID элемента |
8 | onclick="$('html, body').animate({scrollTop:6500}, 'slow'); | jquery, scrollTop, скролл, плавный | 190 | Плавный скролл до точки, jQuery |
7 | <input type="tel" name="phone" class="form-control form-block" placeholder="+7(999)999-99-99" pattern="[+]d{1}[(]d{3}[)]d{4}[-]d{2}[-]d{2}" value=""> | html, phone, pattern, regex | 160 | Regex паттерн для проверки номера телефона. Пример html валидации |
6 | foreach($quest['METRO'] as $n => $station) echo ($n > 0 ? ', ' : '').$station['VALUE_ENUM']; | через запятую, массив, элементы | 40 | Элементы массива, выводимые через запятую. Очень элегантное решение |