簡體   English   中英

Typo3 V6:如何創建內容元素容器? (沒有電視)

[英]Typo3 V6: How to create a content element container? (without TV)

對於一個我正在使用Typo3 v6.0的項目。 我正在尋找創建嵌套的內容元素或內容元素容器。 我希望能夠在不使用特定模板的情況下創建內聯雙列布局。 我希望使用templavoila這樣做。

我嘗試過的擴展是gridelementskb_nescefebs_fcemulticolumn但是這些擴展gridelements ,因為它們與Typo3 V6不兼容。

我的目標是像附加圖像那樣的最終結果。 內聯雙列內容可以省略,使用一次或多次使用,包含任何其他內容元素。

我在這里尋找最簡單的解決方案。 我更喜歡不需要在像flux和whatnot這樣的解決方案中投入大量的學習時間( http://fedext.net/ - 看起來很酷,但現在也耗費時間)

有任何想法嗎?

具有內聯雙列內容的示例布局

我是Fluid擴展套件的作者(流量,流體含量,流體頁面等),當然希望幫助您了解使用FluidContent制作FCE。 它確實沒有人們擔心的那么先進。 至少,它比上面的例子更緊湊。 以下結果與FluidContent中的示例相同:

TypoScript(靜態加載:css_styled_content,fluid_content)

plugin.tx_fed.fce.yourname {
    templateRootPath = fileadmin/Templates # if you don't want to use an extension (1)
    # partial and layout root paths not defined (2)
}

關於(1)你真的,真的應該。 使用擴展程序可將用戶上傳的媒體等與您的網站內容分開。 如果您這樣做,只需使用EXT:...私有資源文件夾的路徑。 關於(2)這些路徑只有在您真正希望使用部分時才是必需的。

然后,模板文件本身(在TS中添加文件所在的路徑時自動檢測):

{namespace flux=Tx_Flux_ViewHelpers}
<f:layout name="Content" />
<f:section name="Configuration">
    <flux:flexform id="columns" label="Columns" icon="path/to/iconfile.jpg">
        <flux:flexform.grid>
            <flux:flexform.grid.row>
                <flux:flexform.grid.column>
                    <flux:flexform.content name="left" label="Left content" />
                </flux:flexform.grid.column>
                <flux:flexform.grid.column>
                    <flux:flexform.content name="right" label="Right content" />
                </flux:flexform.grid.column>
            </flux:flexform.grid.row>
        </flux:flexform.grid>
    </flux:flexform>
</f:section>
<f:section name="Preview">
    <flux:widget.grid />
</f:section>
<f:section name="Main">
    <div class="row">
        <div class="span6">
            <flux:flexform.renderContent area="left" />
        </div>
        <div class="span6">
            <flux:flexform.renderContent area="right" />
        </div>
    </div>
</f:section>

正如您所看到的,您可以完全自由地添加任何您想要的HTML,使用任何ViewHelpers(如果那是你的東西,甚至渲染TS對象)。 要添加其他內容元素,只需添加新模板文件 - 它們將自動被識別。

但它的工作方式與IRRE不同(你也可以使用Flux字段實現 - 如果你希望看到它的演示,請告訴我):它會讓你使用TYPO3中的原生拖放來放置你的孩子將內容元素轉換為實際內容容器 - 就像您以前使用電視一樣。

因此,Fluid Content可能是您最接近電視的內容。

關於Flux過度殺戮,我想告訴你它實際上的表現:

  • 緩存讀取TS以了解路徑
  • 檢測到的模板的緩存列表
  • 流體緩存到本機PHP,Flux僅使用Fluid來存儲配置(這意味着它一直是本機PHP)
  • Flux本身確實注冊了一個鈎子用戶,它對正在保存的內容作出反應,這確實會減慢后端(不明顯)
  • Flux本身不會在FE上創建負載,但有一個例外:在未緩存的插件中(FluidContent被緩存!)Flux可能會調用本機PHP緩存代碼來讀取配置。
  • FluidContent由一個非常簡單的控制器組成; 輸出完全緩存。
  • 您可能希望添加VHS ViewHelper集合 - 它本身創建絕對零負載:它僅使用您使用其ViewHelpers的資源。 它包含一堆ViewHelpers我相信你會發現它很有用。

一開始看起來可能看起來很難,但我保證你不會知道和記住比pibase,FlexForm XML,TS或本機Extbase插件更少。 如果你想要更多的安全網,我強烈建議你在編輯器中使用XSD模式 - 這可以讓你自動完成特殊的<flux:....>標簽和其他標簽。

但是:它需要你學習一點關於Fluid的邏輯:什么是Layouts和Partials(你很可能想在某些時候使用它們)以及如何使用特殊標簽並引用變量(這將是其他用例 - 但不是手頭的用例;它只需要簡單的ViewHelper標記)。

我希望這有幫助。 而且我已經減少了你對Flux過度殺戮和太多學習的恐懼;)

干杯,
克勞斯又名。 NamelessCoder

有一個startnext項目 ,其中grid_elements中的已知錯誤已得到修復。 Afaik下一步是使grid_elements與TYPO3 6兼容。但是我想,它們需要幾周才能發布。 但是,也許它們將從版本2開始(這些日子將與TYPO3 6兼容......)。

看看鍛造項目

您可能需要查看擴展DCE( http://typo3.org/extensions/repository/view/dce ); 在那里你可以自己定義內容元素。 或者,您可以使用http://fedext.net/框架創建任何字面意思。 只需閱讀最新的博客文章,即可了解如何使用這些擴展創建動態內容元素。

好吧,我有半解決方案。 我已經使用WEC內容元素插件來管理自定義內容元素。

然后我使用了以下flexform:

<T3DataStructure>
    <ROOT>
        <type>array</type>
        <el>
            <leftColumn>
                <TCEforms type="array">
                    <label>Left column</label>
                    <config>
                        <type>inline</type>
                        <foreign_table>tt_content</foreign_table>
                        <maxitems>100</maxitems>
                        <appearance>
                            <showSynchronizationLink>0</showSynchronizationLink>
                            <showAllLocalizationLink>0</showAllLocalizationLink>
                            <showPossibleLocalizationRecords>0</showPossibleLocalizationRecords>
                            <showRemovedLocalizationRecords>0</showRemovedLocalizationRecords>
                            <expandSingle>1</expandSingle>
                        </appearance>
                    </config>
                </TCEforms>
            </leftColumn>
            <rightColumn>
                <TCEforms type="array">
                    <label>Right column</label>
                    <config>
                        <type>inline</type>
                        <foreign_table>tt_content</foreign_table>
                        <maxitems>100</maxitems>
                        <appearance>
                            <showSynchronizationLink>0</showSynchronizationLink>
                            <showAllLocalizationLink>0</showAllLocalizationLink>
                            <showPossibleLocalizationRecords>0</showPossibleLocalizationRecords>
                            <showRemovedLocalizationRecords>0</showRemovedLocalizationRecords>
                            <expandSingle>1</expandSingle>
                        </appearance>
                    </config>
                </TCEforms>
            </rightColumn>
        </el>
    </ROOT>
</T3DataStructure>

以下前端的typoscript設置:

tt_content.twoColumnContainer = COA
tt_content.twoColumnContainer {
  10 = < lib.stdheader

  20 = COA
  20 {
    wrap = <div class="twocolumn-container"> | </div>

    10 = RECORDS
    10 {
        tables       = tt_content
        dontCheckPid = true
        source.data  = t3datastructure : pi_flexform->leftColumn
        wrap         = <div class="twocolumn-left"> | </div>
    }

    20 = RECORDS
    20 {
        tables       = tt_content
        dontCheckPid = true
        source.data  = t3datastructure : pi_flexform->rightColumn
        wrap         = <div class="twocolumn-right"> | </div>
    }
}

這導致了一個后端內容元素,它使用IRRE編輯器添加/編輯內容元素。 容器元素沒有預覽,並且兩列位於彼此下方(而不是彼此相鄰)。 所有這一切都是我在谷歌搜索和嘗試各種方法/插件后找到的唯一可行的解​​決方案。

希望這有助於某人。

我會...

  1. 使用2個新字段(每列一個)擴展tt_content表。 您可以在phpMyAdmin中手動執行此操作,但是在進行數據庫比較時,您可能會在安裝工具中意外刪除這些字段。 因此最好為此創建一個非常簡單的擴展 - 它實際上只有2個文件: ext_emconf.php描述擴展名, ext_tables.sql用於定義新字段。

  2. typo3conf / extTables.php中定義一個新的內容元素類型(=容器)和2個新字段(一個用於左列,一個用於右列),每個字段都是IRRE類型。

  3. 在根頁面的TypoScript配置中設置TCAdefaults.tt_content.pid = xxx ,以便左/右列元素不存儲在頁面本身上,而是存儲在某個sysfolder中。

  4. 在模板設置中定義新的內容元素,以便根據需要進行渲染。

更新

示例IRRE字段:

'user_2col_left' => array(
    'exclude' => 1,
    'label' => 'Left column',
    'config' => array(
        'type' => 'inline',
        'foreign_table' => 'tt_content',
        'maxitems' => '10',
        'appearance' => array(
            'collapseAll' => '1',
            'expandSingle' => '1',
            'newRecordLinkPosition' => 'bottom',
            'showAllLocalizationLink' => '1',
            'showPossibleLocalizationRecords' => '1',
            'showSynchronizationLink' => '1',
            'useSortable' => '1',
            'enabledControls' => array(
                'hide' => '0',
            ),
        ),
        'behaviour' => array(
            'disableMovingChildrenWithParent' => '1',
            'localizeChildrenAtParentLocalization' => '1',
        ),
    )
),

新內容類型示例:

t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['columns']['CType']['config']['items'][] = array(
    0 => '2 columns',
    1 => 'user_2cols',
    2 => '../fileadmin/user_2cols.gif',
);
t3lib_SpriteManager::addTcaTypeIcon('tt_content', 'user_2cols', '../fileadmin/user_2cols.gif');
$TCA['tt_content']['types']['user_2cols']['showitem'] = 'CType,header,--div--;LLL:EXT:cms/locallang_ttc.xml:tabs.access,--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.visibility;visibility,--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.access;access,--div--;LLL:EXT:cms/locallang_ttc.xml:tabs.appearance,--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.frames;frames,--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.textlayout;textlayout,--div--;LLL:EXT:cms/locallang_ttc.xml:tabs.extended';

筆記

  • 對於您的特定情況,這是一個簡單(有點粗糙)的解決方案。 更好的解決方案將考慮動態設置容器中列數的可能性。

  • 使用左/右列元素會有一些限制 - 您將無法輕松移動它們或在各種容器之間復制它們。

這是一個關於如何在不使用TemplaVoila的情況下制作FCE的會議演示視頻。 不幸的是只有德語,但也許有幫助。

http://vimeo.com/29213790

我建議你試試“multicolumn”插件。 它沒有其他實現的依賴(我幾乎嘗試了所有的FCE替代品)並且它具有嵌套功能。總體來說它與TYPO3很好地協作。 最近它被移植到TYPO3 v6。 我在很多網站上使用它,我很滿意。 (有很少的錯誤,比如顯示錯誤的“丟失元素”,但偽造頁面上有修復)

以下是TER文檔的鏈接: http//typo3.org/extension-manuals/multicolumn/2.1.14/view/

嘗試使用Fluid Powered TYPO3。 使用新的預配置分發“網站”

http://typo3.org/extensions/repository/view/site

來自Claus Due的截屏視頻

http://vimeo.com/110469200

別忘了添加typo3conf / AdditionalConfiguration.php 如何安裝?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM