0

私は Kentico を初めて使用し、製品オプションがフロントエンド Web サイトに表示されないようにする方法が 100% わかりませんが、システム管理者が引き続きオプションを使用して注文できるように、バックエンドで有効にしておく必要があります。

例えば

CMSDesk > ツール > e コマース > 商品オプション > 子オプションを持つオプションを編集

たとえば、3 つの子オプションがあり、そのうちの 2 つを Web サイトでユーザーに表示したいのですが、そのうちの 1 つだけをエンド ユーザーから非表示にし、管理者のみがオプションにアクセスできるようにしたいと考えています...

以前にこの機能が必要だった人はいますか? もしそうなら、どのようにそれを達成しましたか?

ありがとう

ミシェル

4

1 に答える 1

0

Kenticoの公式フォーラムで私の答えを見つけてください。

[フォーラムリンク][1]

私たちのフォーラムはstackoverflowよりも頻繁に監視されているので、そこで議論を続けることをお勧めします;)

よろしく、ボリス、ケンティコ


アップデート:

リンクを無効にする必要がある場合の完全な答えは次のとおりです。

残念ながら、これは箱から出してすぐに達成することはできません。オプションを表示するコントロールを少しカスタマイズする必要があります。次の方法を変更する必要があります。

LoadProductOptions()

ファイル\CMSModules\ Ecommerce \ Controls \ ProductOptions\ShoppingCartItemSelector.ascx.csにあります。ライブサイトにロードおよび表示される製品オプションがあります。現在のユーザーがグローバル管理者であるかどうかを確認し、そうでない場合は、一部のフィールドの処理をスキップする必要があります。2番目のアプローチは、カスタムeコマースハンドラーでオーバーライドすることにより、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);
        }
    }
}

製品オプションテーブルにカスタムフィールドを追加して、フィールドをライブサイトに表示するかどうかを示すこともできます。

于 2012-09-14T15:05:54.373 に答える