The answer implies that the so-called. Recommended products are a module that is included and instantiated like any other standard module.
In opencart to display additional blocks, such as custom html structures, sidebars, sliders and other modules on various pages of the site, there is a separate menu item - Layouts . There you will find a list of all the main site templates. In your case, these are the Category and Product items. Going into them you will find the name of the scheme, the store to which this scheme is designed (for a multi-store), draw schemes, and a set of modules that are additionally connected to the scheme 
Here, in the Mодуль list, the required one from the set of дополнения > модули Расположение selected; By default, the OC has 4 modular positions - up / down / left / right. In the .tpl templates, the variables $column_right; $column_left; $content_top; $content_bottom; $column_right; $column_left; $content_top; $content_bottom; The modules in them are displayed in a list in accordance with the sorting specified in the Порядок сортировки (by default, in the order of addition)
UPD:
Adding "recommended" from the product card to the catalog
The section of the " Recommended " product card is formed as follows:
#catalog/controller/product/product.php: $data['products'] = array();//->$products $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); foreach ($results as $result) { #... code ... #... code ... $data['products'][] = array( 'product_id' => $result['product_id'], #... code ... #... code ... ); } #catalog/view/theme/default(your_theme)/product/product.tpl: <?php if ($products) { ?>
Actually, part of the product controller must be inserted into the product formation cycle in the category catalog controller (by slightly changing):
#catalog/controller/product/category.php: #straight before this peace of code: $data['products'][] = array( 'sort_order' => $result['sort_order'], 'product_id' => $result['product_id'], #... code ... #... code ... ) #put this spell: $related_to = array(); $related_to_results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); foreach ($results as $result) { #... code ... #... code ... $related_to = array( 'product_id' => $result['product_id'], #repeat all the code ); } #and finally add this to $data['products'][]: $data['products'][] = array( 'sort_order' => $result['sort_order'], 'product_id' => $result['product_id'], #... code ... #... code ... 'related' => $related_to//<------- )
As a result, in catalog/view/theme/dafault(your_theme)/category.tpl , in the <?php foreach ($products as $product) { ?> catalog/view/theme/dafault(your_theme)/category.tpl , an array of products recommended in this $ product ['related'] will be available . Expand through foreach, salt to taste, bring to readiness.