ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
- liveopencart
- liveopencart.ru
- Сообщения: 353
- Зарегистрирован: 10.03.2022
- Мои дополнения: 19th19th
- Поблагодарил: 103 раз
- Спасибо: 182 раз
- Контактная информация:
ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
## 18.03.2026
* Версия сборки изменена на 3.0.4.3
* Добавлен модуль Яндекс.Капча
* Во многих разделах админки добавлена колонка статуса
* Добавлена переменная IS_LIVESTORE для определения сборки разработчиками
* Логотип и название сборки теперь кириллицей
* Исправление принадлежности регионов
* Улучшения перевода
* Прочие небольшие улучшения кода
Спасибо: Spectrum, Tom, Serbulenko
Скачать:
https://liveopencart.ru/img/livestore-3.0.4.3.zip
* Версия сборки изменена на 3.0.4.3
* Добавлен модуль Яндекс.Капча
* Во многих разделах админки добавлена колонка статуса
* Добавлена переменная IS_LIVESTORE для определения сборки разработчиками
* Логотип и название сборки теперь кириллицей
* Исправление принадлежности регионов
* Улучшения перевода
* Прочие небольшие улучшения кода
Спасибо: Spectrum, Tom, Serbulenko
Скачать:
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 - обсуждение
Спасибо за развитие, Тестанул и откатился обратно.... 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
Админка работает и делает дальше по инструкции обновления

Сразу сайт работал, но в админку попасть не мог... поиск привел
Полезное:
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 - обсуждение
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 - обсуждение
Вроде бы читал что исправлено, на странице успешного оформления заказа
heading_title_customer
Но скачал на днях и проверил и проблема осталась
LiveStore-main\upload\catalog\language\ru-ru\checkout\success.php
Да и в английской версии, напрочь отсутствует
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 - обсуждение
пока сделано только в новом 3.0.4.4, доступном на гитеTom писал(а): ↑11 апр 2026, 22:13 Вроде бы читал что исправлено, на странице успешного оформления заказа
heading_title_customer
Но скачал на днях и проверил и проблема осталась
LiveStore-main\upload\catalog\language\ru-ru\checkout\success.php
Да и в английской версии, напрочь отсутствует
Код: Выделить всё
$_['heading_title_customer'] = 'Ваш заказ #%s сформирован!';
Выразить благодарность деньгами - liveopencart.ru/pay
Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
Здравствуйте. Помогите пожалуйста, При попытке изменить что-либо через редактор перевода вылазит ошибка - Notice: Undefined index: key in ***/public_html/admin/controller/design/translation.php on line 412
Но если и получается сохранить то значение меняется и отображается на сайте, но как только я пытаюсь изменить еще какой-то другой ключ то изменения сбрасываются и на то что было сохранено. Откатывыться не охота, может есть какой-то фикс? По интернету пошарился, единственное обсуждение с именно такой ошибкой на гитхабе в ветке опенкарт и то закрытое уже.
И вот интересный момент, он просит три символа, но их то два..

И вот интересный момент, он просит три символа, но их то два..

Последний раз редактировалось 16Gb 17 апр 2026, 17:29, всего редактировалось 2 раза.
Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
Найдите во всем коде подобные условия
и удалите первое условие (utf8_strlen($value...) < 0). Функция mb_strlen возвращает количество символов в строке, и это всегда целое число ≥ 0.
Поэтому проверка меньше 0 никогда не выполнится и фактически ничего не проверяет.
Код: Выделить всё
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)) {
...
}
Поэтому проверка меньше 0 никогда не выполнится и фактически ничего не проверяет.
- liveopencart
- liveopencart.ru
- Сообщения: 353
- Зарегистрирован: 10.03.2022
- Мои дополнения: 19th19th
- Поблагодарил: 103 раз
- Спасибо: 182 раз
- Контактная информация:
Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
Будет исправлено в 3.0.4.416Gb писал(а): ↑17 апр 2026, 16:24
Здравствуйте. Помогите пожалуйста, При попытке изменить что-либо через редактор перевода вылазит ошибка - Notice: Undefined index: key in ***/public_html/admin/controller/design/translation.php on line 412Но если и получается сохранить то значение меняется и отображается на сайте, но как только я пытаюсь изменить еще какой-то другой ключ то изменения сбрасываются и на то что было сохранено. Откатывыться не охота, может есть какой-то фикс? По интернету пошарился, единственное обсуждение с именно такой ошибкой на гитхабе в ветке опенкарт и то закрытое уже.
И вот интересный момент, он просит три символа, но их то два..
Выразить благодарность деньгами - liveopencart.ru/pay
Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
Исправьте в admin\controller\blog\setting.php
маршрут для кнопки отмена, 'setting/store' это явно не то, что нужно
на
и неправильну проверку прав доступа
на
маршрут для кнопки отмена, '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 - обсуждение
Сегодня при входе в админку вылетело. Предупреждение: вы превысили допустимое количество попыток входа в систему. Пожалуйста, повторите попытку через 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 - обсуждение
возможно просто боты пытались заходить, смените логин с admin на что-то менее распространенное
Выразить благодарность деньгами - liveopencart.ru/pay
-
v.andrey.1966
- Сообщения: 3
- Зарегистрирован: 25.09.2025
- Поблагодарил: 2 раз
Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
Еще полезная правка, через поиск найти вхождения текста 'date_format_short' для файлов по маске *.php и заменить на 'datetime_format'.
Переменные date_format_short и datetime_format находятся в глобальных файлах локализации: en-gb.php, ru-ru.php и т.д.
Результат: везде (в заказах, спиcках, письмах и т.д.) будет нормально отображаться дата - время вместо только даты. Решается куча проблем созданных искусственно. Больше не нужны модификаторы, чтобы отображать дату и время создания и модификации заказа и прочие.
Еще ошибка в admin\controller\search\search.php
должно быть так
также в конце метода перед $this->response->setOutput(json_encode($json)); нужно добавить $this->response->addHeader('Content-Type: application/json');
Переменные 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'; - дата - время
Еще ошибка в 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->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
Последний раз редактировалось Dmitriy 22 апр 2026, 19:02, всего редактировалось 2 раза.
Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
Еще ошибки файл admin\model\localisation\language.php
нет закрывающей кавычки в запросе
должно быть так
Еще исправьте опечатку файлы admin\model\extension\report\sale.php, admin\model\extension\report\return.php возможно еще где-то встречается. Тут нужно пройтись поиском с регулярным выражением чтобы найти конструкции типа case 'day'; точка с запятой (;) вместо двоеточия (:). Работать будет (допустимый синтаксис), но не красиво и лучше исправить. Мало ли что измениться в будущем. Пример кода admin\model\extension\report\sale.php
Код встречается по несколько раз в одном файле, поэтому лучше пройтись поиском, чтобы ничего не пропустить. Ошибка копипаста. Опечатка была скопирована и попала везде где использовался фрагмент.
Еще ошибка catalog\controller\product\category.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'])."'");
}
Код: Выделить всё
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 - обсуждение
В сборке до сих присутствует Яндекс Турбо. Сервис который почил еще летом 2025 года. Может есть смысл убрать его уже.
Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
Файл admin\model\catalog\category.php содержит два неиспользуемых метода, которые можно удалить
public function getCategoryRelated($category_id) {...}
public function getCategoryRelated_article($category_id) {...}
Лишние DELETE внутри цикла editCategory()
Автодополнение и фильтр в категориях требует исправления, ищет только по началу, нужно вводить весь путь, напр. "Components > Monitors > test 1" а не по любой части или "Components > Monitors" или "Monitors" или "test 1". Заменить соответствующие методы на
и
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 . "'");
}
}
Код: Выделить всё
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.ru/pay
Re: ЛайвСтор Liveopencart 3.0.4.3 - обсуждение
Не точно описал проблему. Попробуйте ввести первую категорию сначала слово Для, потом только второе слово -дома (обратите внимание как меняется результат от количества введенных букв), и посмотрите результат. Попробуйте найти вторую категорию из трех. Результат непредсказуемый.
Попробуйте test 20 найти. Выведет только то, где заканчивается на test 20, а Обувь > test 20 > test 25 не покажет.