2016-11-23 1 views
0

J'utilise OpenCart version 2.2.0.0 et j'essaie de définir un modèle différent pour chaque catégorie et page de produit. Recherche en ligne J'ai trouvé le code suivant:Modèle spécifique pour la catégorie et la page produit dans 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'; 
} 

Ce code fonctionne très bien pour la version plus ancienne de OpenCart mais dans une nouvelle version je ne trouve pas la structure de code similaire dans catalog/contrôleur/produit/category.php fichier

Comment puis-je obtenir un résultat similaire dans OpenCart 2.2.0.0?

+0

utilisez-vous le thème par défaut? – DigitCart

+0

non je suis en train d'écrire un nouveau thème, mais le fichier du contrôleur sont dans le thème par défaut – Mithu

Répondre

1

Depuis Opencart a changé sa méthode de 2.2 que le code ne fonctionne plus, vous pouvez le modifier comme ceci:

Tout d'abord nous devons savoir quel thème est actif, stocker son nom dans une variable

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

Ensuite, il faut vérifier s'il y a un fichier spécialement pour la catégorie courante, par exemple si on est sur la catégorie 20, on vérifie l'existence de category_20.tpl.

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

Si ce fichier trouvé:

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

s'il n'y a pas un tel fichier, utilisez le fichier d'origine: category.tpl

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

charge de fichier vue sélectionnée sur la base énoncé ci-dessus.

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

conclusion:

trouver $this->response->setOutput($this->load->view('product/category', $data)); dans catalog/controller/product/category.php et le remplacer par des codes ci-dessus, voici le code complet:

$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

salut merci ça fonctionne. Puis-je obtenir le nom du thème dynamiquement? – Mithu

+0

De rien, il doit reconnaître votre nom de thème personnalisé, je l'ai testé à la fois avec le thème par défaut et personnalisé. mais si vous avez un problème, vous pouvez utiliser '$ config_theme = 'My_Theme';' au lieu de '$ config_theme = $ this-> config-> get ('config_theme') == 'theme_default'? 'default': $ this-> config-> get ('config_theme'); ' – DigitCart

+0

ok gr8 est-il possible de cibler aussi la sous-catégorie? Encore avec le code ci-dessous, il était possible d'ajouter une feuille de style séparée this-> document-> setTitle. 'if (file_exists (DIR_TEMPLATE. $ this-> config-> get ('config_template'). '/ stylesheet/category_'. $ category_id. '. css')) {$ ce-> document-> addStyle ('catalogue/view/theme/'. $ this-> config-> get (' config_template ').'/stylesheet/category_ '. $ category_id.' .css '); } $ this-> document-> setTitle ($ category_info ['nom']); 'Comment puis-je l'utiliser ici? – Mithu