2017-06-26 10 views
0

ケンチコのDocumentShowInSiteMapプロパティの値はどのように設定しますか?Kenticoの 'DocumentShowInSiteMap'プロパティの値はどのように設定しますか?

私が試してみた:DocumentHelperTreeHelper APIを使用して

  1. をしかし、両方で、このプロパティは、セッターにあなたのアクセス権を与えるものではありません。
  2. dbo.CMS_Document.DocumentShowInSiteMapの値を10に設定してSQLクエリを実行しようとしました。これらのクエリはうまく動作しますが、私がページアプリに行くと、 'Show in sitemap'のチェックボックスに変更はありません。データベースフィールドを0に設定しても、このチェックボックスは解除されません。

スケジュールされたタスクを実行しようとしています。このタスクは、指定した場所のドキュメントに対してこのプロパティを自動的に設定します。これを行う適切な方法は何ですか?どんな助けもありがたい。

答えて

1

これを試しましたか?

int TheDocumentToModify = 1221; 
     var PageItem = DocumentHelper.GetDocument(TheDocumentToModify , new TreeProvider()); 

     foreach(var culturePage in PageItem.CultureVersions) 
     { 
      culturePage.SetValue("DocumentShowInSiteMap", true); 
      // May need to apply Workflow check in/check out, see Kentico API examples based on your need. 
      culturePage.Update(); 
     } 
0

コード内には単純な方法はありません。 Setterは特別なクラスのDocumentCultureDataInfo内で利用可能で、SetObjectで保存する必要があります。このクラスにはすべてのカルチャーDBフィールドが含まれ、DocumentCultureDataInfoProviderによって操作されます。

このクラスはTreeNodeの内部プロパティです。しかし、私はコードでこの任意のことをやってみたことはありませんクラスは、内部のAPIの一部です。

ドキュメントとそのプロパティがキャッシュされ、新しいDB値が実際に取得されるようにキャッシュを更新する必要があります。このプロパティの読み込みは、各TreeNodeのLoadDefaultValuesの単純なGetDataを経由します。

+0

これも私が考えたものです。私はすべてのキャッシュ値をクリアしようとしました。ページとシステムの両方からアプリケーションの再起動も試みましたが、その値を取得するだけです。 –

+0

直接データベースクエリ@jeevanに対して強くお勧めします。これは、バージョン管理とワークフローのためです。あなたは一日中そのテーブルを変更することができますが、それがUIに保存されると、バージョン管理やワークフローのために上書きされます。 –

0

Trevor J Fayasの回答がおそらく動作します。私は昨日、これを考え出したし、ちょうど念のためにここに私の解決策を残す:

TreeHelper 
.GetDocuments(task.CurrentSiteName, aliaspath, null, false, "", "", "", -1, false, -1) 
.Where(doc => doc.DocumentShowInSiteMap) 
.ToList() 
.ForEach(node => 
{ 
    node.SetValue("DocumentShowInSiteMap", false); 
    node.Update(); 
}); 

明らかに異なるパラメータを取り、あなたが必要とする1または使用DocumentHelper.GetDocumentsaliaspathを交換してください。

関連する問題