[TYPO3-german] Viehelper für Ausgabe der Endung einer Datei
bernd wilke
t3ng at bernd-wilke.net
Tue Nov 4 17:24:29 CET 2014
Am 04.11.14 16:42, schrieb Philipp Holdener:
> Hallo zusammen
>
> Ich hab hier ein DCE für einen Downloadbereich.
> Da gebe ich mit einem VHS Viewhelper bereits die Grösse der Datei an.
> Gerne würde ich auch die Dateiendung irgendwie ausgeben lassen.
>
>
> Mein fluid sieht bis jetzt so aus
>
>
> <ul>
> <f:for each="{field.download}" as="download">
>
> <v:var.set name="downloadFileInMb">
> <v:math.round decimals="2">
> <v:math.division b="1048576">
>
> {dce:typolinkUrl(parameter:'{download.datei}') ->
> v:format.trim(characters: '/') -> v:media.size()}
> </v:math.division>
> </v:math.round>
> </v:var.set>
>
>
>
> <li>
> <a
> href="{dce:typolinkUrl(parameter:'{download.datei}')}" target="_blank"
> title="{download.dateiTitel}">{download.name}</a>
> <div class="img-box">
> <img
> src="/fileadmin/templates/images/{download.typ}.png" alt="#" />
> <span>{downloadFileInMb ->
> v:format.trim()}MB</span>
> </div>
> </li>
>
> </f:for>
> </ul>
>
>
>
>
>
> Der Viewhelper zur Ausgabe des Dateityps wäre wohl
>
>
> Tag usage example
>
> <v:media.extension file="NULL">
> <!-- tag content - may be ignored! -->
> </v:media.extension>
>
> Inline usage example
>
> {v:media.extension(file: 'NULL')}
>
>
>
>
> Doch wie benutze ich jetzt das?
>
> {v:media.extension(file: '{download.datei}')}
>
> geht nicht.
>
>
> <v:media.extension file="{download.datei}">
> {download.datei}
> </v:media.extension>
>
>
> Gibt auch nichts aus.
>
>
> Hat mir jemand einen Tipp?
>
>
> Besten Dank
>
> Gruss
> Philipp
das erinnert mich an was [1].
das habe ich aber nicht per fluid gelöst, sondern nacktes Typoscript
in typoscript ist die Größenberechnung für Dateien nämlich sehr viel
einfacher:
für den f:cObject-Viewhelper:
lib.filesize = TEXT
lib.filesize {
current = 1
bytes = 1
bytes.labels = " Bytes| KB| MB| GB"
}
und die datei-Extension habe ich relativ hardcoded entfernt (ich hatte
ja auch nur Dateien mit genau dreistelligen Erweiterungen ausgewählt).
genauso könnte man sie natürlich auch extrahieren:
lib.fileExtension = TEXT
lib.fileExtension {
current = 1
orderedStdWrap {
# nur Dateiendung:
10.substring = -3,255
20.case = upper
}
}
natürlich könnte man das auch ganz dynamisch lösen.
dazu nimmt man ein split an Punkten und nimmt nur das letzte Element
(ungetestet)
lib.fileExtension = TEXT
lib.fileExtension {
current = 1
split {
token = .
cObjNum = 1 |*| 1 |*| 2
2 {
current = 1
case = upper
}
}
}
Falls man schon irgendwo eigene Viewhelper definiert hat ist allerdings
auch ein eigener Viewhelper nicht so kompliziert:
class Tx_MyVh_ViewHelpers_File_ExtensionViewHelper extends
Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
/**
* Returns name component of path without extension
*
* @param string $data given path
*
* @return string trailing name.
*/
public function render( $data = NULL ) {
if( $data === null ) {
$data = $this->renderChildren();
if( $data === null ) {
return '';
}
}
$path_parts = pathinfo( $data );
return $path_parts['extension'];
}
}
[1] http://pi-phi.de/343.html
bernd
--
http://www.pi-phi.de/cheatsheet.html
More information about the TYPO3-german
mailing list