ShowRowViewHelper

Um einen Viewhelper zu erstellen zunächst das Verzeichnis Classes/ViewHelpers/Detail anlegen. Dort eine Datei anlegen ShowRowViewHelper.php. Dieser ViewHelper nimmt 2 Argumente: Label und Value und gibt ein Feld mit Beschriftung für die Detailansicht aus. Der Html Code ist per TS konfigurierbar.

<?php
class Tx_Rsysproductbase_ViewHelpers_Detail_ShowRowViewHelper extends Tx_Fluid_ViewHelpers_Format_AbstractEncodingViewHelper implements t3lib_Singleton {

    /**
     * shows a detail row wrapped with TS settings
     *
     * @param string $value string show
     * @param string $label string for label
     * @return string the altered string
     * @author Erwin Knoll <typo3coding@rootsystem.de>, Rootsystem
     * @api
     */
    public function render($value = NULL, $label=NULL) {

        if(!empty($value)) {
            $value_parsed = $value;

            // wrap
            $settings = $this->templateVariableContainer->get('settings');
            $wrap = $settings['Detail']['label_wrap'];

            if($label && (strpos($label,'tx_rsysproductbase') === 0)) {
                $label = Tx_Extbase_Utility_Localization::translate($label, 'Rsysproductbase');
            }

            $ret =  preg_replace ('/\|/',$label, $wrap, 1);
            $ret = preg_replace ('/\|/',$value_parsed, $ret, 1);
        } else {
            $ret = '';
        }
        return $ret;
    }
}
?>

Konfiguration des Html wraps mit TS:

plugin.tx_rsysproductbase {
    Detail {
        label_wrap (
        <tr>
            <td class="product_property_label">
                |
            </td>
            <td class="product_property_value">
                |
            </td>
        </tr>
        )
    }

Im Fluid Template:

<rsys:Detail.ShowRow value="{product.title}" label="tx_rsysproductbase_domain_model_product.title"/>

Das ist zwar nicht besonders intelligentes, vereinfacht aber die Erstellung der Templates ungemein - weiterhin wird hier die ganze Ausgabe unterdrückt, wenn das Feld keinen Wert hat (Leerstring oder 0).