1

特定の時間が経過したかどうか (日付なし) を確認するために、パーソナライゼーションのカスタム条件を作成する必要があります。そこで、次のように新しいクラスを作成しました。

public class TimePassedCondition<T> : Sitecore.Rules.Conditions.OperatorCondition<T> where T : RuleContext
{
     public string SelectedTime { get; set; }

     protected override bool Execute(T ruleContext)
     {
        //TODO: Add Logic
        return false;
    }
}

次に、新しい条件定義を追加しました

Sitecore/System/Settings/Rules/Elements/Date/ そして、次のテキスト when [SelectedTime,DateTime,,the time] has passed を指定しました。必要なコンポーネントに新しいパーソナライゼーション条件とアクションも追加しました。そのため、ページをデバッグして開くと、ブレークポイントがヒットします。

ただし、私の問題は、いくつかの記事で読んだことによるとSelectedTime、パーソナライゼーション条件を作成したときに選択した日時をプロパティに入力する必要があることですが、私にとっては常に NULL です。

私は何が欠けていますか?

注: これは Sitecore 8.1 です。

4

1 に答える 1

2

パーソナライゼーション条件を完全にクリアし、再構築します。

<condition>パーソナライゼーションは、ストレージ変数名を反映する属性名を持つ要素にXML として格納されます。これは、ルール テキストで基になるストレージ変数をリファクタリングする場合に問題になります。それらは同期を維持せず、ルールの実行時にマップされません。

于 2016-02-10T02:35:11.560 に答える