http://dfcb.github.io/BigVideo.js/
Получить поля SEO для элемента можно так:
CModule::IncludeModule("iblock"); $rsSection = CIBlockSection::GetList( array(), array( "IBLOCK_ID" => $arParams['IBLOCK_ID'], "ACTIVE"=>"Y", "=CODE"=>$arParams["SECTION_CODE"]), false); if($arSection = $rsSection->GetNext()){ $ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues( $arSection["IBLOCK_ID"], $arSection["ID"] ); $arSection["IPROPERTY_VALUES"] = $ipropValues->getValues(); echo '<pre>'; print_r($arSection["IPROPERTY_VALUES"]); echo '</pre>'; }
Поля SEO для раздела можно получить похожим способом:
CModule::IncludeModule("iblock"); $rsSection = CIBlockSection::GetList( array(), array( "IBLOCK_ID"=>$arParams['IBLOCK_ID'], "ACTIVE"=>"Y", "=CODE"=>$arParams["SECTION_CODE"]), false ); if($arSection = $rsSection->GetNext()){ $ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues( $arSection["IBLOCK_ID"], $arSection["ID"] ); $arSection["IPROPERTY_VALUES"] = $ipropValues->getValues(); echo "<pre>"; print_r($arSection); echo '</pre>'; }
Оригинал статьи тут http://yournet.kz/blog/bitrix/ispolzovanie-seo-dannyx-v-infobloke-cherez-api
CModule::IncludeModule("subscribe"); $arFields = Array( "RUB_ID" => array($arParams['ID_SUB']), // id рассылки должен быть массив! "USER_ID" => $USER->GetID(), "FORMAT" => "text", "EMAIL" => $USER->GetEmail(), "ACTIVE" => "Y", "SEND_CONFIRM" => 'N' ); $ID = $subscr->Add($arFields); $subscription = CSubscription::GetByEmail($USER->GetEmail()); if($arSub = $subscription->Fetch()){ $arResult['DATA_SUB_USSER'] = $arSub; } // подтверждаем подписку $res = $subscr->Update($ID, array( "CONFIRMED" => "Y", "CONFIRM_CODE" => $arResult['DATA_SUB_USSER']["CONFIRM_CODE"] ) );
21.05.2014 Bitrix, Технология Композитный сайт No comments
Предварительно включите композитный сайт в настройках сайта
1) в dbconn.php в конец файла дописать
Теперь в режиме инкогнито запускаем сайт (начните с главной страницы). Обновляем страницу, и идем смотреть в наш log.txt
в файле вот это 0-0
Host: bxd24.itracker.ru Date: 2014-05-21 16:55:57 Module: composite Template: /bitrix/templates/books/components/bitrix/menu/horizontal_multilevel/template.php Request URI: / Script: /index.php CBitrixComponentTemplate::__IncludePHPTemplate < CBitrixComponentTemplate::IncludeTemplate < CBitrixComponent::showComponentTemplate < CBitrixComponent::includeComponentTemplate < include /srv/www/bx-dev/bxd24/public_html/bitrix/modules/main/classes/general/component_template.php:584 /srv/www/bx-dev/bxd24/public_html/bitrix/modules/main/classes/general/component.php:615 /srv/www/bx-dev/bxd24/public_html/bitrix/modules/main/classes/general/component.php:564 /srv/www/bx-dev/bxd24/public_html/bitrix/components/bitrix/menu/component.php:373 /srv/www/bx-dev/bxd24/public_html/bitrix/modules/main/classes/general/component.php:480 ----------
Этот текст нам говорит: «Уважаемый, вот этот шаблон
Template: /bitrix/templates/books/components/bitrix/menu/horizontal_multilevel/template.php
против композитного сайта…».
Тут два варианта, либо этому шаблону говорим, что он будет отдаваться статикой, либо динамикой.
Для отдачи статикой
$this->setFrameMode(true); // если передать $this->setFrameMode(false);, то шаблон // будет вечно против композитного сайта
если весь компонент нужно отдать динамикой:
или так
или так
можно сделать динамическую область и статическую область
<span id="sale-basket-basket-line-container"> <?$frame = $this->createFrame("sale-basket-basket-line-container", false)->begin(); ?> <div>// динамическая область</div> <?$frame->beginStub();?> <div>// статическая область</div> <?$frame->end();?> </span>
Если нужно сделать динамическую область в шаблоне сайта
Bitrix\Main\Page\Frame::getInstance()->startDynamicWithID("test-b"); // тут может быть компонент или вывод времени... Bitrix\Main\Page\Frame::getInstance()->finishDynamicWithID("test-b", ""); \Bitrix\Main\Page\Frame::getInstance()->startDynamicWithID("ololo"); $APPLICATION->ShowViewContent('ololo'); \Bitrix\Main\Page\Frame::getInstance()->finishDynamicWithID("ololo", "", "ID_OLOLO"); <div id="ID_OLOLO"></div>
Самостоятельно вставить данные дин. области можно на вот этих событиях:
событие происходит перед началом цикла вставки дин. блоков
событие происходит перед вставкой каждого блока. Если для конкретного блока в шаблоне компонента было указано $frame->setAutoUpdate(false), то вставка динамического блока не происходит
событие происходит после цикла вставки дин. блоков
где json — это все данные, которые пришли в композитном ajax-хите
block — это данные по конкретному блоки (id, контент и другие)
fromCache — равен true, когда данные вставляют из локальной SQL-базы.
BX.addCustomEvent('onAjaxSuccess', function(){ $(".checkbox, .radio").uniform(); }); BX.ready(function(){ BX.addCustomEvent("onFrameDataReceived", function(json) { console.log(json) }); });
Отсюда https://dev.1c-bitrix.ru/community/blogs/Docs_and_other/course-composite-website.php
Подробней тут http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=39&INDEX=Y
Данная информация является моей шпаргалкой, писал в основном ее для себя.
Вот тут есть еще много полезного Композитный сайт: tips & tricks
16.05.2014 Bitrix
/* * Расстояние между двумя точками * $φA, $λA - широта, долгота 1-й точки, * $φB, $λB - широта, долгота 2-й точки */ function calculateTheDistance ($φA, $λA, $φB, $λB) { define('EARTH_RADIUS', 6372795); // перевести координаты в радианы $lat1 = $φA * M_PI / 180; $lat2 = $φB * M_PI / 180; $long1 = $λA * M_PI / 180; $long2 = $λB * M_PI / 180; // косинусы и синусы широт и разницы долгот $cl1 = cos($lat1); $cl2 = cos($lat2); $sl1 = sin($lat1); $sl2 = sin($lat2); $delta = $long2 - $long1; $cdelta = cos($delta); $sdelta = sin($delta); // вычисления длины большого круга $y = sqrt(pow($cl2 * $sdelta, 2) + pow($cl1 * $sl2 - $sl1 * $cl2 * $cdelta, 2)); $x = $sl1 * $sl2 + $cl1 * $cl2 * $cdelta; // $ad = atan2($y, $x); $dist = $ad * EARTH_RADIUS; return $dist; }
29.04.2014 Bitrix
Строка, привязка к файлу на сервере
$value = "Строка"; $value = array("Строка", "Строка 2"); $value = array( array("VALUE"=>"Строка", "DESCRIPTION"=>"Описание строки"), array("VALUE"=>"Строка 2", "DESCRIPTION"=>"Описание строки 2") ); [/php] Число, привязка к элементам, привязка к разделам, привязка к пользователю $value = 1; $value = array(1, 2); $value = array( array("VALUE"=>1, "DESCRIPTION"=>"Описание"), array("VALUE"=>2, "DESCRIPTION"=>"Описание 2") );
Оригинал статьи тут http://alexvaleev.ru/iblock-prop-update/
09.04.2014 Bitrix, php, php скрипты Регулярка, строки
17.12.2013 Bitrix bitrix, постраничка
/* component params */ "NEWS_COUNT" => "2", "PAGER_TITLE" => "", "PAGER_SHOW_ALWAYS" => "N", "PAGER_TEMPLATE" => "", "PAGER_DESC_NUMBERING" => "N", "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000", "PAGER_SHOW_ALL" => "Y", /* component */ $rs = new CDBResult; $rs->InitFromArray($arResult["ITEMS"]); $rs->NavStart($arParams["NEWS_COUNT"]); $arResult["NAV_STRING"] = $rs->GetPageNavStringEx($navComponentObject, $arParams["PAGER_TITLE"], $arParams["PAGER_TEMPLATE"], $arParams["PAGER_SHOW_ALWAYS"]); $arResult["NAV_CACHED_DATA"] = $navComponentObject->GetTemplateCachedData(); $arResult["NAV_RESULT"] = $rs; $arResult["ITEMS"] = array(); while($arSection = $rs->Fetch()){ $arResult["ITEMS"][] = $arSection; } /* template */ <?if($arParams["DISPLAY_BOTTOM_PAGER"]):> <?=$arResult["NAV_STRING"]?> <?endif;?>
$arImg = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width'=>125, 'height'=>125), BX_RESIZE_IMAGE_PROPORTIONAL, true);
$fileInfo = CFile::GetFileArray($arrSction["PICTURE"]); $arImg = CFile::ResizeImageGet($fileInfo , array('width'=>300, 'height'=>180), BX_RESIZE_IMAGE_PROPORTIONAL, true); if($arImg['src']){ $fileInfo['SRC'] = $arImg['src']; $fileInfo['HEIGHT'] = $arImg['height']; $fileInfo['WIDTH'] = $arImg['width']; $arrSction['PICTURE'] = $fileInfo; }else{ $arrSction['PICTURE'] = $fileInfo; }