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

Новости форума и сайта.
Скачать доработанную версию ЛайвСтор: 3.0.4.3
Аватара пользователя
liveopencart
liveopencart.ru
Сообщения: 353
Зарегистрирован: 10.03.2022
Мои дополнения: 19th19th
Поблагодарил: 103 раз
Спасибо: 182 раз
Контактная информация:

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

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

## 18.03.2026
* Версия сборки изменена на 3.0.4.3
* Добавлен модуль Яндекс.Капча
* Во многих разделах админки добавлена колонка статуса
* Добавлена переменная IS_LIVESTORE для определения сборки разработчиками
* Логотип и название сборки теперь кириллицей
* Исправление принадлежности регионов
* Улучшения перевода
* Прочие небольшие улучшения кода

Спасибо:  SpectrumTomSerbulenko

Скачать:
https://liveopencart.ru/img/livestore-3.0.4.3.zip
Выразить благодарность деньгами - liveopencart.ru/pay
greg-pavel
Сообщения: 3
Зарегистрирован: 04.12.2025
Спасибо: 1 раз

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

Непрочитанное сообщение greg-pavel »

Спасибо за развитие, Тестанул и откатился обратно.... 3.0.3.7
Сразу сайт работал, но в админку попасть не мог... поиск привел
Полезное:
viewtopic.php?p=5809#p5809
https://liveopencart.ru/500
     Отображение ошибок
Файл .htaccess (в конце добавляем - временно потом удаляем):
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag output_buffering off
Fatal error: Uncaught Error: Call to undefined method ScssPhp\ScssPhp\Compiler::compileString()
/var/www/www-root/data/www/svn-video.ru/admin/controller/startup/sass.php:17 Stack trace: #0
Ошибка основная которую наше в инете.... полностью \upload\system\storage обновлять не надо, только одну папку scssphp из обновления system\storage\vendor\scssphp\scssphp в папку storage выше папки сайта storage\vendor\scssphp\scssphp
Админка работает и делает дальше по инструкции обновления

🤝

 
Последний раз редактировалось greg-pavel 21 мар 2026, 13:51, всего редактировалось 2 раза.
Аватара пользователя
spectrum
Разработчик дополнений
Сообщения: 129
Зарегистрирован: 10.03.2022
Откуда: РФ
Поблагодарил: 82 раз
Спасибо: 61 раз

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

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

greg-pavel писал(а): 20 мар 2026, 03:09 Спасибо за развитие, Тестанул и откатился обратно.... 3.0.3.7

viewtopic.php?p=5809#p5809
При обновлении движка необходимо файлы из папки system/storage из архива с новой версией скопировать в ту папку, которую вы создали при установке движка. (уведомление при в ходе в админку опенкарт которое, пока не измените путь папки storage)

Должно помочь
Аватара пользователя
Tom
Разработчик дополнений
Сообщения: 282
Зарегистрирован: 10.03.2022
Откуда: Казахстан - Алматы
Поблагодарил: 17 раз
Спасибо: 123 раз
Контактная информация:

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

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

Вроде бы читал что исправлено, на странице успешного оформления заказа 
heading_title_customer
Но скачал на днях и проверил и проблема осталась
LiveStore-main\upload\catalog\language\ru-ru\checkout\success.php
Да и в английской версии, напрочь отсутствует

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

$_['heading_title_customer'] = 'Ваш заказ #%s сформирован!';
Аватара пользователя
liveopencart
liveopencart.ru
Сообщения: 353
Зарегистрирован: 10.03.2022
Мои дополнения: 19th19th
Поблагодарил: 103 раз
Спасибо: 182 раз
Контактная информация:

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

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

Tom писал(а): 11 апр 2026, 22:13 Вроде бы читал что исправлено, на странице успешного оформления заказа 
heading_title_customer
Но скачал на днях и проверил и проблема осталась
LiveStore-main\upload\catalog\language\ru-ru\checkout\success.php
Да и в английской версии, напрочь отсутствует

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

$_['heading_title_customer'] = 'Ваш заказ #%s сформирован!';
пока сделано только в новом 3.0.4.4, доступном на гите
Выразить благодарность деньгами - liveopencart.ru/pay
16Gb
Сообщения: 1
Зарегистрирован: 27.03.2026
Спасибо: 1 раз

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

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

 
Здравствуйте. Помогите пожалуйста, При попытке изменить что-либо через редактор перевода вылазит ошибка - Notice: Undefined index: key in ***/public_html/admin/controller/design/translation.php on line 412 
Но если и получается сохранить то значение меняется и отображается на сайте, но как только я пытаюсь изменить еще какой-то другой ключ то изменения сбрасываются и на то что было сохранено. Откатывыться не охота, может есть какой-то фикс? По интернету пошарился, единственное обсуждение с именно такой ошибкой на гитхабе в ветке опенкарт и то закрытое уже.
И вот интересный момент, он просит три символа, но их то два..
Изображение
Последний раз редактировалось 16Gb 17 апр 2026, 17:29, всего редактировалось 2 раза.
Dmitriy
Сообщения: 4
Зарегистрирован: 03.04.2026
Спасибо: 7 раз

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

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

Найдите во всем коде подобные условия

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

if ((utf8_strlen($value['meta_title']) < 0) || (utf8_strlen($value['meta_title']) > 255)) {
...
}
if ((utf8_strlen($value['meta_h1']) < 0) || (utf8_strlen($value['meta_h1']) > 255)) {
...
}


и удалите первое условие (utf8_strlen($value...) < 0). Функция mb_strlen возвращает количество символов в строке, и это всегда целое число ≥ 0.
Поэтому проверка меньше 0 никогда не выполнится и фактически ничего не проверяет.
Аватара пользователя
liveopencart
liveopencart.ru
Сообщения: 353
Зарегистрирован: 10.03.2022
Мои дополнения: 19th19th
Поблагодарил: 103 раз
Спасибо: 182 раз
Контактная информация:

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

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

16Gb писал(а): 17 апр 2026, 16:24
 
Здравствуйте. Помогите пожалуйста, При попытке изменить что-либо через редактор перевода вылазит ошибка - Notice: Undefined index: key in ***/public_html/admin/controller/design/translation.php on line 412 
Но если и получается сохранить то значение меняется и отображается на сайте, но как только я пытаюсь изменить еще какой-то другой ключ то изменения сбрасываются и на то что было сохранено. Откатывыться не охота, может есть какой-то фикс? По интернету пошарился, единственное обсуждение с именно такой ошибкой на гитхабе в ветке опенкарт и то закрытое уже.
И вот интересный момент, он просит три символа, но их то два..
Будет исправлено в 3.0.4.4
 
Выразить благодарность деньгами - liveopencart.ru/pay
Dmitriy
Сообщения: 4
Зарегистрирован: 03.04.2026
Спасибо: 7 раз

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

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

Исправьте в admin\controller\blog\setting.php
маршрут для кнопки отмена, 'setting/store' это явно не то, что нужно

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

$data['cancel'] = $this->url->link('setting/store', 'user_token=' . $this->session->data['user_token'], true);
на

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

// Подставить нужный маршрут для логики возврата
$data['cancel'] = $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true);

и неправильну проверку прав доступа

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

if (!$this->user->hasPermission('modify', 'setting/setting')) {
на

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

if (!$this->user->hasPermission('modify', 'blog/setting')) {
 
v.andrey.1966
Сообщения: 3
Зарегистрирован: 25.09.2025
Поблагодарил: 2 раз

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

Непрочитанное сообщение v.andrey.1966 »

Сегодня при входе в админку вылетело. Предупреждение: вы превысили допустимое количество попыток входа в систему. Пожалуйста, повторите попытку через 1 час или сбросьте пароль. Взламывали? Попыток входа с моей стороны не было.
Последний раз редактировалось v.andrey.1966 22 апр 2026, 08:23, всего редактировалось 1 раз.
Аватара пользователя
liveopencart
liveopencart.ru
Сообщения: 353
Зарегистрирован: 10.03.2022
Мои дополнения: 19th19th
Поблагодарил: 103 раз
Спасибо: 182 раз
Контактная информация:

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

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

v.andrey.1966 писал(а): 22 апр 2026, 07:56 Взламывали? 
возможно просто боты пытались заходить, смените логин с admin на что-то менее распространенное 
Выразить благодарность деньгами - liveopencart.ru/pay
v.andrey.1966
Сообщения: 3
Зарегистрирован: 25.09.2025
Поблагодарил: 2 раз

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

Непрочитанное сообщение v.andrey.1966 »

Сменил, все получилось, спасибо.
Dmitriy
Сообщения: 4
Зарегистрирован: 03.04.2026
Спасибо: 7 раз

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

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

Еще полезная правка, через поиск найти вхождения текста 'date_format_short' для файлов по маске *.php и заменить на 'datetime_format'.
Переменные date_format_short и datetime_format находятся в глобальных файлах локализации: en-gb.php, ru-ru.php и т.д.
 

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

'date_format_short'  соответствует $_['date_format_short']  = 'd/m/Y'; - только дата
'datetime_format' соответствует $_['datetime_format']  = 'd/m/Y - H:i:s'; - дата - время
Результат: везде (в заказах, спиcках, письмах и т.д.) будет нормально отображаться дата - время вместо только даты. Решается куча проблем созданных искусственно. Больше не нужны модификаторы, чтобы отображать дату и время создания и модификации заказа и прочие.
Еще ошибка в admin\controller\search\search.php

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

                foreach($data['manufacturers'] as $key => $manufacturer){
                    if(!empty($category['image'])) { // здесь ошибка, должно быть if (!empty($manufacturer['image'])) {
                        $data['manufacturers'][$key]['image'] = $this->model_tool_image->resize($manufacturer['image'], 30, 30);
                    }
                    else{
                        $data['manufacturers'][$key]['image'] = $this->model_tool_image->resize('no_image.png', 30, 30);
                    }

                    $data['manufacturers'][$key]['url'] = $this->url->link('catalog/manufacturer/edit', 'user_token=' . $this->session->data['user_token'] . '&manufacturer_id=' . $manufacturer['manufacturer_id'], true);
                }
должно быть так

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

				foreach ($data['manufacturers'] as $key => $manufacturer) {
					if (!empty($manufacturer['image'])) {
						$data['manufacturers'][$key]['image'] = $this->model_tool_image->resize($manufacturer['image'], 30, 30);
					} else {
						$data['manufacturers'][$key]['image'] = $this->model_tool_image->resize('no_image.png', 30, 30);
					}

					$data['manufacturers'][$key]['url'] = $this->url->link('catalog/manufacturer/edit', 'user_token=' . $this->session->data['user_token'] . '&manufacturer_id=' . $manufacturer['manufacturer_id'], true);
				}
также в конце метода перед $this->response->setOutput(json_encode($json)); нужно добавить $this->response->addHeader('Content-Type: application/json');

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

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
 
Последний раз редактировалось Dmitriy 22 апр 2026, 19:02, всего редактировалось 2 раза.
Dmitriy
Сообщения: 4
Зарегистрирован: 03.04.2026
Спасибо: 7 раз

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

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

Еще ошибки файл admin\model\localisation\language.php
нет закрывающей кавычки в запросе

 

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

		foreach ($query->rows as $recurring) {
			$this->db->query("INSERT INTO " . DB_PREFIX . "recurring_description SET recurring_id = '" . (int)$recurring['recurring_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($recurring['name'])); // ошибка
		}
должно быть так
 

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

		foreach ($query->rows as $recurring) {
			$this->db->query("INSERT INTO " . DB_PREFIX . "recurring_description SET recurring_id = '" . (int)$recurring['recurring_id'] . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($recurring['name'])."'");
		}
Еще исправьте опечатку файлы admin\model\extension\report\sale.php, admin\model\extension\report\return.php возможно еще где-то встречается. Тут нужно пройтись поиском с регулярным выражением чтобы найти конструкции типа case 'day'; точка с запятой (;) вместо двоеточия (:). Работать будет (допустимый синтаксис), но не красиво и лучше исправить. Мало ли что измениться в будущем. Пример кода admin\model\extension\report\sale.php
 

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

		switch($group) {
			case 'day';
				$sql .= " GROUP BY YEAR(o.date_added), MONTH(o.date_added), DAY(o.date_added), ot.title";
				break;
			default:
			case 'week':
				$sql .= " GROUP BY YEAR(o.date_added), WEEK(o.date_added), ot.title";
				break;
			case 'month':
				$sql .= " GROUP BY YEAR(o.date_added), MONTH(o.date_added), ot.title";
				break;
			case 'year':
				$sql .= " GROUP BY YEAR(o.date_added), ot.title";
				break;
		}
Код встречается по несколько раз в одном файле, поэтому лучше пройтись поиском, чтобы ничего не пропустить. Ошибка копипаста. Опечатка была скопирована и попала везде где использовался фрагмент.

Еще ошибка catalog\controller\product\category.php ошибка ; после фигурной скобки. Возможно встречается еще где-то. Поищите поиском. Только внимательно, есть определение функций там точка с запятой должна быть. 

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

                if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
                    $server = $this->config->get('config_ssl');
                } else {
                    $server = $this->config->get('config_url');
                }; // ошибка ; после фигурной скобки
Последний раз редактировалось Dmitriy 22 апр 2026, 22:16, всего редактировалось 2 раза.
Аватара пользователя
Tom
Разработчик дополнений
Сообщения: 282
Зарегистрирован: 10.03.2022
Откуда: Казахстан - Алматы
Поблагодарил: 17 раз
Спасибо: 123 раз
Контактная информация:

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

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

В сборке до сих присутствует Яндекс Турбо. Сервис который почил еще летом 2025 года. Может есть смысл убрать его уже.
Dmitriy
Сообщения: 4
Зарегистрирован: 03.04.2026
Спасибо: 7 раз

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

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

Файл admin\model\catalog\category.php содержит  два неиспользуемых метода, которые можно удалить
public function getCategoryRelated($category_id) {...}
public function getCategoryRelated_article($category_id) {...}
Лишние DELETE внутри цикла editCategory()
 

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

		$this->db->query("DELETE FROM " . DB_PREFIX . "product_related_wb WHERE category_id = '" . (int)$category_id . "'");
	
		if (isset($data['product_related'])) {
			foreach ($data['product_related'] as $related_id) {
				$this->db->query("DELETE FROM " . DB_PREFIX . "product_related_wb WHERE category_id = '" . (int)$category_id . "' AND product_id = '" . (int)$related_id . "'"); // После полного удаления по category_id выше, точечное удаление уже ничего не делает.
				$this->db->query("INSERT INTO " . DB_PREFIX . "product_related_wb SET category_id = '" . (int)$category_id . "', product_id = '" . (int)$related_id . "'");
				
	
			}
		}
		
		$this->db->query("DELETE FROM " . DB_PREFIX . "article_related_wb WHERE category_id = '" . (int)$category_id . "'");
	
		if (isset($data['article_related'])) {
			foreach ($data['article_related'] as $related_id) {
				$this->db->query("DELETE FROM " . DB_PREFIX . "article_related_wb WHERE category_id = '" . (int)$category_id . "' AND article_id = '" . (int)$related_id . "'"); // После полного удаления по category_id выше, точечное удаление уже ничего не делает.
				$this->db->query("INSERT INTO " . DB_PREFIX . "article_related_wb SET category_id = '" . (int)$category_id . "', article_id = '" . (int)$related_id . "'");
				
	
			}
		}
Автодополнение и фильтр в категориях требует исправления, ищет только по началу, нужно вводить весь путь, напр. "Components > Monitors > test 1"  а не по любой части или "Components > Monitors" или "Monitors" или "test 1". Заменить соответствующие методы на
 

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

	public function getCategories($data = array()) {
		$language_id = (int)$this->config->get('config_language_id');

		$sql = "
		SELECT
			cp.category_id AS category_id,
			GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR '  >  ') AS name,
			GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR ' > ') AS search_name,
			c1.parent_id,
			c1.sort_order,
			c1.noindex
		FROM " . DB_PREFIX . "category_path cp
		LEFT JOIN " . DB_PREFIX . "category c1
			ON (cp.category_id = c1.category_id)
		LEFT JOIN " . DB_PREFIX . "category_description cd1
			ON (cp.path_id = cd1.category_id)
		LEFT JOIN " . DB_PREFIX . "category_description cd2
			ON (cp.category_id = cd2.category_id)
		WHERE cd1.language_id = '" . $language_id . "'
			AND cd2.language_id = '" . $language_id . "'
	";

		$sql .= " GROUP BY cp.category_id";

		if (!empty($data['filter_name'])) {
			$filter_name = trim($data['filter_name']);

			$sql .= " HAVING search_name LIKE '%" . $this->db->escape($filter_name) . "%'";
		}

		$sort_data = array(
		'name',
		'sort_order',
		'noindex'
		);

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			$sql .= " ORDER BY " . $data['sort'];
		} else {
			$sql .= " ORDER BY sort_order";
		}

		if (isset($data['order']) && ($data['order'] == 'DESC')) {
			$sql .= " DESC";
		} else {
			$sql .= " ASC";
		}

		if (isset($data['start']) || isset($data['limit'])) {
			if (!isset($data['start']) || $data['start'] < 0) {
				$data['start'] = 0;
			}

			if (!isset($data['limit']) || $data['limit'] < 1) {
				$data['limit'] = 20;
			}

			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
		}

		$query = $this->db->query($sql);

		return $query->rows;
	}
и

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

public function getTotalCategories($data = array()) {
	$language_id = (int)$this->config->get('config_language_id');

	$sql = "
		SELECT COUNT(*) AS total
		FROM (
			SELECT
				cp.category_id,
				GROUP_CONCAT(cd1.name ORDER BY cp.level SEPARATOR ' > ') AS search_name
			FROM " . DB_PREFIX . "category_path cp
			LEFT JOIN " . DB_PREFIX . "category_description cd1
				ON (cp.path_id = cd1.category_id)
			LEFT JOIN " . DB_PREFIX . "category_description cd2
				ON (cp.category_id = cd2.category_id)
			WHERE cd1.language_id = '" . $language_id . "'
				AND cd2.language_id = '" . $language_id . "'
			GROUP BY cp.category_id
	";

	if (!empty($data['filter_name'])) {
		$sql .= " HAVING search_name LIKE '%" . $this->db->escape(trim($data['filter_name'])) . "%'";
	}

	$sql .= "
		) AS category_total
	";

	$query = $this->db->query($sql);

	return (int)$query->row['total'];
}	
Аватара пользователя
liveopencart
liveopencart.ru
Сообщения: 353
Зарегистрирован: 10.03.2022
Мои дополнения: 19th19th
Поблагодарил: 103 раз
Спасибо: 182 раз
Контактная информация:

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

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

Dmitriy писал(а): 25 апр 2026, 16:41 Автодополнение и фильтр в категориях требует исправления, ищет только по началу

Скриншот-20260427-160611.jpg
Скриншот-20260427-160611.jpg (25.29 КБ) 50 просмотров
Выразить благодарность деньгами - liveopencart.ru/pay
Dmitriy
Сообщения: 4
Зарегистрирован: 03.04.2026
Спасибо: 7 раз

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

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

liveopencart писал(а): 27 апр 2026, 14:06
Dmitriy писал(а): 25 апр 2026, 16:41 Автодополнение и фильтр в категориях требует исправления, ищет только по началу

Скриншот-20260427-160611.jpg
Не точно описал проблему. Попробуйте ввести первую категорию сначала слово Для, потом только второе слово -дома (обратите внимание как меняется результат от количества введенных букв), и посмотрите результат. Попробуйте найти вторую категорию из трех. Результат непредсказуемый.
Попробуйте test 20 найти. Выведет только то, где заканчивается на test 20, а Обувь > test 20 > test 25 не покажет.
Спойлер
Screenshot_2026_04_27-1.png
Screenshot_2026_04_27-1.png (30.29 КБ) 8 просмотров
Screenshot_2026_04_27-2.png
Screenshot_2026_04_27-2.png (22.1 КБ) 8 просмотров
Screenshot_2026_04_27-3.png
Screenshot_2026_04_27-3.png (16.48 КБ) 8 просмотров
Видео
https://ru.files.fm/f/yqphbww9s5
Ответить