[Frage] Zugriff auf Content per cObjGetSingle() [Gelöst] TYPO3-Version: 6.1.1

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    27. 09. 2013, 17:50

    Hallo Zusammen,

    ich hätte da ein kleines Problem im Zusammenhang mit einem USER-Objekt, und da mit im TS Bereich bisher niemand geantwortet hat dachte
    ich, dass ich bei den Extension-Leuten hiermit vielleicht besser aufgehoben bin.

    Hier der Link zum letzten Thread:
    [url]http://www.typo3.net/forum/thematik/zeige/thema/116048/[/url]
    Dieser ist allerdings etwas anders, da ich ursprünglich davon ausging, dass es sich um einen Fehler im
    Zusammenhang mit FAL handelt.

    Folgendes Problem:

    Ich brauche währended des Renderns der Inhalte Zugriff auf den jeweiligen Bildpfad.

    Allerdings habe ich das Problem, dass ich auf die Inhalte aus dem content nicht zugreifen kann.

    PHP sieht für das debugging so aus:

    1. class user_sourcedb {
    2. public function register_img_ref($content,$conf) {
    3.  
    4. $conf = $conf['userFunc.'];
    5.  
    6. global $TSFE;
    7. $cObj = $TSFE->cObj;
    8.  
    9. $img = $cObj->cObjGetSingle($conf['cid'],$conf['cid.']);
    10.  
    11. var_dump($conf); // da sollte der Pfad
    12. var_dump($img); // da sollte der Pfad
    13.  
    14. return $content;
    15. }
    16. }

    Folgende Versuche habe ich gestartet:

    1. page.20 = CONTENT
    2. page.20 {
    3. table = tt_content
    4. where = colPos = 0
    5. }
    6. renderObj = COA_INT
    7. renderObj {
    8. 10 = USER_INT
    9. 10 {
    10. userFunc = user_sourcedb->register_img_ref
    11. cid = TEXT
    12. cid.field = image
    13. }
    14. }
    15. }
    16. }

    Erzeugt folgende Ausgabe:

    1. array(2) {
    2. ["cid"]=>
    3. string(4) "TEXT"
    4. ["cid."]=>
    5. array(1) {
    6. ["field"]=>
    7. string(5) "image"
    8. }
    9. }
    10. string(0) ""

    Verwende ich anstelle von "image" den Wert "title" für das Field wird wie erwartet der Seitentitel eingefügt. Beim Zugriff auf "uid" bekomme ich die Uid der Seite nicht die des content-elements oder des Bildes.

    Ursprünglich hielt ich das für ein Problem mit FAL bzw. dem Zugriff über das renderObj von FILES.
    Nachdem sich dieses Verhalten aber auch auf Objekte wie TEXT übertragen lies, vermutete ich dass tt_content eventuell anders
    an die Daten fasst, als wenn Inhalte selbst per CONTENT bzw. renderObj angezeigt werden, der Blick in die setup.txt von css_styled_content
    hat mich aber eines besseren belehrt.

    Kann mir hier jemand helfen? Handelt es sich hier um einen Bug, ist dieses Verhalten gewollt oder übersehe ich was??
    Ich bin auch schon auf Funktionen wie "cObj->Image()" bzw. "cObj->cImage()" gestoßen, allerdings blieben auch diese leer...

    Das Problem liest sich bisher sowohl in Typo 6.0.10 als auch 6.1.5 reproduzieren.

    God's in his heaven, all's right with the world

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2845 Beiträge
    105 Hilfreiche Beiträge
    29. 09. 2013, 19:44 - Lösung

    Bin leider (noch) nicht ganz so tief in FAL drin, aber genau diese Anforderung der einheitlichen, einmal eingepflegten Metadaten zu Bildern/Dateien sollte FAL doch auch erfüllen können.
    Evtl. ist auch ein Blick auf die media-Extension nicht verkehrt.

    Statt mit userfunc in TS rumzufummeln, würde ich eher versuchen, das File-Objekt innerhalb von FAl aufzubohren.

    Einen kleinen Einstieg in FAL-Zugriff per PHP habe ich mal zusammengeschrieben (Wenn es auch etwas komisch/kompliziert erscheint): [url]http://wissen.netzhaut.de/typo3/fal-dateien-verwenden/[/url]


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2845 Beiträge
    105 Hilfreiche Beiträge
    27. 09. 2013, 19:13

    Hallo.

    Darf ich mal in eine andere Richtung fragen: was ist Dein Ziel? Habe nämlich den Verdacht, dass Du Dich in eine Sackgasse manövriert hast, und die Lösung auf anderem Weg einfacher wäre.

    Brauchst Du den Bildpfad in PHP?

    Viele Grüße
    Julian

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    29. 09. 2013, 19:28

    Hallo Julian,

    das Ganze sieht so aus:
    Der Kunde hinterlegt in seinen Produktbildern diverse Informationen als Meta-Daten, teilweise direkt, teilweise nach IPTC-Standard. Natürlich werden nicht alle Informationen im Bildtag benötigt sondern auch teilweise als Zusatzinformation z.b. unter dem Bild.
    Um den Zugriff auf diese Daten zu vereinfachen und sicherzustellen, dass immer auf die Daten zugegriffen werden kann, unabhängig der Programmiersprache bzw. der Anwendung werden die Bilddaten bei der Synchronisation nach Online ausgelesen und in der DB hinterlegt, sinnigerweise indiziert nach Bildpfad, da dieser nach einer entsprechenden Logik aufgebaut ist.

    Der Kunde möchte also, dass die diversen Töchter / Niederlassungen diese Bilder auf ihren Subdomains/Unterseiten verwenden können ohne dass sie selbst Informationen wie title- oder alt-Attribute hinterlegen müssen bzw. dürfen sondern diese aus der entsprechenden DB kommen.

    Ich möchte nun also beim Rendern mit tt_content beim Zugriff auf ein Bild
    den Bildpfad an ein Skript übergeben, welches die Bildinformationen zum Bildpfad aus der DB ausliest um anschliessend title- und alt-Attribute des Bildes zu ersetzen ( das würde natürlich über eine seperate Methode funktionieren, die auf die ausgelesenen Werte der ersten zugreift ).

    Mein Problem ist nun wie gesagt, dass ich es nicht hinbekomme den Bildpfad direkt zu übergeben bzw. das IMG_RESOURCE oder auch nur das IMAGE Objekt, welches als Parameter übergeben wird, per cObjGetSingle aufzubauen um an diese Werte zu kommen.

    Ich bin auch alternativen Lösungsvorschlägen offen, möchte aber auf Extensions ( soweit wie möglich ) verzichten .

    God's in his heaven, all's right with the world

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2845 Beiträge
    105 Hilfreiche Beiträge
    29. 09. 2013, 19:44

    Bin leider (noch) nicht ganz so tief in FAL drin, aber genau diese Anforderung der einheitlichen, einmal eingepflegten Metadaten zu Bildern/Dateien sollte FAL doch auch erfüllen können.
    Evtl. ist auch ein Blick auf die media-Extension nicht verkehrt.

    Statt mit userfunc in TS rumzufummeln, würde ich eher versuchen, das File-Objekt innerhalb von FAl aufzubohren.

    Einen kleinen Einstieg in FAL-Zugriff per PHP habe ich mal zusammengeschrieben (Wenn es auch etwas komisch/kompliziert erscheint): [url]http://wissen.netzhaut.de/typo3/fal-dateien-verwenden/[/url]

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    30. 09. 2013, 00:07

    Danke für den Tipp!
    Ich habe mal kurz die verlinkte Seite überflogen, das werde ich mir mal genauer ansehen.

    Leider habe ich mich bisher nicht mit der Extensionprogrammierung auseinandergesetzt.
    Funktionieren entsprechende Zugriffe in den Namespace von Typo3 auf über USER-Objekte oder geht das nur mittels Extension weil sonst der Scope nicht passt oder der Context einen Zugriff nicht erlaubt?

    Ansonsten muss ich mich doch noch in die Extensionentwicklung einlesen.

    God's in his heaven, all's right with the world

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    2845 Beiträge
    105 Hilfreiche Beiträge
    30. 09. 2013, 08:43

    Ah, ok, das erklärt dann das für mich etwas seltsam anmutende Vorgehen über TS ;-)

    Ist sicherlich immer eine Frage der Betrachtung und der Rahmenbedingungen. Aber wenn Du PHP-Kenntnisse hast, dann ist meiner Meinung der Einstieg in Extensionprogrammierung den Aufwand wert. Da lässt sich einiges flexibler und eleganter lösen - auch ohne ganz groß/tief in Extbase & Co einsteigen zu müssen.

    Namespaces lassen sich aus beliebigen Dateien heraus nutzen. Voraussetzung ist lediglich, dass
    - der Namespace der Klasse (auf die zugegriffen wird) definiert ist
    - PHP in einer Version vorhanden ist, die Namespaces unterstützt (wenn TYPO3 6.x läuft, dann tuts das schon)

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    08. 10. 2013, 23:46

    Ich habe mir die Freiheit genommen den Beitrag mit dem verlinkten Artikel als Lösung zu markieren, da er mir zumindest in die richtige Richtung gezeigt hat.
    Aus Zeitmangel musste ich leider auf eine etwas umständliche Lösung zurückgreifen die vermutlich viel eleganter umsetzbar ist.
    Ohne konkret zu werden, hier die Theorie:

    Beim Laden der Seite werden mittels USER-Objekt die Bilder zu den jeweiligen CEs über das FAL Repository geladen und die entsprechenden Informationen wie Dateipfad usw. mittels FileReference und Konsorten ermittelt.

    Beim Laden eines Bilder mit tt_content wird das eigentliche tt_content.image.20 nur als Parameter an ein USER-Objekt übergeben.
    Dieses zieht das jeweils nächste Bild als den zuvor ermittelten Bildern der Seite, überschreibt die entsprechenden Werte aus tt_content die als Parameter übergeben werden und ruft dann seinerseits CssStyledContent->render_textpic mit den abgewandelten Parametern auf.

    God's in his heaven, all's right with the world

  • 1