и я добавлю, и поддержу Вас за правильный подход.
никакой каши нет.
я например, не использую дополнительную библиотеку, а использую готовые методы по такому же принципу как и @SergeTkach
например для Крошки универсальный код под все версии Опенкарта:
private function breadcrumbs($shabl = null, $sort_fitl = null) {
$shabl = ($shabl) ? '/'.$shabl : null;
$this->data['breadcrumbs'] = array();
//v.1
if($this->what_versi < 2000) {
$home = 'home';
}
//v.2
else {
$home = 'dashboard';
}
$this->data['breadcrumbs'][] = array(
'text' => $this->data['text_home']
,'href' => $this->url->link('common/'.$home, $this->token_token, $this->ssl)
);
$this->data['breadcrumbs'][] = array(
'text' => $this->data['text_module']
,'href' => $this->url->link($this->mod_ext, $this->token_token.$this->type_mod, $this->ssl)
);
$this->data['breadcrumbs'][] = array(
'text' => $this->data['heading_title']
,'href' => $this->url->link($this->versi_put.'/'.$this->name_mod.$shabl, $this->token_token.$sort_fitl, $this->ssl)
);
}
потом его вставляю, где мне нужно в метод, например в myMetod() и где еще он используется: index() и т.д.
public function myMetod() {
..........
..........
$this->breadcrumbs('link');
.........
}
а еще есть один головняк в Опенкарт - это при добавлении кода для Языка.
решаю так - я вообще не пишу такого рода код :
................
$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
................
................
а использую метод:
public function getLangModule($langs = array()) {
foreach($langs as $k => $v) {
$this->data[$k] = $v;
}
}
//и потом для всех в конструкторе его вывожу, либо в отдельном методе.
public function __construct($registry) {
parent::__construct($registry);
...............
$this->getLangModule($this->load->language('module/my_module'));
...............
...............
}
и потом в tpl-файле вывожу
<div><?php echo $text_manufacturer; ?></div>