[Frage] IMG_RESOURCE in userFunc verwenden TYPO3-Version: 6.2.31

  • confuseddev confusedd...
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    02. 10. 2017, 11:24

    Ich habe aktuell die Aufgabe, eine Webseite von Typo3 4.6 auf 6.2 zu heben. Eine Migration hat soweit auch geklappt, nur habe ich Probleme mit der Portierung einer custom PHP-Funktion, die voher über das mittlerweile nicht mehr verfügbare PHP_Script eingebunden war.

    Das Ziel der Funktion ist im Grunde genommen die Ausgabe eines image-srcsets für ein Bild aus einem Templavoila FCE.

    Weil PHP-Script ja nun nicht mehr existiert, habe ich versucht das ganze auf eine userFunc mit eigener PHP Klasse umzubauen.
    Die nötigen Argumente (Auflösung, bildpfad) werden auch alle korrekt an die Klasse/Methode übergeben. Nur IMG_RESOURCE macht scheinbar überhaupt nichts.

    -----------------------

    So sah das ganze in Typo3 4.6 aus und hat funktioniert:
    (Einbindung in ein Theme über PHP_SCRIPT)

    [code]

    $src = $this->cObjGetSingle('TEXT',$conf['src.']);
    .... //Übergabe der ganzen argumente

    $content .= "<img";
    if(is_array($resolutions)) foreach($resolutions as $breakpoint=>$resolution) {
    $imgTSConfig = array();
    $imgTSConfig['file'] ='uploads/tx_templavoila/'.$src;
    $imgTSConfig['file.']['maxW'] = $resolution;
    $imgTSConfig['file.']['maxH'] = $resolution;
    $image = $this->cObj->IMG_RESOURCE($imgTSConfig); //$image ist der Pfad zu einem Bild!
    ...
    [/code]

    -----------------------

    Das ganze in 6.2:
    (Einbindung via userFunc)

    [code]

    function responsiveImage($content = '', $conf = array())
    {
    $local_cObj = $this->cObj; // cObject
    $conf = $conf['userFunc.']; // ts config

    $src = $local_cObj->cObjGetSingle('TEXT', $conf['src.']);
    .... //Übergabe der ganzen argumente

    $content = "<img";
    if (is_array($resolutions)) foreach ($resolutions as $breakpoint => $resolution) {
    $imgTSConfig = array();
    $imgTSConfig['file'] = 'uploads/tx_templavoila/' . $src;
    $imgTSConfig['file.']['maxW'] = $resolution;
    $imgTSConfig['file.']['maxH'] = $resolution;
    $image = $local_cObj->IMG_RESOURCE($imgTSConfig); //HIER GEHT WAS SCHIEF! - $image ist immer leer
    ...

    [/code]

    -----------------------

    $imgTSConfig ist mit den richtigen Daten befüllt, daran dürfte es also nicht liegen. Ich vermute ja, dass ich IMG_RESOURCE irgendwie anders aufrufen muss. Aber wie? Da das ganze leider ohne Fehlermeldung fehlschlägt hab ich echt keinen Schimmer, was ich hier anders machen muss.


  • 1
  • freeatweb freeatweb
    Jedi-Meister
    0 x
    267 Beiträge
    4 Hilfreiche Beiträge
    06. 10. 2017, 11:20

    Hallo,

    versuch mal, cObject anders zu referenzieren.

    z.B.:
    $local_cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tslib_cObj');

    Lg

  • confuseddev confusedd...
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    09. 10. 2017, 11:21

    Wenn ich dein Beispiel verwende, enthält $src nicht mehr den Namen des Bildes (kommt mir auch logisch vor, ich nehme mal an die Argumente werden dann nicht mehr richtig übergeben).

    Hab auch mal probiert, das Obj aus deinem Code nur für die IMG_RESOURCE zu verwenden (kA ob das sinnvoll ist), das geht ebenfalls nicht.

    Mittlerweile glaube ich fast, dass das am FAL liegt, der ist ja beim Umstieg 4.6->6.2 quasi komplett neu. Sollte das der Fall sein, muss ich mir wohl mal anschauen ob ich die ganzen TV-Templates irgendwie umbauen muss.

  • freeatweb freeatweb
    Jedi-Meister
    0 x
    267 Beiträge
    4 Hilfreiche Beiträge
    09. 10. 2017, 12:54

    kann natürlich auch an den TV-Templates liegen.

    Ich würde dir empfehlen, von TV auf FLUID umzusteigen.

  • confuseddev confusedd...
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    24. 10. 2017, 16:26

    Ich wollte mal der Vollständigkeit halber mal noch die "Lösung" des Problems posten.

    Ich hatte ImageMagick in meiner lokalen Installation nicht korrekt eingerichtet. Jup.

    In Kombination mit der Zeile von freeatweb, die ich als

    $imgresourcehelper = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tslib_cObj');

    verwende, geht das ganze jetzt wie erwartet.

    Also quasi so:

    [code]

    $local_cObj = $this->cObj; // cObject
    $imgresourcehelper = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tslib_cObj');
    $conf = $conf['userFunc.']; // ts config

    $src = $local_cObj->cObjGetSingle('TEXT', $conf['src.']);
    //... Übergabe der ganzen parameter

    $content = "<img";
    if (is_array($resolutions)) foreach ($resolutions as $breakpoint => $resolution) {
    $imgTSConfig = array();
    $imgTSConfig['file'] = 'uploads/tx_templavoila/' . $src;
    $imgTSConfig['file.']['maxW'] = $resolution;
    $imgTSConfig['file.']['maxH'] = $resolution;
    $image = $imgresourcehelper->IMG_RESOURCE($imgTSConfig);

    //usw. usf.
    [/code]

  • 1