Archiv für den Autor: Jens Richter

share

TYPO3: Fluid und Grid Elements gemeinsam verwenden

Wie man Partials und ViewHelper für Gridelements nutzen kann: Alternativ zur normalen TypoScript-Konfiguration ist es möglich, die Darstellung eines Grid-Elements in einem einfachen HTML-Template zu definieren und dabei auf die Fähigkeiten von Fluid zurückzugreifen.

Die folgende Anleitung beschreibt die Verwendung von Fluid für die Frontendausgabe von Raster-Elementen. Sie wurde mit gridelements 2.0.2 unter TYPO3 6.1 getestet. Es wird vorausgesetzt, dass die gridelements-Extension bereits installiert ist und das statische TypoScript der Extension im Template eingebunden wurde.

Als Beispiel legen wir ein neues Gridelement (CE Backend Layout) mit zwei Zeilen und drei Spalten an, hierbei werden die beiden linken Elemente zu einer Sidebar und die beiden rechten oberen Spalten zu einer Spalte zusammengefasst. Dies kann entweder über die Raster-Konfiguration oder den Assistenten erfolgen.

Folgende Raster-Konfiguration liefert das gewünschte Ergebnis:

backend_layout {
    colCount = 3
    rowCount = 2
    rows {
        1 {
            columns {
                1 {
                    name = Left
                    rowspan = 2
                    colPos = 11
                }
                2 {
                    name = Top
                    colspan = 2
                    colPos = 12
                }
            }
        }
        2 {
            columns {
                1 {
                    name = BottomLeft
                    colPos = 22
                }
                2 {
                    name = BottomRight
                    colPos = 23
                }
            }
        }
    }
}

Anschließend geht es an die TypoScript-Konfiguration für das Gridelement im Template-Setup.

tt_content.gridelements_pi1.20.10.setup {
    # ID des Gridelements
    1 < lib.gridelements.defaultGridSetup
    1 {
        # FLUIDTEMPLATE konfigurieren
        cObject = FLUIDTEMPLATE
        cObject {
            file = fileadmin/template/gridelements/layout.html
        }
    }
}

Zum Schluss noch das Fluid-Template. Zum Einbinden des Spalteninhalts des Raster-Elements wird auf die entsprechende Spalte im data-Objeḱt zugegriffen.

<div class="row">
    <div class="column small-4">
        <f:format.raw>
            {data.tx_gridelements_view_column_11}
        </f:format.raw>
    </div>
    <div class="column small-8">
        <div class="row">
            <div class="column small-12">
                <f:format.raw>
                    {data.tx_gridelements_view_column_12}
                </f:format.raw>
            </div>
        </div>
        <div class="row">
            <div class="column small-6">
                <f:format.raw>
                    {data.tx_gridelements_view_column_22}
                </f:format.raw>
            </div>
            <div class="column small-6">
                <f:format.raw>
                    {data.tx_gridelements_view_column_23}
                </f:format.raw>
            </div>
        </div>
    </div>
</div>

Wenn das Gridelement auf einer Seite hinzugefügt und mit Inhalt gefüllt wurde, sollte man im Frontend folgendes Ergebnis erhalten:

layout
share

Reaktivieren der Lieferantenliste (oxvendor) in OXID eShop

Für ein aktuelles Projekt (aktuelle Version der OXID 4.5-Branch) wird die Lieferantenliste im Frontend benötigt. Diese wurde aus Performancegründen vom OXID Team per default deaktiviert, die Vendor-Funktionen sind jedoch noch vorhanden, da nur die Config-Variable entfernt wurde. Durch ein einfaches Modul für die oxcmp_categories-Klasse  lässt sich die Funktionalität der Lieferantenliste und der zugehörigen Funktionen schnell wieder herstellen.

<?php
class marm_oxcmp_categories extends marm_oxcmp_categories_parent{
public function init()
{
$myConfig =  $this->getConfig();
$myConfig->setConfigParam( ‚bl_perfLoadVendorTree‘, 1 );
parent::init();
}
}

Anschließend können auf die Funktionen wieder im Template zurückgeriffen werden um die Lieferantenliste wieder anzuzeigen. Man kann sich dazu an der Herstellerliste orientieren.