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.403
    Danke erhalten:
    707
    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:
    2.884
    Danke erhalten:
    617
    Danke vergeben:
    113
    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.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    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.403
    Danke erhalten:
    707
    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.403
    Danke erhalten:
    707
    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.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    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:
    2.884
    Danke erhalten:
    617
    Danke vergeben:
    113
    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:
    2.884
    Danke erhalten:
    617
    Danke vergeben:
    113
    Wie eine Überladung funktioniert weiß ich. Aber Du hast ja das Problem erkannt. :)