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
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german