Варианты продукта Kentico: включенный бэкэнд, но скрытый интерфейс

Я новичок в Kentico, и я не уверен на 100%, как предотвратить отображение опции продукта на внешнем веб-сайте, но оставить ее включенной на бэкэнде, чтобы системные администраторы могли размещать заказы, используя эту опцию.

Например

CMSDesk> Инструменты> Электронная торговля> Параметры продукта> Изменить параметр, который имеет дочерние параметры

Например, есть три дочерних параметра, два из которых я хочу отображать пользователю на веб-сайте, но только один из них я хочу скрыть от конечного пользователя и разрешить ТОЛЬКО администратору доступ к параметру...

Кто-нибудь когда-нибудь нуждался в этой функции раньше? Если да, то как вы этого добились?

Спасибо

Мишель


person user1670057    schedule 13.09.2012    source источник


Ответы (1)


Пожалуйста, найдите мой ответ на нашем официальном форуме Kentico:

[ссылка на форум][1]

Наши форумы чаще мониторятся, чем stackoverflow, так что предлагаю продолжить обсуждение там ;)

С уважением, Борис, Кентико


ОБНОВИТЬ:

Если ссылка должна быть признана недействительной, вот полный ответ:

К сожалению, это не может быть достигнуто прямо из коробки. вам придется немного настроить элемент управления, отображающий параметры. Вам необходимо изменить следующий метод:

ЗагрузитьОпцииПродукта()

в файле \CMSModules\Ecommerce\Controls\ProductOptions\ShoppingCartItemSelector.ascx.cs. На живом сайте загружаются и отображаются параметры продукта. вам нужно будет проверить, является ли текущий пользователь глобальным администратором, и пропустить обработку какого-либо поля, если он им не является. Второй подход — изменить метод OptionCategoryInfoProvider.GetSKUOptionCategories, переопределив его настраиваемым обработчиком электронной торговли. Более подробную информацию по этой теме можно найти по ссылкам ниже:

Соответствующие ссылки можно найти в сообщении на форуме, так как я не могу размещать более 2 ссылок в сообщении.

Вот пример переопределения объекта поставщика:

using System;
using System.Collections.Generic;
using System.Web;

using CMS.WorkflowEngine;
using CMS.SettingsProvider;
using CMS.Ecommerce;
using CMS.EcommerceProvider;

/// <summary>
/// Summary description for Class1
/// </summary>
[MyHandlers]
public partial class CMSModuleLoader {
    private class MyHandlers: CMSLoaderAttribute {

        public override void Init() {
            OrderInfoProvider.ProviderObject = new MyEcommerceCustomHandler();

            WorkflowEvents.Approve.After += WorkflowEvents_Publish_Handler;
        }

        private static void WorkflowEvents_Publish_Handler(object sender, EventArgs e) {
            //insert custom code here
        }
    }

    public class MyEcommerceCustomHandler: OrderInfoProvider {
        protected override string GetInvoiceInternal(int orderId) {
            return base.GetInvoiceInternal(orderId);
        }
    }
}

Вы также можете добавить настраиваемое поле в таблицу параметров продукта, чтобы указать, должно ли это поле отображаться на действующем сайте или нет.

person Boris Pocatko    schedule 14.09.2012
comment
Не могли бы вы хотя бы обобщить свой ответ здесь, чтобы людям не нужно было посещать ваш сайт, чтобы его увидеть? Кроме того, это защищает от того, что эта ссылка исчезнет в какой-то момент в будущем. - person Brad Larson; 15.09.2012
comment
@Boris, вы ссылаетесь на ссылки, но в ответе их нет. Они все еще существуют? - person Jono; 05.09.2013