2017-08-04 12 views
0

これはさらなるアクションのために追加のソースをdce-imageに追加しようとしています。いくつかのJavaScriptアクションを実行する代替ソース。さらなるアクションのために画像に追加のソースを追加してください

希望の出力は次のようになります。

<img src="path/to/foo.png" data-altsrc="path/to/bar.png"> 

問題は、私が使用しているDCEである - その反復処理を「画像」を通じて、次のように:

<f:for each="{dce:fal(field:'image', contentObject:contentObject)}" as="fileReference"> 
    <f:image src="{fileReference.uid}" treatIdAsReference="1" /> 
</f:for> 

をだから私は希望の場合これに複数のイメージを挿入する私はどちらが正規のソースで、どちらが代替のソースであるかを知っているイメージ間には実際の関係はありません。

したがって、セクションを作成し、フィールドごとに1つの画像に制限できる画像用の2つのフィールドを追加する可能性がありました。しかしforループがあり、最初のイメージの2番目のイメージのソースにアクセスすることはできません。

dceで作業しているユーザーにとっては、これらのイメージの間には目に見える関係があります。このような何かを達成しようとして

イム:

<f:for each="{field.images}" as="images"> 
    <!-- want to achieve something like this --> 
    <f:image image="{images.foo.src}" data-altsrc="{images.bar.src}"> 

    <!-- thats the normal way iterating through images --> 
    <f:for each="{images.foo}" as="image"> 
     <f:image image="{image}" /> 
    </f:for> 
</f:for> 

もう一つのアイデアは、代替画像を介して第1の反復処理し、それらにアクセスするために配列にし、メイン画像にそれらを格納することですが、私は考えていますこれが可能であれば、ユーザーのdceのユーザビリティが制限されます。

dce-fluidでこれを達成する方法はありますか?あなたは液体なViewHelperのデータ属性を使用して、インライン呼び出しで画像のURIを取得する必要があり、事前

答えて

1

まあ、そこから関係を追加するためにsys_file_referenceテーブルを拡張できると思います。だからあなたはネストされた関係(決してそれをしなかったので、あなたは試してみなければならないでしょう)を持っていました。

また、必要な場所のtcaタイプにフィールドを追加する必要があります。少し難しいかもしれません。 Tca types overridesをご覧ください。

フィールド「alternative_reference」を使用してsys_file_referenceテーブルを拡張し、必要なTCAセットアップを追加することができます。その後、FileRepositoryを介してFileReferencesを取得し、sys_file_referenceを外部テーブルとして使用する必要があります(もちろん、識別子としてsys_file_reference uid)。

FileRepository::findByRelation(
    'sys_file_reference', 
    'alternative_reference', 
    $uidOfActualSysFileReferenceRecord 
); 

もう1つの可能性は、2つの異なるsys_file_reference関係を持つ完全に新しいレコードです。そのレコード(例えば:tx_ext_domain_model_imageset)はimage_defaultとimage_alternateフィールドを持ち、どちらもfile_relationsとして設定されます。それは確かに機能します。

$defaultImages = FileRepository::findByRelation(
    'tx_ext_domain_model_imageset', 
    'image_default', 
    $uidOfRecord 
); 
$alternativeImages = FileRepository::findByRelation(
    'tx_ext_domain_model_imageset', 
    'image_alternative', 
    $uidOfRecord 
); 

私はあなたがレコード、モデル、tcaなどの作成に関する知識を持っていると仮定します。

私は個人的には第2の方法を好みますが、もっと清潔でコアテーブル構造を変更しません。

はまた

<img src="{f:uri.image()}" data-altsrc="{f:uri.image()}" /> 

より良いあなたのニーズを、スイートかもしれませんが、行くための最善の方法は、その目的のために、独自なViewHelperを書くことであるかもしれない第二の画像生成なViewHelperは、そこにあります。 Object(ImageSet)をパラメータとして渡し、そこにあるすべてのロジックを処理することができます。したがって、テンプレートはより簡単で読みやすく/作業しやすくなります。

+0

私は、(あなたが言ったように)私が流体テンプレート(dce)で使用する私自身のViewHelperを作成する最良の方法であると仮定します。また、コアの変更を避ける必要があります。これは正解かもしれません。私はもっ​​とそれを見ている。ありがとう。 – Slatyoo

1

感謝。達成方法は次のとおりです。

<f:image src="{fileReference.uid}" data="{altsrc: '{f:uri.image(src: \'{fileReference.uid}\', treatIdAsReference: 1}" treatIdAsReference="1"/> 

これは作業を行うはずです。

+0

これを理解すれば、srcとdata-altsrcが同じになるように、同じimgのソースが追加されます。これは私が達成したかったものではありません。私の目標は、第2の画像のソースを第1の画像のデータとして追加することでした。私がこの間違ったことを理解すれば私を修正してください。ありがとう。 – Slatyoo

関連する問題