TYPO3 gridelements:从FlexForm FAL字段渲染图像

时间:2015-03-02 16:21:37

标签: typo3 typo3-6.2.x

我尝试渲染相同类型的多个FCE(gridelements内容元素)。但是,不会渲染图像。

定义FCE具有与此完全相同的图像字段的flexform:

<image>
    <TCEforms>
        <config>
            <type>inline</type>
            <appearance type="array">
                <createNewRelationLinkTitle>LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:createNewRelationLinkTitle</createNewRelationLinkTitle>
                <headerThumbnail type="array">
                    <field>uid_local</field>
                    <height>45c</height>
                    <width>45</width>
                </headerThumbnail>
            </appearance>
            <foreign_field>uid_foreign</foreign_field>
            <foreign_label>uid_local</foreign_label>
            <foreign_match_fields type="array">
                <fieldname>image</fieldname>
            </foreign_match_fields>
            <foreign_selector>uid_local</foreign_selector>
            <foreign_selector_fieldTcaOverride type="array">
                <config type="array">
                    <appearance type="array">
                        <elementBrowserAllowed>gif,jpg,jpeg,tif,tiff,bmp,pcx,tga,png,pdf,ai</elementBrowserAllowed>
                        <elementBrowserType>file</elementBrowserType>
                    </appearance>
                </config>
            </foreign_selector_fieldTcaOverride>
            <foreign_sortby>sorting_foreign</foreign_sortby>
            <foreign_table>sys_file_reference</foreign_table>
            <foreign_table_field>tablenames</foreign_table_field>
            <maxitems>1</maxitems>
            <minitems>0</minitems>
        </config>
    </TCEforms>
</image>

定义元素的TypoScript看起来像这样:

tt_content.gridelements_pi1.20.10.setup {
  3 < lib.gridelements.defaultGridSetup
  3 {
    stdWrap.cObject = COA
    stdWrap.cObject {
      10 = IMAGE
      10 {
        stdWrap.wrap = <div class="media-left">|</div>
        file {
          import.data = field:flexform_image
          treatIdAsReference = 1
          import.listNum = 0
        }
      }
    }
  }
}

问题 将元素放到页面上时,会显示图像。将多个元素放在同一页面上会导致每个元素将第一个FCE的图像渲染到页面上。一旦我编辑FCE(例如第二个放置的元素),就不会显示任何图像。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您需要确保每个flexform字段的文件名都是唯一的:

<foreign_match_fields type="array">
    <fieldname>image</fieldname>
</foreign_match_fields>

最好是使用真实的字段名称。例如flexform_image。

答案 1 :(得分:1)

这是弹性形式

<table id="example" class="table table-striped table-bordered" >
<thead>
</thead>
<tbody>
<tr>
<?php $i=0; foreach($aso_arr as $side=>$s) { ?>
<td>
<div class="card" >
<div class="card-img-top" ></div>
<div class="card-body text-center">
<img class="avatar rounded-circle" src="https://s3.eu-central-1.amazonaws.com/bootstrapbaymisc/blog/24_days_bootstrap/robert.jpg" alt="Bologna">
<h4 class="card-title">Robert Downey Jr.</h4>
<h6 class="card-subtitle mb-2 text-muted">Famous Actor</h6>
<p class="card-text">Robert John  </p>
<a href="#" class="btn btn-info">View Profile</a>
</div>
</div>
</div>
</td>
<?php  $i++; if ($i % 4 == 0) {echo '</tr><tr>';}  } ?>
</tbody>
</table>
<script>
$(document).ready(function() {
$('#example').DataTable();
} );
</script>

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.20/js/dataTables.bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.20/css/dataTables.bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">