basic auth
https://nuxt.com/modules/nuxt-basic-auth + использовать middleware auth.basic
https://laravel.com/docs/10.x/authentication#http-... для закрытия роутов. Пользователь при этом должен быть в таблице users бека. $bxEventManager->addEventHandler(
"main",
"OnAdminTabControlBegin",
array(
ProductTabs::class,
"addMailEventsTab"
)
);
// обработчик события
function addMailEventsTab(&$form)
{
$iblockId = intval($_REQUEST["IBLOCK_ID"]);
$productId = intval($_REQUEST["ID"]);
Loader::includeModule("catalog");
if (
($GLOBALS["APPLICATION"]->GetCurPage() == "/bitrix/admin/iblock_element_edit.php")
&& (CatalogIblockTable::getList([
"filter" => ["IBLOCK_ID" => $iblockId]
])->getSelectedRowsCount() > 0
)
) {
$className = __CLASS__;
/** @var ProductTabs $tabManager */
$tabManager = new $className();
$tabManager->addQuantityReservedTab($form, $productId);
if($productId > 0){
$tabManager->addBarcodeTab($form, $productId);
}
}
}
transformAssetUrls
. Однако открыв доки я вижу там: Converts src to provider optimized URLs
import img from '~/assets/images/header.jpg'
? animation-delay
в зависимость от индекса в v-for
:v-for="(n, i) in items"
:style="{ 'animation-delay': i * 0.5 + 's' }"
индекс используется для других целей, там текстовая строка, а не число. В этом и сложность задачи
v-for
для объектов выдаёт три значения, как раз для того, чтобы у свойств тоже мог быть индекс. // Navigation arrows
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
const swiper = new Swiper('.swiper', {
// ...
})
document.querySelectorAll('.my-swiper-btn').forEach(btn => {
btn.addEventListener('click', swiper.slideNext)
})
json {'img'=>full_image_url, 'tumb'=>tumb_image_url}
<img src=tumb_image_url @click=showImage(full_image_url)>
Вариантов вывода несколько
"resizeImageGet", которая при первом вызове сжимает и обрезает изображение