Необходимо в панели управления у категории поставить признак Отключено (isDisabled=true).
Для этого в SELECT 2 в cat_search указываем CustomMakeup - эта разметка может принимать следующие параметры:
По дефолту используется такая верстка (если она не указана в CustomMakeup):
<div class="row cat-catalogCont">
<div class="col-12 col-sm-12 col-md-3 col-lg-2 cat-filtersBlock"> {catalogCats}
{catalogFilters} </div>
<div class="col-12 col-sm-12 col-md-9 col-lg-10"> {catalogViewButtons} {catalogTitle}
{catalogSortPanel} {catalogItems} {catalogPaging} {catalogText} </div>
</div>
Также можно указать кастомную верстку для элементов каталога для обоих видов (плитка и панель).
Для этого указываем в SELECT 2 в cat_search параметры ListItemMakeup, PanelItemMakeup:
По умолчанию {attrs} выводится в 2 колонки. Это можно изменить если указать в SELECT 2 параметр AttrTemplateMakeup с нужной разметкой. По умолчанию он имеет такой вид:
<div class="col-6 col-sm-7 col-md-7 col-lg-3 cat-itemAttrName">
{title}
</div>
<div class="col-6 col-sm-5 col-md-5 col-lg-9 cat-itemAttrValue">
{value}
</div>
Аналогично для страницы 1 товара можно изменить дефолтовую разметку для атрибута в SELECT 1 параметр AttrTemplateMakeup в GetItem. По умолчанию:
<div class="col-md-8 col-sm-7 col-6">{title}</div>
<div class="col-md-4 col-sm-5 col-6">{value}</div>
Примечание: указывается в SELECT 2 в cat_search такую разметку для CustomMakeup и других разметок, чтобы отдельно редактировать HTML блок.
select dbo.as_htmlBlock(''catalogMakeup'', 0) CustomMakeup,
dbo.as_htmlBlock(''catalogListItemMakeup'', 0) ListItemMakeup,
dbo.as_htmlBlock(''catalogPanelItemMakeup'', 0) PanelItemMakeup
В GetItem:
select dbo.as_htmlBlock('catalogItemMakeup', @langID) CustomMakeup
Используем для этого кастомизированную верстку в параметре CustomMakeup в процедуре cat_getItem
Параметры:
По умолчанию верстка имеет следующий вид:
<div class="row">
<div class="col-12 col-md-12 col-lg-5"> {images} </div>
<div class="col-12 col-md-12 col-lg-7"> {price} {name} {offers} {attrs}
<div class="cat-shortDesc my-4"> {shortDesc} </div>
</div>
</div>
Для этого в sp search укажите 0 для цен на товары.
По умолчанию ставится вид Плитка.
Укажите list или panel в DefaultView в SELECT 2 (процедура cat-search)
Вывод элемента атрибута вы можете настроить через SQL (т.е. что выводится).
Расположение элемента вы можете задать через стили с position:absolute относительно элемента в каталоге.
Для body в Getlayout необходимо добавить класс instantCatalogFilter.
Используйте параметры headSection, bodyBottomSection в SELECT 2 в cat_search и аналогичные параметры в cat_getItem.
Вы можете туда вставлять коды OpenGraph и JSON LD описание страниц.
Для этого установите в WebConfig в разделе AppSettings параметр catalogCacheMinutes. Данный параметр указывает сколько минут будет кешироваться результат выдачи в каталоге (кешируются все запросы по каталогу).
<add key="catalogCacheMinutes" value="60"></add>
Для хранения картинок используется подсистема менеджера ресурсов с кодом product.
Вы можете использовать коллбеки на странице корзины: при загрузке скрипта корзины (init - после as.cart.init), после обновления суммы для поставщика (updateTotal), после обновления общей суммы (updateAllTotal).
as.cartcallbacks = as.cartcallbacks || {};
as.cartcallbacks["init"] = function(total, countTotal){
}
as.cartcallbacks["updateTotal"] = function(supplierID, noUpdateTotal){
}
as.cartcallbacks["updateAllTotal"] = function(total, countTotal){
}
Можно заменить обработку результата операции по умолчанию
Добавление в избранное:
as.cartAddToFavCallback = function (data,btn){
// так выглядит реализация по умолчанию
if (data.result) {
if (compare) {
// favUrl - old variant
as.sys.bootstrapAlert(as.lang("cart.addedToCompare", "Добавлено к Сравнению") + "
" + as.lang("cart.gotoCompare", "Перейти к сравнению") + "", { type: "success" });
} else {
as.sys.bootstrapAlert(as.lang("cart.addedToFav", "Добавлено в Избранное") + "
" + as.lang("cart.gotoFav", "Перейти в Избранное") + "", { type: "success" });
}
} else {
as.sys.bootstrapAlert(data.msg || as.lang("cart.favAddError", "Ошибка при добавлении в Избранное"), { delay: 20000, type: "danger" });
}
}
Добавление в корзину:
as.cartAddToCartCallback = function(data, btn){
var msg = data.msg || as.lang("cart.addedToCartMessage", "");
msg = msg || (as.lang("cart.addedToCart", "Добавлено в корзину") + "
" + as.lang("cart.gotoCart", "Перейти в корзину") + "");
as.sys.bootstrapAlert(msg, { type: "success" });
}
Это происходит из-за того, что система имеет ограничение по количеству символов в URL.
Для решения этой проблемы необходимо увеличить количество возможных символов в URL в web.config в разделе
<httpruntime maxurllength="1024" relaxedurltofilesystemmapping="true"></httpruntime>
Для этого укажите настройку редиректа в /settings с кодом CatalogRedirect (например, /)
Если реализована процедура cat_filter_getFilter, то именно она будет использована в качестве источника значений для фильтра (а не SP из поля sqlGetValues).
На входе:
На выходе:
Пример процедуры:
CREATE PROCEDURE [dbo].[cat_filter_getFilter]
@code nvarchar(max),
@langID int = 0
AS
BEGIN
declare @dbtable nvarchar(max) = (select top 1 sqlTableName from as_cat_filters where code = @code)
IF (EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = @dbtable)) begin
declare @sql nvarchar(max) = N'select id [Key], name Value
from '+@dbtable+'
order by name'
exec sp_executesql @sql
end else begin
select '' [Key], '' Value
end
END
ВАЖНО. Очищайте кеш, чтобы процедура подхватилась после изменения полей sqlGetValues и создания процедуры cat_filter_getFilter
Для этого укажите настройку с кодом catalogAppendFiltersToCatUrl = 1.
Если это страница товара, то адрес хранится в поле url в as_cat_products (либо использовать функцию [cat_getProductURL](productID)).
Если это страница категории, то поле хранится в поле url в as_cat_categories (либо использовать функцию dbo.cat_getCatURL(catID)).
Если необходим адрес списка товаров с некоторыми фильтрами, то используйте функцию dbo.cat_getCatalogURL. Пример использования:
declare @isCanonical bit = 1
declare @page int = 5
declare @sort nvarchar(20) = 'name'
declare @filters ExtendedDictionaryParameter -- from as_cat_filters
insert into @filters ([Key], Value)
select 'sostoyanie', 'Новое'
union
select 'inStock', '1'
select dbo.[cat_getCatalogURL](1569, @filters, @sort, @page, @isCanonical)
Если isCanonical=1, то в адресе не будет участвовать номер страницы @page и сортировка @sort.