<div class= 'parent'>
<div class= 'child'>
Текст
</div>
</div>
.child { color: red; }
.parent .child { color: blue; }
Система Bitrix Framework позволяет также создавать меню динамического типа. Т.е. массив данных таких меню генерируется автоматически на основании некоторых данных, получаемых с помощью программного кода. Данный код должен храниться в папке соответствующего раздела сайта в файле с именем .<тип меню>.menu_ext.php.
$aMenuLinks
, должен $aMenuLinks
и уйти. То есть в этом файле дополняете массив новыми пунктами/подпунктами и пропускаете дальше. public function getCacheID($additionalCacheID = false)
{
(...)
$cacheID = $SITE_ID."|".$LANGUAGE_ID.($SITE_TEMPLATE_ID != "" ? "|".$SITE_TEMPLATE_ID:"")."|".$this->__name."|".$this->getTemplateName()."|";
foreach($this->arParams as $k=>$v)
if(strncmp("~", $k, 1))
$cacheID .= ",".$k."=".serialize($v);
(...)
if ($additionalCacheID !== false)
$cacheID .= "|".serialize($additionalCacheID);
return $cacheID;
}
Скорее всего нужно сначала удалить документ отгрузки.
// Читаем заказ, читаем корзину
$order= \Bitrix\Sale\Order::load( 6924 );
$basket= $order->getBasket();
$basket_items= $basket->getBasketItems();
/**
* @var $bi \Bitrix\Sale\BasketItem
*/
foreach ( $basket_items as $bi ) {
$quantity_current= $bi->getField( 'QUANTITY' );
//Приходит в формате "3.000"
$quantity_current++;
$quantity_current= $bi->setField( 'QUANTITY', $quantity_current );
$save_result= $bi->save();
if ( !$save_result->isSuccess() ) {
ShowError( $save_result->getErrorMessages() );
exit;
}
}
\Bitrix\Main\Loader::includeModule( 'highloadblock' );
\Bitrix\Main\Loader::includeModule( 'iblock' );
$el_Filter= [
'IBLOCK_ID' => 5,
'INCLUDE_SUBSECTIONS' => 'Y',
'PROPERTY_BRAND' => 46361
];
$el_Nav= [ 'nTopCount' => 10 ];
$el_Select= [ 'IBLOCK_ID', 'ID', 'NAME', 'PROPERTY_BRAND' ];
$el_res= CIBlockElement::GetList( false, $el_Filter, false, $el_Nav, $el_Select );
while ( $el_arr= $el_res->Fetch() ) {
...
}
$res = CIBlockElement::GetList(
Array(
'DATE_ACTIVE_FROM' => 'ASC'
),
Array("IBLOCK_CODE"=>"news", "ACTIVE"=>"Y"),
false,
false,
[ указывайте, какие поля читать.
Не тяните целую колбасу, когда вам нужно всего пару полей
]
);
Как я понимаю, тот, что в папке с компонентами, должен перезаписывать стили того, что выше него (подключаться позже)
$doc_root= \Bitrix\Main\Application::getDocumentRoot();
$js= '/images/file_upload_agent.js';
\Bitrix\Main\Page\Asset::getInstance()->addJs( $js . '?x=' . md5( filemtime( $doc_root . $js ) ), true );
->addCss
, но она по факту не рабочая — не допилили они её видимо):$doc_root= \Bitrix\Main\Application::getDocumentRoot();
$css= '/css/style.css';
\Bitrix\Main\Page\Asset::getInstance()
->addString( '<link rel="stylesheet" type="text/css" href="'.$css.'?x='.md5( filemtime( $doc_root . $css ) ).'" />', true );
$APPLICATION->SetPageProperty( 'pagination_suffix', ' Страница zZz' );
$APPLICATION->SetPageProperty(
'pagination_suffix',
\Bitrix\Main\Localization\Loc::getMessage( 'PAGE_IN_BROWSER_TITLE' ) . 'zZz'
);
$arResult[ 'NAV_RESULT' ]->NavNum;
<title><?$APPLICATION->ShowTitle()?><?$APPLICATION->ShowProperty( 'pagination_suffix' )?></title>
arResult
в component_epilog.php, нужно в result_modifier.php прописать:$this->__component->SetResultCacheKeys( arrary_keys( $arResult ) );
$this->setFrameMode(true);
<form ... name= "SIMPLE_FORM_3" ... >
function form_mark() {
//Получаем кнопку в форме
let form_submit= document.querySelector( 'form[name="SIMPLE_FORM_3"] input[type="submit"]' );
if ( !form_submit ) {
return;
}
//Вешаем дополнительное событие на кнопку на клик
form.submit.addEventListener( 'click', function() { ... } );
}
//Вешаем дополнительное событие на windows на загрузку
window.addEventListener( 'load', form_mark );
CEvent::Send( 'THANKS', $arrSite, $arSend );
OnBeforeEventAdd
OnBeforeEventAddHandler ( &$event, &$lid, &$arFields )
&$event
УЖЕ равно'THANKS'
и значит его не нужно переопределять (а даже можно добавить проверку, чтобы не резались все почтовые события поголовно);&$arFields
будет содержать ссылку на массив $arSend
, в который вы и можете поместить нужную переменную. Использовать как вам нужно и почистить (или не чистить — поля, которых нет в почтовом шаблоне просто проигнорируются).$WORKEREMAIL
задумано как одно из полей в письме, его нужно просто учесть в почтовом шаблоне и передать сразу в CEvent::Send( 'THANKS', $arrSite, $arSend );
без последующего перехвата.$arSend
составлен неправильно. Тут должен быть массив ключ–значение.