Спасибо, но на подобии product_description не получилось, так как выводилось не правильно, сделал на подобии атрибутов
Конечно немного отошел от стандартов opencart и подключил одну модель к другой, но в целом добился того результата, что требовалось
public function getMaterial($material_id) {
$this->load->model('tool/image');
$material_group_data = array();
$material_group_query = $this->db->query("SELECT m.material_id, m.name, m.type, mi.material_id FROM " . DB_PREFIX . "material m LEFT JOIN " . DB_PREFIX . "material_image mi ON (m.material_id = mi.material_id) WHERE m.status = '1' AND mi.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY m.material_id ORDER BY mi.sort_order, m.material_id");
foreach ($material_group_query->rows as $material_group) {
$material_data = array();
$material_query = $this->db->query("SELECT m.material_id, mi.title, mi.material_id, mi.image FROM " . DB_PREFIX . "material m LEFT JOIN " . DB_PREFIX . "material_image mi ON (m.material_id = mi.material_id) WHERE m.material_id = '" . (int)$material_group['material_id'] . "' AND mi.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY mi.sort_order, mi.material_id");
foreach ($material_query->rows as $material_image) {
if ($material_image['image']) {
$image = $this->model_tool_image->resize($material_image['image'], 300, 300);
$popup = $this->model_tool_image->resize($material_image['image'], 700, 700);
} else {
$image = '';
$popup = '';
}
$material_data[] = array(
'material_id' => $material_image['material_id'],
'title' => $material_image['title'],
'image' => $image,
'popup' => $popup
);
}
$material_group_data[] = array(
'material_id' => $material_group['material_id'],
'name' => $material_group['name'],
'type' => $material_group['type'],
'material' => $material_data
);
}
return $material_group_data;
}