2017-01-30 8 views
0

私はUmbraco v4.11.10 CMSを使用しており、MS SQLサーバデータベースのスクリプトを使用してメンバーの有効期限を一括変更しています。しかし、私がUmbracoバックエンドに戻ると、変更は表示されません。変更はMS SQLの "cms.ContentXml"テーブルに行われます。MS SQLデータベースの変更がUmbraco CMSバックエンドに書き戻されない

データベース内の値を表示するためにUmbraco CMSバックエンドを強制または同期する方法はありますか?私はUmbracoがXMLにデータを書き込むので、umbraco.configファイルを削除したが、それは役に立ちません。

+0

あなたが見ているのは、テーブルを更新した後にUmbracoが使用する内部メンバーインデックスが更新されていない可能性が高いことです。つまり、あなたはUmbraco 4.11を使用しています。これはUmbracoフォーラムでよりよく扱われる質問かもしれません。 –

+0

コメントありがとうRobert –

+0

こんにちはRobert、ContentXmlテーブルを変更していることに気がつきました。申し訳ありませんが、私はあなたがメンバーレコードデータを編集していると仮定しました。下の私の答えを見てください。この場合の最初のコメントは当てはまりません。 –

答えて

0

ContentXmlテーブルはUmbracoのコンテンツ用のハーフウェイハウスの一種であり、問​​題のオブジェクトに変更を加えて保存するとすぐに上書きされるため、直接編集しないでください。

Umbracoのコンテンツ(メディア、コンテンツ、およびメンバーを含む)の基礎となるデータは、実際には非常に柔軟なオブジェクトグラフ構造を使用していくつかの他のテーブルに格納され、簡単なSQLスクリプトでは簡単に編集できません。ボンネットの下に

、それはこのような何かを行く:

  1. ユーザーは、アイテム(メンバー、コンテンツ、メディア、など)を編集して保存します。
  2. [コンテンツアイテムの場合] Umbracoは、現在のバージョンをコピーして新しいバージョンを作成します。
  3. Umbracoは、データ型の格納タイプ(int、date、nvarchar、ntext)に従ってcmsPropertyDataテーブルに新しいレコードを作成し、propertyIdとitemIdを介してアイテムのレコードにリンクします。
  4. データが保存されると、オブジェクトのXML表現が生成され、cmsContentXmlテーブルに格納され、そのアイテムの以前のバージョンが上書きされます。
  5. コンテンツアイテムで、そのアイテムが公開されている場合、Umbracoは同じXML表現をUmbraco.configキャッシュファイルに書き込みます。

これはかなり単純な表現です。データの保存と変更に伴う複雑さを知るには十分なはずです。

Umbracoの広範なAPIを利用して、プラグインを作成してレコードを一括変更することを提案します。プラグインを使用して同様のことを行うことができます。また、それらを活用したり、それらのいくつかは非常に一般的なオープンソースなので、あなたのコードをそれを基にしてください。

関連する問題