Joomla Template funktioniert nicht mit neuesten PHP-Versionen

  • Hallo zusammen,


    ich habe ein Problem - und zwar funktioniert wohl mein selbstgeschriebenes Template nicht mit den aktuellen PHP Versionen nach 7.0

    Mit der PHP-Version 7.0 funktioniert alles einwandfrei, stelle ich eine neuere ein kommt folgende Fehlermeldung:


    0 - Using $this when not in object context

    Die Seite kann nicht angezeigt werden, weil:

    1. Sie ein veraltetes Lesezeichen aufgerufen haben.
    2. Sie über eine Suchmaschine einen veralteten Index dieser Webseite aufgerufen haben.
    3. Sie eine falsche Adresse aufgerufen haben.
    4. Sie keinen Zugriff auf diese Seite haben.
    5. Die angefragte Quelle wurde nicht gefunden!
    6. Während der Anfrage ist ein Fehler aufgetreten!

    Bitte eine der folgenden Seiten ausprobieren:

    • Startseite

    Bei Problemen ist der Administrator dieser Website zuständig.




    Kann mir jemand weiterhelfen, was ich jetzt am besten machen soll? Ich weiß ehrlich gesagt nicht,

    wo ich anfangen soll.


    Viele Grüße,

    Janine

  • Hallo,

    das habe ich jetzt gemacht und es kam folgende Fehlermeldung:


    Deprecated: Non-static method Joomla\CMS\Application\CMSApplication::getMenu() should not be called statically in /homepages/43/d653404665/htdocs/libraries/src/Application/SiteApplication.php on line 275



    Notice: Undefined variable: this in /homepages/43/d653404665/htdocs/libraries/src/Application/CMSApplication.php on line 369



    Notice: Only variables should be assigned by reference in /homepages/43/d653404665/htdocs/templates/template/index.php on line 39

  • Hab hier gerade eine Anleitung gepostet. Um welchen Fehleranzeige-Bereich es geht:

    Fehler finden durch detailliertere Fehlermeldung. Debug-Modus. Call stack.


    Wenn damit nicht mehr kommt, kannst auf gut Glück die genannte Datei:

    /templates/template/index.php

    mal zippen und als Dateianhang anhängen. PHP-Dateien gehen nicht direkt als Anhang.

    Vielleicht reicht aber auch ein Umbenennen nach index.txt der angehängten Datei. Keine Ahnung...

  • Hallo. Wenn ich das so mache wie in dem Beitrag beschrieben, kommt eine weiße Seite mit folgendem Text:


    Using $this when not in object context

    Wenn ich die error.php nicht umbenenne, kommt folgendes:


    Die Seite kann nicht angezeigt werden, weil:

    1. Sie ein veraltetes Lesezeichen aufgerufen haben.
    2. Sie über eine Suchmaschine einen veralteten Index dieser Webseite aufgerufen haben.
    3. Sie eine falsche Adresse aufgerufen haben.
    4. Sie keinen Zugriff auf diese Seite haben.
    5. Die angefragte Quelle wurde nicht gefunden!
    6. Während der Anfrage ist ein Fehler aufgetreten!

    Bitte eine der folgenden Seiten ausprobieren:

    • Startseite

    Bei Problemen ist der Administrator dieser Website zuständig.

    Using $this when not in object context

    /homepages/43/d653404665/htdocs/libraries/src/Application/CMSApplication.php:369

    Call stack
    # Function Location
    1 () JROOT/libraries/src/Application/CMSApplication.php:369
    2 Joomla\CMS\Application\CMSApplication::getMenu() JROOT/libraries/src/Application/SiteApplication.php:275
    3 Joomla\CMS\Application\SiteApplication::getMenu() JROOT/templates/ows-template/index.php:39
    4 require() JROOT/libraries/src/Document/HtmlDocument.php:658
    5 Joomla\CMS\Document\HtmlDocument->_loadTemplate() JROOT/libraries/src/Document/HtmlDocument.php:720
    6 Joomla\CMS\Document\HtmlDocument->_fetchTemplate() JROOT/libraries/src/Document/HtmlDocument.php:535
    7 Joomla\CMS\Document\HtmlDocument->parse() JROOT/libraries/src/Application/CMSApplication.php:1027
    8 Joomla\CMS\Application\CMSApplication->render() JROOT/libraries/src/Application/SiteApplication.php:780
    9 Joomla\CMS\Application\SiteApplication->render() JROOT/libraries/src/Application/CMSApplication.php:201
    10 Joomla\CMS\Application\CMSApplication->execute() JROOT/index.php:49
  • Hallo Zusammen

    Ich habe ein ähnliches Problem.

    D. h. die Umstellung von PHP 5.6 auf 7.x (konkret 7.2) funktioniert nicht, gleiches Fehlerbild.

    Evtl. gibt es auch für mich eine ähnliche Lösung?

    Hier mal das Log bzw. Die Fehleranalyse

    Da ich damit wenig bis nichts anfangen kann wäre ich euch dankbar wenn ihr mir hierzu ein paar Tipps bzw. eine Hilfestellung geben könnt.

    Danke schon mal im Voraus :)

  • Hier dann mal das gesamte templates.php:


    <?if( $sg == 'banner' ):?>

    <?php if (JRequest::getVar('view') == 'frontpage'):?>

    <!-- SIDE BEGIN --><!-- SIDE END -->

    <?php endif?>

    <?else:?>

    <?php echo $app->getCfg('sitename'); ?>, Powered by <a href="http://joomla.org/" class="sgfooter" target="_blank">Joomla!</a>

    <?php $menu = &JSite::getMenu();

    $sgfrontpage = /*SGFRONTPAGE BEGIN*/0/*SGFRONTPAGE END*/;

    if ($menu->getActive() == $menu->getDefault() || $sgfrontpage):?>

    <!-- FOOTER BEGIN --><a href="http://www.siteground.com/joomla-templates.htm" target="_blank">Joomla template by SiteGround</a><!-- FOOTER END -->

    <?php endif ?>

    <?endif;?>



    Wenn ich das richtig verstanden habe teste ich dann einfach mal den neuen Code bzw. die Ergänzung in Zeile 7?

  • Das war es wohl tatsächlich. Vermutlich relativ einfach in der Anpassung wenn man weiß wo und sich da bzw. mit PHP auskennt.

    Aktuell sieht es so aus als ob alles (wieder) funktioniert und ich das Template dann auch unter 7.2 betreiben kann.

    KLASSE & Vielen Dank für eure Hilfe. :thumbup::thumbup:beer

  • Hallo,


    ich habe auch das Problem nach Update bei Strato auf PHP 7.2. Fehlermeldung im Screenshot.
    Joomla auf 3.9.3 aktualisiert, alle Erweiterungen aktualisiert


    Den oben aufgeführten Code kann ich so in meiner index.php des Templates nicht finden. Dort steht zu getMenu()


    $menu = $app->getMenu();


    Muss ich diese Zeile ersetzten? Wenn ja, habt ihr einen Tipp, durch was?

  • Hallo,

    ich habe ein Problem nach Update bei DomainFactory auf 7.2 PHP (Joomla version, 3.9.3.)
    Aktuelle Probleme und Fehler:


    Warning: count(): Parameter must be an array or an object that implements Countable in /plugins/system/helix3/core/classes/menu.php on line 258



    line 258:

    257 // only module exist

    258 if (count($item->params->get('menulayout')) == 1) {

    259 $mega_json = $item->params->get('menulayout');

    260 $mega = json_decode($mega_json);

    261 $layout = $mega->layout;

    262

    263 $layout = $layout[0];

    264 $col = $layout->attr[0];

    265 $mod_ids = ($col->moduleId)? explode(',', $col->moduleId):array();

    266

    267 if (count($mod_ids))

    268 {

    269 foreach ($mod_ids as $mod_id)

    270 {

    271 $this->menu .= $this->load_module($mod_id);

    272 }

    273 }

    274 }

    275

    276 $this->menu .= '</div>';

    277 $this->menu .= '</div>';

    278 }


    Hat jemand von euch einen Hinweis, wie ich das Problem lösen kann?! Würde mich sehr freuen.


    Viele Grüße