11

プロジェクトでは、Typo3 v6.0 を使用しています。ネストされたコンテンツ要素、またはコンテンツ要素コンテナーを作成しようとしています。特定のテンプレートを使用せずにインライン 2 列レイアウトを作成できるようにしたいと考えています。私はtemplavoilaを使わずにこれをやろうとしています。

私が試した拡張機能はgridelementskb_nescefebs_fceですmulticolumnが、これらは Typo3 V6 と互換性がないため機能しません。

添付画像のような仕上がりを目指しています。インラインの 2 列のコンテンツを省略したり、1 回または複数回使用したりして、他のコンテンツ要素を含めることができる場合。

ここで最も簡単な解決策を探しています。などのソリューションに多くの学習時間を投資する必要がないことを好みますfluxhttp://fedext.net/ - クールに見えますが、今のところ時間がかかりすぎます)

何か案は?

インライン 2 カラム コンテンツのレイアウト例

4

8 に答える 8

15

私は Fluid 拡張スイート (flux、fluidcontent、fluidpages など) の作成者であり、もちろん、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 を追加したり、任意の ViewHelper を使用したりできます (必要に応じて TS オブジェクトをレンダリングすることもできます)。コンテンツ要素を追加するには、新しいテンプレート ファイルを追加するだけで、自動的に認識されます。

ただし、IRRE とは異なる動作をします (Flux フィールドを使用して実現することできます。そのデモを見たい場合はお知らせください): TYPO3 でネイティブのドラッグ アンド ドロップを使用して、子供を配置することができます。コンテンツ要素を実際のコンテンツ コンテナーに変換します。これは、テレビで行っていたようにです。

そのため、Fluid Content はおそらく TV に最も近いものです。

Flux がやり過ぎであるという点について、実際に何を実行するかについて説明したいと思います。

  • パスを知るための TS のキャッシュ読み取り
  • 検出されたテンプレートのキャッシュされたリスト
  • Fluid はネイティブ PHP にキャッシュします。Flux は Fluid のみを使用して構成を保存します (つまり、すべてがネイティブ PHP であるということです)。
  • Flux 自体は、保存されているコンテンツに反応するフック サブスクライバーを登録します。これにより、バックエンドが (気付かないうちに) 遅くなります。
  • Flux 自体は、1 つの例外を除いて FE に負荷を作成しません: キャッシュされていないプラグイン (FluidContent がキャッシュされている!) の場合、Flux はネイティブの PHP キャッシュ コードを呼び出して構成を読み取る場合があります。
  • FluidContent は非常に単純なコントローラーで構成されています。出力は完全にキャッシュされます。
  • VHS ViewHelper コレクションを追加することをお勧めします。それ自体ではまったく負荷がかかりません。ViewHelper を使用するリソースのみを使用します。ViewHelpers のヒープが含まれているので、役に立つと思います。

最初は圧倒されるように見えるかもしれませんが、pibase、FlexForm XML、TS、またはネイティブ Extbase プラグインよりも、知ったり覚えたりすることが少ないことを保証します。さらに安全策が必要な場合は、エディターで XSD スキーマを使用することを強くお勧めします。これにより、特別な<flux:....>タグなどのオートコンプリートが得られます。

ただし、Fluid のロジックについて少し学習する必要があります。レイアウトとパーシャルとは何か (ある時点でこれらを使用する可能性が高いでしょう)、特殊なタグを使用して変数を参照する方法 (他の使用例 - ただし、手元にあるものではなく、単純な ViewHelper タグのみが必要です)。

これが役立つことを願っています。そして、Flux はやり過ぎであり、学ぶことが多すぎるというあなたの恐れを軽減しました ;)

乾杯、
別名クラウス。NamelessCoder

于 2013-03-12T19:40:20.860 に答える
5

grid_elements の既知のバグが修正されたstartnext プロジェクトがあります。Afaik の次のステップは、grid_elements を TYPO3 6 と互換性を持たせることです。しかし、公開するまでに数週間かかると思います。しかし、おそらくそれらはバージョン 2 から始まるでしょう (最近では TYPO3 6 と互換性があります...)。

forge プロジェクトを見てください。

于 2013-03-07T14:12:20.370 に答える
4

拡張機能 DCE ( http://typo3.org/extensions/repository/view/dce ) を参照してください。そこでコンテンツ要素を自分で定義できます。または、 http://fedext.net/フレームワークを使用して文字通り何でも作成できます。最新のブログ投稿を読んで、これらの拡張機能を使用して動的コンテンツ要素を作成する方法を理解してください。

于 2013-03-03T20:04:15.200 に答える
4

わかりました、私は半分の解決策を持っています。カスタム コンテンツ要素を管理するために、WEC コンテンツ要素プラグインを使用しました。

次に、次のフレックスフォームを使用しました。

<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>

そして、次のフロントエンドのタイポスクリプト設定:

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エディターを使用してコンテンツ要素を追加/編集するバックエンド コンテンツ要素が生まれました。ただし、コンテナー要素にはプレビューがなく、2 つの列は (互いに隣り合うのではなく) 互いの下に配置されます。これはすべて、何時間にもわたってグーグルで検索し、さまざまな方法/プラグインを試した後に見つけた唯一の実行可能なソリューションです。

これが誰かに役立つことを願っています。

于 2013-03-11T09:27:26.733 に答える
2

私は...するだろう...

  1. tt_content2つの新しいフィールド(各列に1つ)を使用してテーブルを拡張します。phpMyAdminで手動で行うことができますが、データベースの比較などを行うときに、インストールツールでフィールドが誤って削除されるリスクがあります。したがって、このための非常に単純な拡張機能を作成することをお勧めします。実際には、拡張機能を説明するext_emconf.phpと新しいフィールドを定義するためのext_tables.sqlの2つのファイルだけです。

  2. typo3conf / extTables.phpで、新しいコンテンツ要素タイプ(=コンテナー)と2つの新しいフィールド(1つは左の列用、もう1つは右の列用)をそれぞれ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';

ノート

  • これは、特定のケースに対応する単純な(そして少し大雑把な)ソリューションです。より良い解決策は、コンテナ内の列数を動的に設定する可能性を考慮に入れることです。

  • 左/右の列要素の操作にはいくつかの制限があります。それらを簡単に移動したり、さまざまなコンテナ間でコピーしたりすることはできません。

于 2013-03-01T13:43:24.803 に答える
1

これは、TemplaVoilaを使用せずにFCEを作成する方法に関する会議プレゼンテーションのビデオです。残念ながらドイツ語のみですが、おそらくそれは役に立ちます。

http://vimeo.com/29213790

于 2013-03-12T16:32:54.083 に答える
0

「マルチカラム」プラグインを試すことをお勧めします。他の実装のような依存関係はありません (FCE のすべてではないにしても、ほぼすべてを試しました)。ネスト機能も備えています。全体として、TYPO3 とうまく連携しています。最近、TYPO3 v6 に移植されました。いくつかのサイトで使用していますが、非常に満足しています。(「失われた要素」が間違って表示されるなどのバグは少ないですが、フォージページで修正されています)

TER ドキュメントへのリンクは次のとおりです: http://typo3.org/extension-manuals/multicolumn/2.1.14/view/

于 2013-04-17T08:10:51.147 に答える
0

Fluid Powered TYPO3 を使用してみてください。新しい事前構成されたディストリビューション「サイト」で

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

Claus Due のスクリーンキャスト

http://vimeo.com/110469200

Typo3conf/AdditionalConfiguration.php を忘れずに追加してください 。インストール方法を教えてください。

于 2015-02-10T16:50:42.497 に答える