【问题标题】:FAL image field in extension flexform扩展 flexform 中的 FAL 图像字段
【发布时间】:2014-07-24 18:45:52
【问题描述】:

是否可以像普通的 tt_content 元素一样创建一个 flexform FAL 图像字段? 我想在扩展 flexform 字段中实现以下屏幕中显示的功能。

我创建了一个 flexform 元素,但在翻译默认内容元素记录时出现问题。当我翻译默认内容元素时,图像不会复制到翻译的元素。

所以我需要实现 flexform FAL 图像字段,并且在翻译中没有错误。

【问题讨论】:

标签: php typo3 typo3-6.2.x


【解决方案1】:

效果很好,但是如果你不在插件中添加图片,你会以异常结束。所以我稍微调整了代码:

$resourceFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\ResourceFactory');
    $sliderItems = array();
    $sliderItemUids = $this->settings['sliderImages'];


    if(!empty($sliderItemUids)){
        $sliderItemUids = explode(',', $sliderItemUids);
        $arraySize = sizeof($sliderItemUids);
        for($i = 0; $i < $arraySize; $i++){

            $itemUid = $sliderItemUids[$i];

            $fileReference = $resourceFactory->getFileReferenceObject($itemUid);
            $fileArray = $fileReference->getProperties();
            array_push($sliderItems, $fileArray);
        }
        // debug($this->settings['sliderImages']);
        $this->view->assign('sliderItems', $sliderItems);
    }

【讨论】:

    【解决方案2】:

    希望这会有所帮助 - 我使用 flexforms 和 FAL 开发了一个图像滑块。代码如下:

    Flexform 配置(仅适用于图像字段)

    <settings.sliderImages>
            <TCEforms>
                <label>LLL:EXT:bwrk_slider/Resources/Private/Language/locallang_db.xlf:imageslider.flex.general.sliderImages</label>
                <config>
                    <type>inline</type>
                    <maxitems>99</maxitems>
                    <foreign_table>sys_file_reference</foreign_table>
                    <!--<foreign_field>uid_foreign</foreign_field>-->
                    <foreign_table_field>tablenames</foreign_table_field>
                    <foreign_label>uid_local</foreign_label>
                    <foreign_sortby>sorting_foreign</foreign_sortby>
                    <foreign_selector>uid_local</foreign_selector>
                    <foreign_selector_fieldTcaOverride type="array">
                        <config>
                            <appearance>
                                <elementBrowserType>file</elementBrowserType>
                                <elementBrowserAllowed>jpg,png</elementBrowserAllowed>
                            </appearance>
                        </config>
                    </foreign_selector_fieldTcaOverride>
                    <foreign_match_fields type="array">
                        <fieldname>image</fieldname>
                    </foreign_match_fields>
                    <appearance type="array">
                        <newRecordLinkAddTitle>1</newRecordLinkAddTitle>
                        <headerThumbnail>
                            <field>uid_local</field>
                            <height>64</height>
                            <width>64</width>
                        </headerThumbnail>
                    </appearance>
                </config>
            </TCEforms>
        </settings.sliderImages>
    

    我的扩展程序的控制器

            $resourceFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\ResourceFactory');
            $sliderItems = array();
            $sliderItemUids = $this->settings['sliderImages'];
            $sliderItemUids = explode(',', $sliderItemUids);
    
            if(!empty($sliderItemUids)){
                $arraySize = sizeof($sliderItemUids);
                for($i = 0; $i < $arraySize; $i++){
    
                    $itemUid = $sliderItemUids[$i];
    
                    $fileReference = $resourceFactory->getFileReferenceObject($itemUid);
                    $fileArray = $fileReference->getProperties();
                    array_push($sliderItems, $fileArray);
                }
            }
    
            // debug($this->settings['sliderImages']);
            $this->view->assign('sliderItems', $sliderItems);
    

    流体模板

    <f:for each="{sliderItems}" as="item">
        <div class="slider-item">
            <div class="slider-item-img">
                <f:image src="{item.uid}" alt="..." treatIdAsReference="TRUE" />
            </div>
            <div class="slider-item-text"></div>
        </div>
    </f:for>
    

    【讨论】:

    • 这很好,但是当我使用这个解决方案时,当我点击 + 新按钮时出现错误“内部服务器错误”。
    • 你为什么评论这个部分? 将关系保持在各个部分中是否可以负担得起?
    猜你喜欢
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2022-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多