2016-11-23 3 views
0

Ich benutze OpenCart Version 2.2.0.0 und versuche verschiedene Vorlage für jede Kategorie und Produktseite einzustellen. Online-Suche fand ich folgenden Code:Spezifische Vorlage für Kategorie und Produktseite in OpenCart 2.2.0.0

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category_' . $category_id . '.tpl')) { 
    $this->template = $this->config->get('config_template') . '/template/product/category_' . $category_id . '.tpl'; 
} elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) { 
    $this->template = $this->config->get('config_template') . '/template/product/category.tpl'; 
} else { 
    $this->template = 'default/template/product/category.tpl'; 
} 

Dieser Code funktioniert für ältere Version von OpenCart in Ordnung, aber in der neuen Version Ich bin nicht der Suche nach ähnlichen Codestruktur im Katalog/Controller/product/category.php

Datei Wie kann ich in OpenCart 2.2.0.0 ein ähnliches Ergebnis erzielen?

+0

verwenden Sie Standard-Theme? – DigitCart

+0

nein, ich schreibe ein neues Thema, aber Controller-Datei sind in Standard-Thema – Mithu

Antwort

1

Seit Opencart änderte seine Methode von 2.2 dieser Code nicht mehr funktioniert, können Sie es wie folgt ändern:

Zuerst müssen wir wissen, welches Thema aktiv ist, speichert seinen Namen in eine Variable

$config_theme = $this->config->get('config_theme') == 'theme_default' ? 'default' : $this->config->get('config_theme'); 

Dann müssen wir überprüfen, ob es eine Datei speziell für die aktuelle Kategorie gibt, zum Beispiel, wenn wir in der Kategorie 20 sind, suchen wir nach category_20.tpl existance.

if (file_exists(DIR_TEMPLATE . $config_theme . '/template/product/category_' . $category_id . '.tpl')) { 

Wenn diese Datei gefunden:

$view = 'product/category_' . $category_id; 

wenn es keine solche Datei ist, verwenden Sie Original-Datei: category.tpl

} else { 
    $view = 'product/category'; 
} 

Last ausgewählte Ansicht Datei auf obige Aussage basiert.

$this->response->setOutput($this->load->view($view, $data)); 

Schlussfolgerung:

$this->response->setOutput($this->load->view('product/category', $data)); in catalog/controller/product/category.php finden und mit über Codes ersetzen, hier ist voll Code:

$config_theme = $this->config->get('config_theme') == 'theme_default' ? 'default' : $this->config->get('config_theme'); 
if (file_exists(DIR_TEMPLATE . $config_theme . '/template/product/category_' . $category_id . '.tpl')) { 
    $view = 'product/category_' . $category_id; 
} else { 
    $view = 'product/category'; 
} 
$this->response->setOutput($this->load->view($view, $data)); 
+0

Hallo danke es funktioniert. kann ich den Themennamen dynamisch erhalten – Mithu

+0

Gern geschehen, es muss Ihren benutzerdefinierten Themennamen erkennen, ich habe es sowohl mit Standard-und benutzerdefinierten Thema getestet. aber wenn Sie irgendein Problem haben, können Sie '$ config_theme = 'My_Theme' verwenden;' statt $ $ config_theme = $ this-> config-> get ('config_theme') == 'theme_default'? 'default': $ this-> config-> get ('config_theme'); ' – DigitCart

+0

ok gr8 ist auch möglich, auf Unterkategorie zu zielen Auch hier war es möglich, mit dem folgenden Code ein kategorieseitiges separates Stylesheet hinzuzufügen this-> Dokument-> setTitle. 'if (datei_exists (DIR_TEMPLATE. $ this-> config-> get ('config_template'). '/ stylesheet/kategorie_'. $ category_id. '. css')) {$ this-> document-> addStyle ('catalog/view/theme/'. $ this-> config-> get (' Konfig_Template ').'/stylesheet/category_ '. $ category_id.' .css '); } $ this-> document-> setTitle ($ category_info ['name']); 'wie kann ich das hier benutzen? – Mithu

Verwandte Themen