gelöst Overload für "SpecialsMainContentView" blockt den gesamten Aufruf

Thema wurde von Kai Stejuhn, 5. März 2017 erstellt.

  1. Kai Stejuhn
    Kai Stejuhn Beta-Held
    Registriert seit:
    26. September 2014
    Beiträge:
    1.454
    Danke erhalten:
    743
    Danke vergeben:
    92
    Ich möchte die Funktion "build_sql_query()" aus der Klasse "SpecialsMainContentView" überladen, um dort einige Änderungen einzufügen.

    Sobald ich aber im Verzeichnis "GXUserComponents/overloads" ein Unterverzeichnis "SpecialsMainContentView" anlege und dort eine Datei mit der Klassen Definition erstelle, wird der Aufruf des gesamten Shops geblockt und im Protokoll wird ein 500er Fehler angezeigt.

    Die genaue Fehlermeldung lautet:
    Der Code für die Klasse lautet:
    PHP:
    <?php

    class OvloSpecialsMainContentView extends OvloSpecialsMainContentView_parent
    {

        protected function 
    to_build_sql_query()
        {
            
    $t_fsk_lock '';
            if(
    $this->customers_fsk18_display == 0)
            {
                
    $t_fsk_lock ' AND p.products_fsk18 != 1 ';
            }

            
    $t_group_check '';
            if(
    GROUP_CHECK == 'true')
            {
                
    $t_group_check ' AND p.group_permission_' $this->customers_status_id ' = 1 ';
            }

            
    $t_specials_query "SELECT
                                    p.products_id
                                FROM
                                    (SELECT
                                        s.products_id
                                    FROM
                                        " 
    TABLE_SPECIALS " s
                                    WHERE
                                        s.status = '1'
                                    LIMIT " 
    . (int)MAX_RANDOM_SELECT_SPECIALS ") AS s,
                                    " 
    TABLE_PRODUCTS " p
                                WHERE
                                    p.products_id = s.products_id
                                    AND p.products_status = '1'
                                    " 
    $t_group_check "
                                    " 
    $t_fsk_lock "
                                ORDER BY
                                    RAND()
                                LIMIT " 
    $this->specials_count
            
    ;

            return 
    $t_specials_query;
        }
    }
    Auf der Line 22 steht die Klassendefinition, ich habe die Kommentare oben aus dem Code rausgenommen.

    Bin ich Heute zu blöd oder gibt es etwas was ich nicht bedacht habe?

    Es würde mich freuen wenn jemand eine Idee hat und mir weiterhelfen kann.

    Viele Grüße
    Kai
     
  2. Developer
    Developer Erfahrener Benutzer
    Registriert seit:
    7. November 2012
    Beiträge:
    3.149
    Danke erhalten:
    718
    Danke vergeben:
    127
    Hallo Kai,

    zwei Dinge würden mich interessieren ohne genau auf die Änderungen einzugehen:

    1. Was ist mit der KS_SpecialsMainContentView.inc.php? Wofür?
    2. Und warum OvloSpecialsMainContentView_parent?

    Viele Grüße
     
  3. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.657
    Danke erhalten:
    11.371
    Danke vergeben:
    1.616
    zu 1. kann nur Kai antworten.
    zu 2. steht das so in der Anleitung von Gambio:
    (Link nur für registrierte Nutzer sichtbar.)
     
  4. Kai Stejuhn
    Kai Stejuhn Beta-Held
    Registriert seit:
    26. September 2014
    Beiträge:
    1.454
    Danke erhalten:
    743
    Danke vergeben:
    92
    Zu 1: Das ist die Datei, in der die Klassendefinition und der Sourcecode für die angepasste Funktion enthalten ist. Laut Gambio Developer Tutorial kann man einen beliebigen Dateinamen in dem Overload-Verzeichnis wählen.
    Zu 2: Auch das habe ich aus dem Tutorial, dort wir angegeben:
    also in meinem Fall von "OvloSpecialsMainContentView_parent".
     
  5. Kai Stejuhn
    Kai Stejuhn Beta-Held
    Registriert seit:
    26. September 2014
    Beiträge:
    1.454
    Danke erhalten:
    743
    Danke vergeben:
    92
    In dem Augenblick wo ich die obige Antwort geschrieben habe, fiel mir auf, dass evtl der Klassenname und der Dateiname übereinstimmen sollten, denn dann klappt es.

    Also, Fall gelöst.
     
  6. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.657
    Danke erhalten:
    11.371
    Danke vergeben:
    1.616
    Hallo Kai,
    wenn der Name der Datei
    KS_SpecialsMainContentView.inc.php
    ist, muss das acuh in der Datei so stehen.

    Statt
    class OvloSpecialsMainContentView extends OvloSpecialsMainContentView_parent
    müsste da
    class KS_SpecialsMainContentView extends KS_SpecialsMainContentView_parent
    stehen, oder Du müsstest die Datei umbenennen

    da war ich zu langsam :D
     
  7. Developer
    Developer Erfahrener Benutzer
    Registriert seit:
    7. November 2012
    Beiträge:
    3.149
    Danke erhalten:
    718
    Danke vergeben:
    127
    In Kai's Fall, stimmt das nicht so ganz, Barbara.

    Kai hat da etwas durcheinander gebracht, aber den Fehler selber schon korrigiert! :)
     
  8. Developer
    Developer Erfahrener Benutzer
    Registriert seit:
    7. November 2012
    Beiträge:
    3.149
    Danke erhalten:
    718
    Danke vergeben:
    127
    Wie eine Überladung funktioniert weiß ich. Aber Du hast ja das Problem erkannt. :)