0

ModX Web サイトに大量のデータをインポートできるプロジェクトに取り組んでいます。

これにより、インポートされたフィールドからのデータを表示できるようにする必要がありますが、クライアントが個々のフィールドをコンテンツ リソースに表示したい場所に配置できるようにする必要があります。

したがって、私の考えは、個々のフィールドをそれぞれプルする個々のスニペットを作成することでした。

ただし、数百のフィールドが存在する可能性があるため、これはテーブルに対して何度もクエリを実行する必要があるため、システムを完全に占有することになることはわかっています。

すべてのフィールドをプルする「マスター スニペット」を作成するにはどうすればよいですか?

たとえば... 1 回プルして を取得Rec1Field1, Rec1Field2, Rec1Field3, Rec1Field4しますが、[[Rec1Field1]]、[[Rec1Field2]]、[[Rec1Field3]]、[[Rec1Field4]] などのコンテンツ リソースで使用できます。

4

2 に答える 2

2

これについて別のアプローチを行うことができます。

Modx には、$modx->getChunkプレースホルダーを含むチャンクを取得し、プレースホルダーに一致するキーを配列に提供できるようにする関数が呼び出されています。これらのプレースホルダーは、キーの値に置き換えられます。

これは明らかにあなたが望むものではありませんが、解析プレースホルダーで文字列を使用する方法の実例が既に存在します。

このチュートリアルを参照してください

だから、あなたがすることはこれです:

  1. 顧客が必要なコンテンツ フィールドにプレースホルダーを配置できるようにします。
  2. コンテンツを表示するテンプレートで、次のようなカスタム スニペットを呼び出します。

    [[parse_content_with_placeholders? &content=`[[*内容]]` ]]

このスニペットでは、次のようなことを行います。

// Properties
$props = array('Rec1Field1' => 'Foo','Rec1Field2' => 'Bar');

// Create the temporary chunk
$uniqid = uniqid();
$chunk = $modx->newObject('modChunk', array('name' => "{tmp}-{$uniqid}"));
$chunk->setCacheable(false);

$output = $chunk->process($props, $content);
于 2013-08-28T19:34:11.753 に答える