K2 bringt Fehlermeldung seit Joomla-Update

  • Hallo, seit ich Joomla upgegradet habe, funktioniert mein Blog über K2 nicht mehr.

    1. Das Blättern in den Blogbeiträgen ist nicht mehr möglich ( es sind ca 200 Beiträge, die über mehrere Seiten liefen)

    2. Unter jedem Blogbeitrag steht im Frontend "Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/web28284683/html/evelinrosenfeld/templates/cooperline/html/com_k2/default/item.php on line 251"


    siehe zum Beispiel: http://evelinrosenfeld.de/inde…blog/item/452-gratulation


    Gibt es einen Weg, das zu reparieren, OHNE IN DER DATENBANK rumzuforkeln ?

  • Ich hätte vermutet, dass du nicht die aktuelle K2-Version hast, da so etwas in der Vergangenheit gefixt wurde.

    Ich meine aber, dass du bereits aktuell bist. Übrprüfe das mal!


    EDIT: 2.10.2 ist aktuell.


    Ansonsten: Welche PHP-Version läuft bei dir? (Kannst du im Backend unter Systeminformationen rausfinden)


    Kannst natürlich auch "Fehler berichten" in der Joomla-Konfiguration auf "keine" stellen! Dann wird zumindest die Warnung nicht mehr angezeigt.

  • Woher kommt denn das Template? Ist das selbstgebaut? Unter dem Namen habe ich nichts gefunden.

    Der Fehler liegt in einem Override des Templates für K2. Ich vermute mal, dass das in K2 schon behoben wurde, das Template Override aber nicht angepasst wurde. Vergleich die Datei aus der Fehlermeldung mal mit der entsprechenden Datei aus "components/com_k2/views/default/item.php" und schau nach, wie die entsprechende Zeile dort aussieht.

  • Harmageddon Ein Verzeichnis omponents/com_k2/views/default/item.php existiert nicht.
    Folge ich dem Pfad der Fehlermeldung, so finde ich in Zeile 251




    <?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): ?>

    Die Warnmeldung besagt; count(): Parameter must be an array or an object that implements Countable

    Heißt das, ich muss ändern auf

    <?php if($this->item->params->get('itemExtraFields') && count(-->)): ?>

    ???
  • Du musst deine Datei mit dieser hier vergleichen (da hat sich oben ein kleiner Fehler eingeschlichen)


    /components/com_k2/templates/default/item.php


    Da steht entsprechende Zeile wohl in Zeile 244, was ich so auf die Schnelle erkennen konnte.

    PHP
    1. <?php if($this->item->params->get('itemExtraFields') && isset($this->item->extra_fields) && count($this->item->extra_fields)): ?>


    Womöglich hat sich aber noch mehr geändert. Vergleiche also beide Dateien komplett!

    Beachte aber die absichtlich durchgeführten Änderungen, eben das Override! Nicht dass du das auch änderst.

  • Welche Dateien soll ich vergleichen ?
    Es gibt 1 Datei (/components/com_k2/templates/default/item.php)
    und 1 Fehlermeldung
    /var/www/web28284683/html/evelinrosenfeld/templates/cooperline/html/com_k2/default/item.php on line 251"


    In Zeile 251 findet sich

    <?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): ?>


    Die Warnmeldung sagt
    count(): Parameter must be an array or an object that implements Countable


    und ich weiß nicht, was ich ersetzen / in die KLammer schreiben soll.




  • Der Unterschied zwischen deiner Zeile JoomlaWunder


    <?php if($this->item->params->get('itemExtraFields') && isset($this->item->extra_fields) && count($this->item->extra_fields)): ?>


    und der Zeile, auf die der Fehler verweist


    ist der Zusatz && isset($this->item->extra_fields)
    mitten im Code.



    Ich habe deine Zeile so eingefügt - und es scheint zu funktionieren.

    JoomlaWunder - Du hast deinen Namen verdient :-)
    Danke

    <?php if($this->item->params->get('itemExtraFields') && count($this->item->extra_fields)): ?>
  • Grundsätzlich:

    Wenn eine Erweiterung aktualisiert wird, dann gibt es Änderungen in den Originaldateien. Sofern man davon Overrides erstellt hat (welche dann anstatt der Originaldateien verwendet werden), sind diese Änderungen manuell in die Override-Dateien zu übernehmen. Nur so kann sichergestellt werden, dass alles weiterhin funktioniert. Die Override-Dateien werden bei einer Aktualisierung ja nicht automatisch mitaktualisiert.

    D.h. du müsstest alle Override-Dateien von K2 im /html-Ordner überprüfen, also mit den originalen Dateien vergleichen und eventuell Änderungen/Korrekturen/Ergänzungen, die durch das Update "entstanden" sind, händisch übernehmen. Das ist halt der Nachteil von Overrides.

    Dann wird es vermutlich funktionieren.

    Das kannst du aber vorher testen:


    Mach zunächst mal das, was in #13 vorgeschlagen wurde (testweise Verzeichnisumbenennung). Dann werden statt der Overrides die Originaldateien verwendet. Dann sollte es zumindest funktionieren, auch wenn die Anpassungen (Overrides) nicht mehr vorhanden sind. Aber so kannst du weitere Probleme ausschließen.

  • Sorry ... ich kapier´s nicht.
    JoomlaWunder
    Nicht, wo ich die overrides finde.

    Ich hatte die Zeile <?php if($this->item->params->get('itemExtraFields') && isset($this->item->extra_fields) && count($this->item->extra_fields)): ?> jetzt übernommen in die Datei

    (/components/com_k2/templates/default/item.php), Zeile 251.

    Das half, den Fehlercode zu eliminieren, hat aber das Blättern in den Beiträgen nicht wieder aktiviert.


    @j!-n - die Umbenennung des Verzeichnisses führt zu nicht mehr als dem Crash des Layouts .. :-|


    ... was, wenn ich das Plugin einfach lösche und neu installiere ? Gehen dann alle Beiträge verloren ?

  • Dieses ist die Originaldatei:

    .../components/com_k2/templates/default/item.php


    Dieses ist deine Override-Datei:

    .../templates/cooperline/html/com_k2/default/item.php


    Diese müssen sauber verglichen werden. Außer der bisher erwähnten Zeile, müssen sehr wahrscheinlich weitere Änderungen erfolgen.

    Sollte es weitere K2-Override-Dateien im html-Verzeichnis deines Templates geben, müssten auch diese mit den Originaldateien verglichen werden. Dazu bedarf es in der Tat einiger Kenntnisse. Auf der einen Seite musst du eventuelle Aktualisierungen übernehmen, auf der anderen Seite sollen die absichtlichen Anpassungen nicht entfernt werden.


    Weißt du noch, welche K2-Version aktuell war, als die Overrides erstellt wurden. Ein Vergleich könnte hilfreich sein, um die Anpassungen überhaupt erst einmal erkennen zu können. Diese dann notieren!


    Das Ganze lässt sich aus der Ferne aber schwer beurteilen. Ein Neuinstallieren solltest du bleiben lassen. Das würde auch nichts ändern.

    Die Overrides müssen angepasst werden. Stelle nicht auf eine veraltete K2-Version zurück!

    Wenn es ohne die Overrides das Layout zerschiesst, wäre es leider auch keine Option, auf die Overrides zu verzichten.


    Caches (Joomla/Browser) wurden regelmäßig geleert oder zum Testen deaktiviert? Eventuelle Optimierungstools auch mal deaktiviert?