コア サービスを使用して、SDL Tridion 2011 で空のコンポーネントを作成したいと考えていました。プロセスの開始時に私が持っている唯一の情報は、スキーマ URI です。スキーマには、任意の種類のフィールド (テキスト、rtf、数値、日付、埋め込みなど) を含めることができ、そのうちのいくつかは必須である場合があります。
必須フィールドについては、ダミーの値を保存する必要があることを理解しています。後で手動で変更されるため、これは許容されます。
どうすればこれを達成できますか?
コア サービスを使用して、SDL Tridion 2011 で空のコンポーネントを作成したいと考えていました。プロセスの開始時に私が持っている唯一の情報は、スキーマ URI です。スキーマには、任意の種類のフィールド (テキスト、rtf、数値、日付、埋め込みなど) を含めることができ、そのうちのいくつかは必須である場合があります。
必須フィールドについては、ダミーの値を保存する必要があることを理解しています。後で手動で変更されるため、これは許容されます。
どうすればこれを達成できますか?
まず、スキーマですべてのフィールドがオプションに設定されていることを確認します。そうしないと、これは機能しません。
第二 - あなたが保存します。
オプション フィールドに値がない場合、XML 表現はありません。次のようなコンポーネントを定義するスキーマがある場合:
すべてのフィールドがオプションで、フィールド 2 に値を保存すると、Tridion は以下を保存します。
<Content xmlns="yourNamespace"><Field2>SomeValue</Field2></Content>
フィールドの 1 つが必須でない場合は、値を指定する必要があります。CoreService を使用している場合は、ReadSchemaFields
クラスを使用してフィールドとそれらに関する情報を取得できます - タイプ、必須/オプションなど。
あなたの質問/要件を見て、あなたが探しているものを正確に理解することで、可能な限り適切で適切な回答を得ることができます.
「コア サービスを使用してコンポーネントを作成するための一般的なコードをどのように記述できますか?」すべてのフィールドを事前に知っている特定のスキーマでコンポーネントを作成する代わりに。
それがあなたが探しているものである場合は、次のことを行う必要があります。
フィールドが Tridion スキーマで必須としてマークされている場合、値を入力する必要があり、スキーマで定義されているフィールド タイプと一致する必要があることに注意してください。
コア サービスのサンプル コードによるスキーマ フィールドの読み取りについては、こちらを参照してください。
コア サービスを介してコンポーネントのフィールドを更新することは、既にここで回答されています: Updating Components using the Core Service in SDL Tridion 2011
その投稿は、ここで見つけることができるヘルパー クラスを指しています: Updating Components using the Core Service in SDL Tridion 2011
これらがコンポーネントの作成に役立たない場合は、コードを作成するよう依頼するのではなく、コードを投稿することをお勧めします。
特定のスキーマの特定のフィールドに入力するコードは 1 つの環境でしか機能しないため、ユース ケースについて質問します。フィールドを自動的に決定できるコードは再利用可能です。
ユース ケースがインライン編集 (Experience Manager または SiteEdit) を備えた Tridion セットアップの場合、正しいアプローチはコンテンツ/コンポーネント タイプです。これらは、「ジャンクのデフォルト」、作成者への指示、さらに保存場所のコンテキストを含む参照コンポーネントを定義します。
作成者がダミー コンポーネントを作成できるようにするユース ケースの場合は、次のようにすぐに使用できます。
CTRL+C
CTRL+V
「参照コンポーネント」を作成するために必要な 1 回限りのセットアップ。もちろん、コア サービスを使用してアイテムをコピーすることで、この動作を模倣できます (「無題のコピー」という名前が適切でない場合)。
その場合は、コピーも行います。コア サービスを使用して Tridion アイテムを作成するための一般的なソリューションを参照してください。