ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Новости форума и сайта.
Скачать доработанную версию ЛайвСтор: 3.0.4.4
Dmitriy
Сообщения: 12
Зарегистрирован: 03.04.2026
Поблагодарил: 3 раз
Спасибо: 16 раз

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение Dmitriy »

Большую часть ошибок я вспомнил, но возможно не все.
Что еще стоит исправить:
Проверьте функции очистки кешей изображений. Они удаляют все файлы подряд, в том числе и заглушку index.html. Его нужно либо создать после очистки или внести в исключения.
Удалить бесполезные файлы marketplace/api.{php,twig} - хвосты от магазина расширений Opencart
Обновить Bootstrap v3.3.5 до Bootstrap v3.4.1 (admin, install, catalog)
Обновить jquery-3.7.0.min.js на jquery-3.7.1.min.js
Проверить все *.twig файлы на предмет устаревших методов:
.bind - заменить на .on (тут можно менять через обычный поиск замену)
.delegate - заменить на .on (тут нужно использовать поиск и замену через регулярные выражения, потому что нужно поменять порядок аргументов). Пример
исходный код
 

Код: Выделить всё

$('#product-related').delegate('.fa-minus-circle', 'click', function() {
    $(this).parent().remove();
});

после замены
 

Код: Выделить всё

$('#product-related').on('click', '.fa-minus-circle', function() {
    $(this).parent().remove();
});

Начиная с jQuery 3.0, методы .bind() и .delegate() устарели. Они были заменены методом .on() начиная с jQuery 1.7, поэтому их использование не рекомендуется.

Еще в файле admin\view\template\sale\order_invoice.twig и возможно еще в нескольких (проверить через поиск, искать jquery-2.1.1) используется неактуальная библиотека jquery-2.1.1.min.js
<script type="text/javascript" src="view/javascript/jquery/jquery-2.1.1.min.js"></script>
В этом же файле admin\view\template\sale\order_invoice.twig строка 17, двойной тег <h1>

Код: Выделить всё

<h1><h1>{{ order.invoice_no ? text_invoice ~ ' #' ~ order.invoice_no : text_order|format(order.order_id) }}</h1></h1>
Dmitriy
Сообщения: 12
Зарегистрирован: 03.04.2026
Поблагодарил: 3 раз
Спасибо: 16 раз

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение Dmitriy »

Файл admin\controller\marketing\contact.php, неправильный маршрут для кнопки Отмена
 

Код: Выделить всё

$data['cancel'] = $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true); // строка 24
заменить на
 

Код: Выделить всё

$data['cancel'] = $this->url->link('marketing/contact', 'user_token=' . $this->session->data['user_token'], true);
Файл admin\controller\marketplace\modification.php содержит логическую ошибку из-за которой в логе не отображаются субмодификации

Код: Выделить всё

							// Log
							$log[] = PHP_EOL . 'FILE: ' . $key; // строка 671, после нее добавить код ниже, условие else
						} else {
							$log[] = PHP_EOL . 'FILE: (sub modification) ' . $key;
						}
MasterDenis
Сообщения: 1
Зарегистрирован: 30.04.2026

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение MasterDenis »

После обновления до Liveopencart 3.0.4.3 перестал работать модуль "Трек-номер заказа". Понятно, что это не самый важный модуль, но очень полезный. Нельзя ли в следующей версии обеспечить совместимость сверху-вниз для этого модуля? Ибо разработчик этого модуля похоже давно про него забыл...
Аватара пользователя
liveopencart
liveopencart.ru
Сообщения: 362
Зарегистрирован: 10.03.2022
Мои дополнения: 19th19th
Поблагодарил: 110 раз
Спасибо: 185 раз
Контактная информация:

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение liveopencart »

MasterDenis писал(а): 30 апр 2026, 21:44 После обновления до Liveopencart 3.0.4.3 перестал работать модуль &quot;Трек-номер заказа&quot;. Понятно, что это не самый важный модуль, но очень полезный. Нельзя ли в следующей версии обеспечить совместимость сверху-вниз для этого модуля? Ибо разработчик этого модуля похоже давно про него забыл...
Обратитесь к любому разработчику за платной помощью, не думаю что будет какая-то проблема с исправлением. Либо к нам.
Выразить благодарность деньгами - liveopencart.ru/pay
Dmitriy
Сообщения: 12
Зарегистрирован: 03.04.2026
Поблагодарил: 3 раз
Спасибо: 16 раз

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение Dmitriy »

Файл admin\controller\user\api.php (строка 372), неправильная проверка прав 'user/user', правильно 'user/api'
 

Код: Выделить всё

	protected function validateForm() {
		if (!$this->user->hasPermission('modify', 'user/user')) {
должно быть
 

Код: Выделить всё

	protected function validateForm() {
		if (!$this->user->hasPermission('modify', 'user/api')) {
			$this->error['warning'] = $this->language->get('error_permission');
		}
Файл admin\controller\design\translation.php (строка 232) нет метода history в контроллере
 

Код: Выделить всё

$pagination->url = $this->url->link('design/translation/history', 'user_token=' . $this->session->data['user_token'] . '&page={page}', true);
скорее всего должно быть так
 

Код: Выделить всё

$pagination->url = $this->url->link('design/translation', 'user_token=' . $this->session->data['user_token'] . '&page={page}', true);
И замените формат даты и времени с date_format_short на datetime_format хотя бы в admin\controller\sale\order.php. Думаю, что всем уже надоело такое отображение заказов
Спойлер
Screenshot_2026_05_04-1.png
Screenshot_2026_05_04-1.png (42.27 КБ) 547 просмотров
Screenshot_2026_05_04-2.png
Screenshot_2026_05_04-2.png (51.01 КБ) 547 просмотров
Dmitriy
Сообщения: 12
Зарегистрирован: 03.04.2026
Поблагодарил: 3 раз
Спасибо: 16 раз

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение Dmitriy »

Файл admin\controller\marketing\contact.php (строка 24), неправильный маршрут для кнопки отмена
 

Код: Выделить всё

$data['cancel'] = $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true);
правильно
 

Код: Выделить всё

$data['cancel'] = $this->url->link('marketing/contact', 'user_token=' . $this->session->data['user_token'], true);
Файл admin\view\template\extension\advertise\google_ads.twig, мусор в 82 строке "</a></th>"

Код: Выделить всё

                    <th class="text-center"><a href="javascript:void(0)" data-sort="conversion_value"><i data-toggle="tooltip" data-original-title="{{ text_conversion_value }}" class="fa fa-line-chart"></i></a></th>
                    </a></th>
                    <th class="text-left">{{ text_campaigns }}</th>
Dmitriy
Сообщения: 12
Зарегистрирован: 03.04.2026
Поблагодарил: 3 раз
Спасибо: 16 раз

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение Dmitriy »

Файл admin\controller\extension\module\featured_article.php (строка 83), неправильный маршрут для кнопки отмена, нажатие - переход на несуществующую страницу

Код: Выделить всё

$data['cancel'] = $this->url->link('extension/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true);
должно быть

Код: Выделить всё

$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true);
 
Dmitriy
Сообщения: 12
Зарегистрирован: 03.04.2026
Поблагодарил: 3 раз
Спасибо: 16 раз

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение Dmitriy »

Файл admin\model\sale\recurring.php метод public function getTotalRecurrings($data) {...}
Тут ошибка, используется . - это синтаксис для конкатенации строки, а не для добавления элемента в массив.
 

Код: Выделить всё

$implode[] .= ...

Тут же в проверке фильтр filter_payment_reference ошибка, также убрать пробел перед or.reference
 

Код: Выделить всё

if (!empty($data['filter_payment_reference'])) { // Здесь проверяется filter_payment_reference, а используется filter_reference. В контролере используется filter_reference
    $implode[] .= " or.reference LIKE '" . $this->db->escape($data['filter_reference']) . "%'";
}


Исправленный код

Код: Выделить всё

	public function getTotalRecurrings($data) {
		$sql = "SELECT COUNT(*) AS `total` FROM `" . DB_PREFIX . "order_recurring` `or` LEFT JOIN `" . DB_PREFIX . "order` o ON (`or`.order_id = `o`.order_id)";
		
		$implode = array();

		if (!empty($data['filter_order_recurring_id'])) {
			$implode[] = "or.order_recurring_id = " . (int)$data['filter_order_recurring_id'];
		}

		if (!empty($data['filter_order_id'])) {
			$implode[] = "or.order_id = " . (int)$data['filter_order_id'];
		}

		if (!empty($data['filter_reference'])) {
			$implode[] = "or.reference LIKE '" . $this->db->escape($data['filter_reference']) . "%'";
		}

		if (!empty($data['filter_customer'])) {
			$implode[] = "CONCAT(o.firstname, ' ', o.lastname) LIKE '" . $this->db->escape($data['filter_customer']) . "%'";
		}

		if (!empty($data['filter_status'])) {
			$implode[] = "or.status = " . (int)$data['filter_status'];
		}

		if (!empty($data['filter_date_added'])) {
			$implode[] = "DATE(or.date_added) = DATE('" . $this->db->escape($data['filter_date_added']) . "')";
		}
		
		if ($implode) {
			$sql .= " WHERE " . implode(" AND ", $implode);
		}
		
		$query = $this->db->query($sql);

		return $query->row['total'];
	}
Dmitriy
Сообщения: 12
Зарегистрирован: 03.04.2026
Поблагодарил: 3 раз
Спасибо: 16 раз

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение Dmitriy »

Файл admin\controller\sale\return.php (строка 447) ошибка '&sort=status', должно быть '&sort=return_status'

Код: Выделить всё

$data['sort_status'] = $this->url->link('sale/return', 'user_token=' . $this->session->data['user_token'] . '&sort=status' . $url, true);
правильно

Код: Выделить всё

$data['sort_status'] = $this->url->link('sale/return', 'user_token=' . $this->session->data['user_token'] . '&sort=return_status' . $url, true);
 
Аватара пользователя
spectrum
Разработчик дополнений
Сообщения: 134
Зарегистрирован: 10.03.2022
Откуда: РФ
Поблагодарил: 87 раз
Спасибо: 64 раз

Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение

Непрочитанное сообщение spectrum »

Тех, кто этим пользуется я не встречал, но согласен, что все должо быть без ошибок.
Ответить