PHP in Typo3 einbinden. [Gelöst]

  • 0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    04. 04. 2011, 21:39

    Hallo Leute,
    ich habe mir nun eine neue Homepage gebaut, mit Typo3 als CMS.

    Vorher hatte ich alles selbst geschrieben.
    Dort hatte ich einen Kalender, und diesen würd ich jetzt gerne auch in Typo3 mit einbinden.

    Leider krieg ich es nicht hin, PHP einzubinden, ich weiß es ist ein Sicherheitsrisiko da Moderatoren dann auch PHP einbinden können, aber ich bin der einzige Moderator.

    Ich hoffe ihr könnt mir helfen.



  • 0 x
    04. 04. 2011, 22:13

    Hi,

    hast du das schon gelesen:
    [url=http://typo3.org/documentation/document-library/core-documentation/doc_core_tsref/4.2.0/view/1/8/#id4292763]http://typo3.org/documentation/document-library/core-documentation/doc_core_tsref/4.2.0/view/1/8/#id4292763[/url]

  • igorshmigor igorshmig...
    Jedi-Ratsmitglied
    0 x
    941 Beiträge
    0 Hilfreiche Beiträge
    04. 04. 2011, 22:14

    Mit dem [url=http://typo3.org/documentation/document-library/core-documentation/doc_core_tsref/4.3.2/view/1/7/#id2526278]USER[/url]-Objekt kannst Du eigene PHP-Scripts einbinden (falls Dir die Erstellung einer Extension zu kompliziert erscheint).
    Früher gab es eine Extension, mit der man PHP direkt als Content-Element einfügen konnte. Diese gibt es nicht mehr, zumindest nicht mehr im TER.
    Dafür kannst Du aber die Extension tscobj nutzen. Sie erlaubt es Dir, TypoScript-Objekte als Content-Elemente einzufügen. Diese TypoScript-Objekte können natürlich auch USER und USER_INT enthalten, welche Deine PHP-Scripts aufrufen.

  • 0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    05. 04. 2011, 19:59

    [quote="igorshmigor"]
    Dafür kannst Du aber die Extension tscobj nutzen. Sie erlaubt es Dir, TypoScript-Objekte als Content-Elemente einzufügen. Diese TypoScript-Objekte können natürlich auch USER und USER_INT enthalten, welche Deine PHP-Scripts aufrufen.
    [/quote]

    Hab die extension jetzt mal installiert, wie bekomm ich jetzt mein PHP-Script was unter fileadmin/calender/calender.php nun included ?


  • 0 x
    05. 04. 2011, 20:42

    Hi,

    da du wahrscheinlich keine Lust zum lesen hast, hier mal ein Beispiel:

    1. page.20 = PHP_SCRIPT
    2. page.20{
    3. file = fileadmin/templates/scripts/test.php
    4. }

    1. <?php
    2. // test.php
    3. $content = 'Hello world';
    4. ?>

    Wichtig ist:
    Alle Inhalte müssen in $content geschrieben werden. Keine Ausgabe durch echo.

    Über eine Condition kannst du jetzt noch gezielt eine spezielle Seite ansprechen:

    1. [globalVar = TSFE:id = 10]
    2. page.20 = PHP_SCRIPT
    3. page.20{
    4. file = fileadmin/templates/scripts/test.php
    5. }
    6. [end]

    Beste Grüße
    tom :)

  • 0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    05. 04. 2011, 20:50

    Naja ich habs nur nicht so ganz verstanden,

    und verstehs immernoch nicht so ganz, tut mir leid beschäftige mich noch nicht so wirklich lange mit typo3

    1. page.20 = PHP_SCRIPT
    2. page.20{
    3. file = fileadmin/calender/today.php
    4. }

    so sieht mein typoscript aus,

    und

    1. <?php
    2.  
    3.  
    4. require_once 'events.php';
    5. require_once 'functions.php';
    6.  
    7. $year = intval(date('Y'));
    8. $month = intval(date('m'));
    9. $day = intval(date('d'));
    10. $time_today = mktime(0, 0, 0, $month, $day, $year);
    11.  
    12. $days = 0;
    13. $i = 0;
    14. $next_events = array();
    15.  
    16. while (TRUE) {
    17. if ($days >= 3) {
    18. break;
    19. }
    20.  
    21. $this_time = $time_today + ($i * (60 * 60 * 24));
    22. $this_events = checkEvents(NULL, NULL, NULL, $this_time);
    23.  
    24. if (!empty($this_events)) {
    25. $next_events[date('d.m.Y', $this_time)] = $this_events;
    26. $days++;
    27. }
    28.  
    29. $i++;
    30. }
    31.  
    32. if (!empty($next_events)) {
    33. $content = '<ul id="today">';
    34. foreach ($next_events as $date => $today) {
    35. foreach ($today as $babe) {
    36. $content = '<li>'.$date.' '.$babe.'</li>';
    37. }
    38. }
    39. $content = '</ul>';
    40. } else {
    41. $content = '<span id="calendar_no_events">Keine Einträge</span>';
    42. }

    das ist mein php script

    und wenn ich jetzt bei plugin einfügen ts object wähle und dann durchsuchen klicke, finde ich nicht das page.20 oder wie auch immer das heißen muss.

    http://cl.ly/5m9R

    so siehts bei mir aus.

    wenn ich page.20 eingebe kommt auf der seite dieser fehler: "TypoScript object not found (page.20)"


  • 0 x
    05. 04. 2011, 21:04

    Wenn du das über das "ts object" machen willst ändere das typoscript folgendermaßen ab:

    1. lib.phpscript = PHP_SCRIPT
    2. lib.phpscript{
    3. file = fileadmin/calender/today.php
    4. }

    Dann müsstest du eigentlich das lib.phpscript angezeigt bekommen

    Im PHP Script stimmt deine $content Ausgabe noch nicht.

    1. ...
    2. $content = '<ul id="today">';
    3. foreach ($next_events as $date => $today) {
    4. foreach ($today as $babe) {
    5. $content .= '<li>'.$date.' '.$babe.'</li>';
    6. }
    7. }
    8. $content .= '</ul>';
    9. ...

  • 0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    05. 04. 2011, 21:22

    Danke danke danke funktioniert super!

  • 3dxO 3dxO
    R2-D2
    0 x
    122 Beiträge
    1 Hilfreiche Beiträge
    13. 02. 2013, 14:20

    Hallo,

    weiß jemand wie man das mit dem "tollen" neuen Typo3 6.0 macht? Da wurde PHP_SCRIPT ja sinnvollerweise rausgenommen.

    hoffe hier kann mir jemand helfen.

    Es grüßt,
    Christian

  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    13. 02. 2013, 22:44

    Objektorientiert mit "includeLibs" und "USER_INT" ?
    Die Methode ist nicht neu und sollte eigentlich bevorzugt werden.

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