Вы узнаете некоторые приемы, которые используются для того, чтобы избавиться от ненужностей и добавить нужностей в движке OpenCart 3.
Убираем последнюю ссылку в product в хлебных крошках:
Файл:
/catalog/view/theme/default/template/product/product.twig
Было:
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li><a href="/{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
{% endfor %}
</ul>
Стало:
<ul class="breadcrumb">
{% for breadcrumb in breadcrumbs %}
<li>
{% if breadcrumb.href != '' %}
<a href="/{{ breadcrumb.href }}">{{ breadcrumb.text }}</a>
{% else %}
{{ breadcrumb.text }}
{% endif %}
</li>
{% endfor %}
</ul>
Файл:
/catalog/controller/product/product.php
Было:
$data['breadcrumbs'][] = array(
'text' => $product_info['name'],
'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id'])
);
Стало:
$data['breadcrumbs'][] = array(
'text' => $product_info['name'],
'href' => ''
);
Неполадки с оформлением заказа.
Внимание! При попытке оформить заказ, возможно, со второй попытки (если пользователь перезагрузил страницу, заполнил некоторые НЕ ВСЕ поля и снова пытается оформить), может возникать ошибка
Notice: Undefined index: zone_id in /catalog/controller/startup/startup.php on line 166
Notice: Undefined index: zone_id in /catalog/controller/startup/startup.php on line 172
Как её исправить? Ведь она НЕ дает пользователю пройти всю процедуру оформления заказа, так как попросту НЕ подгружаются некоторые данные и действовать дальше нельзя из-за неактивных вкладок.
На самом деле решение данной ситуации есть! Файл:
/catalog/controller/startup/startup.php
Было:
if (isset($this->session->data['shipping_address'])) {
$this->tax->setShippingAddress($this->session->data['shipping_address']['country_id'], $this->session->data['shipping_address']['zone_id']);
} elseif ($this->config->get('config_tax_default') == 'shipping') {
$this->tax->setShippingAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
}
if (isset($this->session->data['payment_address'])) {
$this->tax->setPaymentAddress($this->session->data['payment_address']['country_id'], $this->session->data['payment_address']['zone_id']);
} elseif ($this->config->get('config_tax_default') == 'payment') {
$this->tax->setPaymentAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
}
Стало:
if (isset($this->session->data['shipping_address'])) {
if(isset($this->session->data['shipping_address']['zone_id']))$this->tax->setShippingAddress($this->session->data['shipping_address']['country_id'], $this->session->data['shipping_address']['zone_id']);
} elseif ($this->config->get('config_tax_default') == 'shipping') {
$this->tax->setShippingAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
}
if (isset($this->session->data['payment_address'])) {
if(isset($this->session->data['payment_address']['zone_id']))$this->tax->setPaymentAddress($this->session->data['payment_address']['country_id'], $this->session->data['payment_address']['zone_id']);
} elseif ($this->config->get('config_tax_default') == 'payment') {
$this->tax->setPaymentAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
}
Точно также можно решить и другие подобные ошибки, просто найдите то, что выдает в ошибке в этом же файл и вставьте
if(isset($this->session->data['shipping_address']['XXX_XXXX']))
Делаем доступ в административную панель по специальной ссылке-ключу.
Откроем файл:
/admin/controller/common/login.php
Добавляем в
class ControllerCommonLogin extends Controller {
private $error = array();
public function index() {
...
СЮДА
}
Код:
if ($this->user->isLogged()==NULL && $this->request->get['user_token']==NULL && getenv("REQUEST_URI") != '/admin/index.php?token=SECRET') {
header('HTTP/1.1 404 Not found');
header('location:/404');
exit;
}
Т.е. перед закрывающей фигурной скобкой вставим код выше. И получается, что теперь надо заходить в административную панель только так:
http://site.org/admin/index.php?token=SECRET