Fatal error: Class 'cse_extendedarticleinfo_parent' not found in .../.../modules/cse/cse_extendedarticleinfo/info.php on line 8

Hallo zusammen,

ich versuche die longdescription der Artikeldetails mit Infos zu erweitern.
Ich schrieb dazu ein Modul und band es in der Administration des Oxid Shops (nicht produktiv - Version 4.8.7) erfolgreich ein.

Ich habe in meiner PHP Datei zunächst nur Dummy Text drin und keine wirkliche Funktion, um das Modul auf grundästzliche Funktion prüfen zu können.

Nunja, leider ist das nicht gegeben, denn ich erhalte obigen Fehler:

Fatal error: Class 'cse_extendedarticleinfo_parent' not found in .../.../modules/cse/cse_extendedarticleinfo/info.php on line 8

Hier ist der Code der info.php:


<?php
class cse_extendedarticleinfo extends cse_extendedarticleinfo_parent
{
    public function getArtAttributeNames()
    {
        return "TheOutput";
    }
}

Und hier die metadata.php:

$aModule = array(
    'id'           	=> 'cse_extendedarticleinfo',
    'title'        	=> 'Extended Article Info',
    'description'  	=> 'Module to extend the longdescription display in article details',
    'thumbnail'    	=> '',
    'version'      	=> '1.0',
    'author'       	=> 'WulleBulle',
    'extend'       	=> array(
        'oxarticle' => 'cse/cse_extendedarticleinfo/info'
    ),
    'files' 		=> array(
        'cseInfo'	=> 'cse/cse_extendedarticleinfo/info.php'
    ),
    'templates'   => array(
        'extendedarticleinfo.tpl' => '/views/tpl/extendedarticleinfo.tpl',
    ),
    'blocks'      => array(
        array(
            'template' => 'tabs.tpl',
            'block'    => 'details_tabs_longdescription',
            'file'     => '/views/tpl/extendedarticleinfo.tpl'
        )
    )
);

Eingebunden im Template tabs.tpl im Block “details_tabs_longdescription”:

[{ include file="views/tpl/extendedarticleinfo.tpl" }]

Die extendedarticleinfo.tpl Datei sieht zum Testen so aus so aus:


extendediarticleinfo.tpl - TEST

Wo könnte ich zu suchen anfangen?
Vermisst Ihr Infos dazu? Bitte einfach melden.

Vielen Dank im Voraus.
Der Wulle

HA…Fehler gefunden. Die PHP Core Datei muss dem Modulnamen entsprechen, weil der Autoloader davon ausgeht, dass sie so heißt.

Nun bekomme ich nur noch den Fehler, dass die TPL Datei nicht gelesen werden kann.

Warning: Smarty error: unable to read resource: "views/tpl/extendedarticleinfo.tpl" in .../.../core/smarty/Smarty.class.php on line 1093 

Die Datei liegt im Modulverzeichnis unter “views/tpl/extendedarticleinfo.tpl”.

Ich suche weiter. Vielleicht weiß in der Zwischenzeit jemand Rat?

Mit der richtigen metadata.php Einstellung funktioniert das nun auch.

Nun ist es so, dass ich in der PHP Datei eine Funktion habe, die eine Datenbankabfrage generiert. Diese soll Attribute zum aufgerufenen Artikel liefern.

In der TPL Datei sieht das so aus

[{foreach from=$cse_extendedarticleinfo->getArtAttributeNames($sChosenArt->oxid) item=oAttr name=attribute}]
	[{ $oAttr->sxtcpp_picture }]
[{/foreach}]

Die PHP Datei cse_extendedarticleinfo.php sieht so aus:


<?php
/*
 * Get and return article attribute imagenames (with or without values)
 */
class cse_extendedarticleinfo extends cse_extendedarticleinfo_parent
{
    public function getArtAttributeNames()
    {
        $sQuery = "SELECT sxtcpp_picture FROM oxarticle a JOIN (oxobject2attribute o2att JOIN (oxattributes att JOIN sxtcproductproperties sxtcpp ON sxtcpp.sxtcpp_oxidid = att.oxid) ON o2att.oxattrid = att.oxid) ON o2att.oxobjectid = a.oxid WHERE 	a.oxid = "$sChosenArt->oxid" ORDER BY OXSORT";
		$sSql=oxDb::getDb()->Execute($sQuery);
        return $sQuery;
    }
}

Fehler im Shop:

Fatal error: Call to a member function getArtAttributeNames() on a non-object in ......../tmp/smarty/0871ab6b24ec54b1edd34ea1ed24a4bf^%%40^40E^40E8E357%%cse_extendedarticleinfo.tpl.php on line 3 

Bin ratlos :slight_smile:

info.php: class cse_extendedarticleinfo

Klassenname und Dateiname müssen identisch sein.

[{foreach from=$cse_extendedarticleinfo->

$cse_extendedarticleinfo ist nicht definiert.

$sSql=oxDb::getDb()->Execute($sQuery);
return $sQuery;
:confused:
Schleife fehlt, Ergebnisse in ein array schreiben, array zurückgeben und nicht das SQL.

WHERE a.oxid = “$sChosenArt->oxid”
:confused:
Wert an die Funktion übergeben, den übergebenen Wert mit korrekter Stringverkettung in das SQL einfügen.

Nochmal PHP Grundlagen anschauen!

Hallo leofonic,

und Danke für die Tipps. Nun, ich dachte, das hier ist das Newbie Forum, wo auch mal mit Lösungen geholfen wird. Hinweise darauf, Anleitungen etc. zu lesen, sind der Sache nicht dienlich.

Ich komme nicht aus der PHP Ecke, daher bin ich, zu meiner Schande, da etwas blank, gelobe aber Besserung, schon alleine dadurch, dass ich Interesse zeige. Da es aber im explizit vorliegenden Fall um eine angestrebte Lösung geht, bitte ich um etwas genauere Ansätze als “PHP Grundlagen anschauen”.

Vielen lieben Dank.