<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;
}
}
(?(condition)yes-pattern)
(?(condition)yes-pattern|no-pattern)
<a
=тело=>
), иначе (если match присутствует), применяем пустой шаблон (то есть пытаемся найти пустой тег <a>
)». <a>
теоретически возможны (хоть и с точки зрения внедрения ссылки в текст безопасны), а значит наша регулярка не даёт железно 100%-результат. Потому в качестве no-pattern-а можно дать любую невалидную абракадабру (просто, чтобы её не было найдено).<(a)(?(?!match)[^>]|false)+>[^<]*</\1>
Я знаю, что есть reCaptcha от гугл с отложеным рендером и возможностью рендерить несколько каптч на одну страницу, однако 2 и более сильно тормозят загрузку страницы.
\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 );