-
Modul-Template ändern
Hey,
ich versuche gerade verzweifelt das Modul-Template zu ändern sobald es eine Get-Variable gibt.
PHP-Code:
protected $strTemplate = 'mod_travel_countries_list';
PHP-Code:
public function __construct($objModule) {
parent::__construct($objModule);
// Set the item from the auto_item parameter
if(!isset($_GET['items']) && \Config::get('useAutoItem') && isset($_GET['auto_item'])) {
\Input::setGet('items', \Input::get('auto_item'));
}
if(\Input::get('items')) {
$objCountryTravels = TravelCountriesModel::findPublishedByParentAndIdOrAlias(\Input::get('items'));
if($objCountryTravels !== null) {
$this->strTemplate = "mod_travel_list";
$this->class = "mod_travel_list";
}
}
}
Das $this->class setzt er nur das Template bleibt das gleiche.
-
Wird in der generate() Methode eventuell die Variable überschrieben?
-
Da wir deinen Code nicht zur Gänze kennen, können wir das nicht mit Gewissheit beantworten.
-
Anbei...
Den ganzen Model-Kram habe ich mal entfernt... sonst wäre es lang geworden, hoffe das reicht so...
PHP-Code:
class ModuleTravelCountries extends \Module {
protected $strTemplate = 'mod_travel_countries_list';
public function generate(){
// Display a wildcard in the back end
if (TL_MODE === 'BE') {
$template = new \BackendTemplate('be_wildcard');
$template->wildcard = '### TRAVEL-BUNDLE -- TRAVEL LIST COUNTRIES ###';
$template->title = $this->name;
$template->id = $this->id;
$template->link = $this->name;
$template->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id;
return $template->parse();
}
// Set the item from the auto_item parameter
if(!isset($_GET['items']) && \Config::get('useAutoItem') && isset($_GET['auto_item'])) {
\Input::setGet('items', \Input::get('auto_item'));
}
return parent::generate();
}
public function __construct($objModule) {
parent::__construct($objModule);
// Set the item from the auto_item parameter
if(!isset($_GET['items']) && \Config::get('useAutoItem') && isset($_GET['auto_item'])) {
\Input::setGet('items', \Input::get('auto_item'));
}
if(\Input::get('items')) {
$objCountryTravels = TravelCountriesModel::findPublishedByParentAndIdOrAlias(\Input::get('items'));
if($objCountryTravels !== null) {
$this->strTemplate = "mod_travel_list";
$this->class = "mod_travel_list";
}
}
}
protected function compile() {
global $objPage;
$objTemplate = new \FrontendTemplate($this->travel_tpl);
if(\Input::get('items')) {
$objCountryTravels = TravelCountriesModel::findPublishedByParentAndIdOrAlias(\Input::get('items'));
if($objCountryTravels === null){
throw new PageNotFoundException('Page not found: ' . \Environment::get('uri'));
}
}
if($objCountryTravels !== null) {
$template = "travel_short";
$objModul = \ModuleModel::findOneByType("travel_list");
if($objModul !== null) {
$template = $objModul->travel_tpl;
}
print_r("template: ".$this->strTemplate);
print_r("class: ".$this->Template->class);
$objTemplate = new \FrontendTemplate($template);
$this->strTemplate = "mod_travel_list";
$this->class = "mod_travel_list";
// code entfernt, nur Abfragen DB
$this->Template->travels .= $objTemplate->parse();
} else {
// code entfernt, nur Abfragen DB
$this->Template->countries = $objTemplate->parse();
}
}
}
}
EDIT: sehe grad das wenn ich $this->strTemplate ausgebe steht das richtige drin, aber im Template steht immer noch diese klasse: mod_travel_countries ob $this->Template->class = mod_travel_list ist
EDIT 2: habs hinbekommen dank dem thread: https://community.contao.org/de/show...m-Modul-setzen