-2

コア サービスを使用して、SDL Tridion 2011 で空のコンポーネントを作成したいと考えていました。プロセスの開始時に私が持っている唯一の情報は、スキーマ URI です。スキーマには、任意の種類のフィールド (テキスト、rtf、数値、日付、埋め込みなど) を含めることができ、そのうちのいくつかは必須である場合があります。

必須フィールドについては、ダミーの値を保存する必要があることを理解しています。後で手動で変更されるため、これは許容されます。

どうすればこれを達成できますか?

4

4 に答える 4

7

まず、スキーマですべてのフィールドがオプションに設定されていることを確認します。そうしないと、これは機能しません。

第二 - あなたが保存します。

オプション フィールドに値がない場合、XML 表現はありません。次のようなコンポーネントを定義するスキーマがある場合:

  • フィールド1
  • フィールド2
  • フィールド3

すべてのフィールドがオプションで、フィールド 2 に値を保存すると、Tridion は以下を保存します。

<Content xmlns="yourNamespace"><Field2>SomeValue</Field2></Content>

フィールドの 1 つが必須でない場合は、値を指定する必要があります。CoreService を使用している場合は、ReadSchemaFieldsクラスを使用してフィールドとそれらに関する情報を取得できます - タイプ、必須/オプションなど。

于 2012-05-08T12:57:36.627 に答える
7

あなたの質問/要件を見て、あなたが探しているものを正確に理解することで、可能な限り適切で適切な回答を得ることができます.

「コア サービスを使用してコンポーネントを作成するための一般的なコードをどのように記述できますか?」すべてのフィールドを事前に知っている特定のスキーマでコンポーネントを作成する代わりに。

それがあなたが探しているものである場合は、次のことを行う必要があります。

  1. CoreService でスキーマ フィールドを読み取る必要があります (スキーマ URI を知っているため)
  2. これで、コンテンツを作成する必要があるフィールドのタイプ (埋め込み/コンポーネント リンクなど) がわかりました。
  3. 彼の答えで「Puf」が指すリンクを使用してください。

フィールドが Tridion スキーマで必須としてマークされている場合、値を入力する必要があり、スキーマで定義されているフィールド タイプと一致する必要があることに注意してください。

コア サービスのサンプル コードによるスキーマ フィールドの読み取りについては、こちらを参照してください。

于 2012-05-08T14:23:30.533 に答える
5

コア サービスを介してコンポーネントのフィールドを更新することは、既にここで回答されています: Updating Components using the Core Service in SDL Tridion 2011

その投稿は、ここで見つけることができるヘルパー クラスを指しています: Updating Components using the Core Service in SDL Tridion 2011

これらがコンポーネントの作成に役立たない場合は、コードを作成するよう依頼するのではなく、コードを投稿することをお勧めします。

于 2012-05-08T14:00:02.120 に答える
0

特定のスキーマの特定のフィールドに入力するコードは 1 つの環境でしか機能しないため、ユース ケースについて質問します。フィールドを自動的に決定できるコードは再利用可能です。

ユース ケースがインライン編集 (Experience Manager または SiteEdit) を備えた Tridion セットアップの場合、正しいアプローチはコンテンツ/コンポーネント タイプです。これらは、「ジャンクのデフォルト」、作成者への指示、さらに保存場所のコンテキストを含む参照コンポーネントを定義します。

作成者がダミー コンポーネントを作成できるようにするユース ケースの場合は、次のようにすぐに使用できます。

  1. CTRL+C
  2. CTRL+V

「参照コンポーネント」を作成するために必要な 1 回限りのセットアップ。もちろん、コア サービスを使用してアイテムをコピーすることで、この動作を模倣できます (「無題のコピー」という名前が適切でない場合)。

その場合は、コピーも行います。コア サービスを使用して Tridion アイテムを作成するための一般的なソリューションを参照してください。

  • デフォルトが必要なフィールドは、スキーマ内に実際のデフォルトを持つことができます。
  • 「ジャンク値」は作成者にはあまり役に立ちません。フィールドの場合は、適切な選択や指示などの適切なデフォルトを常に検討してください (おそらく)。10 秒の変更は、開発コストは実質的にゼロですが、将来のすべてのコンポーネントとそれらを作成する作成者に影響を与えます。
于 2012-08-24T03:56:16.650 に答える