Быстрое редактирование со страницы товара OpenCart 2x
Наткнулся на этот прием на сайте netsh.pp.ua, выкладываю тут, что бы не забыть. Прием опробовался на 2.3.
Сначала добавляем функцию в файле system/library/url.php
public function linkEditProduct($route, $args = '', $secure = false) {
if ($this->ssl && $secure) {
$url = $this->ssl . 'admin/index.php?route=' . $route;
} else {
$url = $this->url . 'admin/index.php?route=' . $route;
}
if ($args) {
if (is_array($args)) {
$url .= '&' . http_build_query($args);
} else {
$url .= str_replace('&', '&', '&' . ltrim($args, '&'));
}
return $url;
}
}
Далее добавим текст для кнопки редактирования товара в catalog/language/ru-ru/product/product.php
/// Кнопка редактирования товара
$_['text_button_edit'] = 'Редактировать товар';
Далее добавим код в контроллер catalog/controller/product/product.php. Находим строку $product_info = $this->model_catalog_product->getProduct($product_id); (у меня нашло две таких строки, я добавлял после первой) и после неё добавляем
$data['button_edit_product'] = $this->language->get('text_button_edit');
На пару строк ниже будет if ($product_info) { добавляем
if(!empty($this->session->data['user_id']) && !empty($this->session->data['token'])){
$data['edit_product'] = '<a class="btn btn-warning btn-lg btn-block" href="'.$this->url->linkEditProduct('catalog/product/edit', 'token=' . $this->session->data['token'].'&product_id='.$product_id, 'true').'" target="_blank" rel="noopener">'.$data['button_edit_product'].'</a>';
}
Теперь добавляем в файле шаблона catalog/view/theme/default/template/product/product.tpl ссылку на вывод кнопки
<?php if(!empty($edit_product)){echo $edit_product; } ?>
Теперь у нас на странице товара отображается кнопка на редактирование товара, которая бы отображалась только для залогиненного пользователя.