Nach Modulaufruf in Template fehlerhafte Anzeige

Hallo!

Ich habe bereits das 4. Tutorial zur Modulentwicklung durchgemacht und laufe immer auf den gleichen Fehler. Sobald ich ein eigenes Modul in das Template einbauen möchte, wird die gesamte Anzeige total verhunzt oder es passiert einfach garnichts mehr.
Beispiel:
Ich habe folgendes Tutorial gemacht: http://www.udo-telaar.de/. Modulaktivierung und alles funktioniert wunderbar. Wenn ich jetzt allerdings den Aufruf in [I]/out/azure/tpl/page/details/inc/productmain.tpl[/I] schreibe, welcher bloß eine If-Abfrage und ein span-Tag beinhaltet, läd er die Produktseite nicht mehr und bleibt auf der Startseite. Selbst nach dem Tutorial auf der Oxid Seite (oxid tutorial) funktioniert es bei mir nicht. Wenn ich dieses Tutorial mache, wird mir die Produktseite angezeigt, jedoch ohne CSS, der <header> ist komplett leer, alles HTML fehlt. Nur das HTML Stückchen vom Produkt selbst ist zu sehen. Das Tutorial ist zwar für 4.0.0 aber so große Unterschiede gibt es doch da nicht?!

Woran kann das liegen?
Ich habe die neueste Version (4.6.0) vom eShop. Aktuellen Apache und MySQL auf Ubuntu 12.04 laufen.

Viele Grüße,
Patrick

steht dazu etwas im exception-log? (Rootlevel Ordner /log)

Ja, tatsächlich. Im Log steht folgendes:

oxSystemComponentException-oxException (time: 2012-05-18 09:33:11): [0]: Function ‘getPriceSaving’ does not exist or is not accessible! (oxArticle)

Kann das an fehlerhaftem chmod liegen?
Über die “extendedArticleRating()” Funktion aus dem Tutorial von OXID selbst steht leider nichts im Log. Dort habe ich weiterhin den Fehler bei einem Produktaufruf, dass die Seite folgendermaßen aussieht:

Edit: Aktivierung im Adminbereich ist folgendermaßen: oxArticle=>paddyPriceSaving/paddyPriceSaving (Ordner/Klasse) ist doch korrekt, oder?

Im Adminbereich wird das eine Modul auch nach jeder Seitenaktualisierung deaktiviert. Dort steht:

Es gibt registrierte Erweiterungen im eShop, deren Verzeichnis nicht vorhanden ist.

Möchten Sie alle Modulinformationen einschließlich Konfigurationseinstellungen und Blockinformationen für Templates löschen?

oxArticle=&gt;mymodule/extendedArticleRating

Aber die Verzeichnisse sind alle vorhanden in /modules

/modules/mymodule/extendedarticlerating.php
Dort ist folgende Klasse vorhanden:

<?php

class extendedArticleRating extends extendedArticleRating_parent {
	
	public function getArticleSchoolMark(){	
		if($this->oxarticles__oxratingcnt->value > 0){
		//if($this->oxarticle->getPrice() > 150){
			return "<span>Test</span>";
		}
		else {
			return "<span>NULL</span>";
		}
	}
}

vielleicht findest Du hier noch brauchbare Infos, dieses Modul-Handling ist ja erst ganz neu seit der 4.6


Yep, das schien es zu sein. Mit der metadata.php in den einzelnen Modul-directories klappt es jetzt. Jedenfalls bei dem Einen! Vielen Dank :slight_smile:

Jetzt habe ich allerdings doch noch einen Fehler. Ich habe 2 Module aktiviert. Eines jedoch wird bei jeder Seitenaktualisierung wieder deaktiviert.
Und zwar will ich Suchbegriffe in lowercase umwandeln und habe bisher Folgendes gemacht:

[I]/modules/lowercasesearch/recommlistextend.php[/I] angelegt
metadata.php:


<?php
$sMetadataVersion = '1.0';
$aModule = array(
	'id'           	=> 	'lowercasesearch',
	'title'        	=> 	'Suchwoerter Lowercase',
	'description'  	=> 	'Wandelt den Suchbegriff vor der Suche in Kleinbuchstaben um.',
	'version'      	=> 	'1.0',
	'author'       	=> 	'Patrick',
	'email'			=>	'[email protected]',
	'url'			=>	'http://www.blabla.de',
	'extend'       	=> array(
		'oxrecommlist'	=>	'lowercasesearch/recommListExtend',
	)
);

recommlistextend.php


<?php
class recommListExtend extends recommListExtend_parent {
    /*
     * Überschreibt die Funktion aus core/oxrecommlist.php
     * Setzt Suchbegriff in Kleinbuchstaben
     * 
     */
}

In der .php Datei steht zwar noch nichts drin, sollte aber kein Problem sein. Vorheriges Modul bleibt komischerweise aktiviert obwohl ich die gleiche Vorgehensweise hatte:

[I]/modules/paddyPriceSaving/paddyPriceSaving.php[/I] angelegt

metadata.php:


<?php
$sMetadataVersion = '1.0';
$aModule = array(
		'id'           => 'paddyPriceSaving',
		'title'        => 'Price Saving',
		'description'  => 'Difference between Prices',
		'version'      => '0.9',
		'author'       => 'Patrick',
		'extend'       => array(
			'oxarticle'		=> 'paddyPriceSaving/paddyPriceSaving',
		)
);

paddyPriceSaving.php:


<?php
class paddyPriceSaving extends paddyPriceSaving_parent {
	
	public function getPriceSaving(){
		if($this->getFTPrice() > $this->getFPrice()){
			return $this->getFTPrice() - $this->getFPrice();
		}
	}
}

Die Funktion getPriceSaving muss ich in einem Template aufrufen, da ich mir das anzeigen lassen möchte. Die Umwandelung zu lowercase muss ich doch aber nirgendwo aufrufen. Das soll ja alles im Hintergrund passieren, weshalb ein Aufruf im Template nicht notwendig ist. Wie gesagt: Das Modul wird ständig deaktiviert. Ich hab keine Ahnung wieso :confused: Was mir aufgefallen ist, dass die Schreibweise beim extend variiert. Manchmal wird statt oxArticle einfach oxarticle geschrieben. Ist das wurscht wie man das angibt? Es ist doch [Klassenname] => [Ordnername]/[Klassenname], oder?

Tatsächlich, hab ich mittlerweile dann auch selbst rausgefunden weil ich es testweise mal geändert hatte. Verwirrend :cool:

Jetzt hab ich einfach ne Funktion aus oxsearch rauskopiert und in die Modulklasse eingefügt. Allerdings funktioniert die Suche dann nicht mehr. Die Funktion wird doch einfach nur überladen? Ich habe nichts an der Funktion geändert :eek:

Mit Quelltext ist das “einfach” “einfacher”…:wink: