Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Каталог catalog. HOWTO
Как убрать категорию из каталога
Необходимо в панели управления у категории поставить признак Отключено (isDisabled=true).
Как сделать кастомную верстку для каталога
Для этого в SELECT 2 в cat_search указываем CustomMakeup - эта разметка может принимать следующие параметры:
-
{catalogCats} Вложенные категории
-
{catalogFilters} Колонка фильтров
-
{catalogFilterTags} Теги выбранных фильтров (с возможностью их сбросить)
-
{catalogViewButtons} Кнопки переключения вида
-
{catalogTitle} Заголовок (с выводимым количеством)
-
{catalogBanner} Баннер для категории (использует Search.Select2 поля BannerText и BannerImage)
-
{catalogSortPanel} Кнопки сортировки
-
{catalogItems} Элементы каталога
-
{catalogPaging} Пагинация
-
{catalogText} Текст о категории
По дефолту используется такая верстка (если она не указана в 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:
-
{id} - Идентификатор номенклатуры товара
-
{name} - Наименование товара
-
{url} - URL страницы товара
-
{img} - ссылка на картинку
-
{supplierName} - наименование поставщика
-
{supplierLink} - ссылка на Поставщика
-
{price} - цена товара
-
{shortDesc} - краткое описание товара
-
{supplierCount} - количество поставщиков (если Товар к поставщику не 1 к 1)
-
{supplierProductID} - если Товар и Поставщик 1 к 1, то это ID товара поставщика (для использования в корзине).
-
{attrs} - атрибуты товара, которые помещены ForList=1
По умолчанию {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
Параметры:
- {id} - id товара
- {name} - наименование товара
- {images} - картинки (галерея с возможностью показа увеличенной картинки)
- {price} - цена товара
- {offers} - предложения поставщиков по данному товару с возможностью добавить в корзину
- {attrs} - таблица атрибутов товаров
- {shortDesc} - краткое описание товара
- {attr-code1} - передача дополнительных отдельных атрибутов для отдельной вставки в верстке
По умолчанию верстка имеет следующий вид:
<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" });
}
Страница каталога падает, если выбрать 20+ фильтров
Это происходит из-за того, что система имеет ограничение по количеству символов в URL.
Для решения этой проблемы необходимо увеличить количество возможных символов в URL в web.config в разделе
<httpruntime maxurllength="1024" relaxedurltofilesystemmapping="true"></httpruntime>
Как полностью убрать каталог /catalog с сайта
Для этого укажите настройку редиректа в /settings с кодом CatalogRedirect (например, /)
Как сделать единую процедуру для списка значений фильтров каталога (cat_filter_getFilter)
Если реализована процедура cat_filter_getFilter, то именно она будет использована в качестве источника значений для фильтра (а не SP из поля sqlGetValues).
На входе:
- code - код фильтра
- langID - язык
На выходе:
- Key - код значения фильтра
- Value - текст значения фильтра
Пример процедуры:
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.
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта