По сути, я сделал то, что по сути хотел (см. Середину моего вопроса, а именно часть о крайней необходимости обновить мой список продуктов с помощью ajax) другим способом (после прочтения Как получить продукты в формате JSON из OpenCart с использованием phonegap / jQueryMobile ): из ajax я напрямую вызывал продукты / категорию, а не свою пользовательскую функцию внутри контроллера продукта / категории, как в вопросе, и когда я получил ответ, содержащий вывод html вид, я перезагрузил div, который я сделал в product / category.twig с этим HTML, используя jQuery. Аякс был
$(document).ready(function(){
$.ajax({
url: 'index.php?route=product/category&path=18&json',
type: 'get',
beforeSend: function() {
},
complete: function() {
},
success: function(data) {
console.log('success');
if (data.length > 0) {
console.log(data);
$('#mydiv').html(data);
}
}
});
});
и код, который я добавил в product / category.php, был
if(isset($this->request->get['json'])) {
$this->response->setOutput($this->load->view('product/view_for_mydiv', $data));
} else {
$this->response->setOutput($this->load->view('product/category', $data));
}
Как вы можете заметить, я добавил div внутри product / category.twig с именем mydiv, который я поместил именно туда, куда хотел добавить html, а затем создал ветку view_for_mydiv.twig в папке default / product / category /, HTML-код, который контроллер продукта / категории отправит обратно вместо своей общей ветки, когда увидит, что ему был сделан вызов ajax. Div #mydiv, расположенный внутри category.twig, оборачивает html, который является тем же html, который создается, когда view_for_mydiv.twig используется для визуализации продукта / категории.