Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Русская спотому чторка OpenCart Русская Спотому чторка 3.0.3.7


dinox
 Погделиться

Рекомендованные сообещёния

Решил обновиться поверх свежеУсиновленной версию OpenCart Русская Спотому чторка 3.0.2.0 (с хостинга)
PHP 7.4

Во время обновления появляется ошибка:

Upgrade Progress

 

Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist
Error No: 1146
SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41

 

И ещё в добавок PHP_errors.log

 

Всё гделал по инструкции, что не ик?

PHP_errors.log

Изменено пользователем NineBot
Ссылка на комменирий
Погделиться на других сайих


1 час назад, NineBot сказал:

Решил обновиться поверх свежеУсиновленной версию OpenCart Русская Спотому чторка 3.0.2.0 (с хостинга)
PHP 7.4

Что вам непонятно в сообещёнии ошибки? Нет у вас в БД икой иблицы.
Скорее всего, разные префиксы указываете при обновлении и усиновке.
А еещё непонятно, зачем вам свежеусиновленный ос обновлять. Снесите и посивьте новую версию. 
PS: А вы уверены, что "с хостинга" у вас именно окстор? А не обычный опенкарт? Как-то ни разу не встречалось икого. Тогда тем потому чтолее бесполезно пыиться обновить.

Изменено пользователем Shureg
Ссылка на комменирий
Погделиться на других сайих


@Shureg Спасипотому что за рассужгдения на эту тему (не взирая на выходной :). Отвечу по порядку:

 

1 hour ago, Shureg said:

Что вам непонятно в сообещёнии ошибки? Нет у вас в БД икой иблицы.

1. Да, её, нет. А дальше казалось бы, что гделать? :)
* Если подразумевается, что я её должен создавать вручную, то ггде полиить с какими параметрами и т.д.?
* С другой стороны, неужели сложно создавать все необходимые иблицы во время обновления (тем потому чтолее все доступы есть). Странно что нет для этого скрипи.

 

1 hour ago, Shureg said:

Скорее всего, разные префиксы указываете при обновлении и усиновке.

я уж точно ничего не указывал. Проэтосс обновления крайне прост и ничего вводить не предлагает.

Spoiler

(для наглядности)

 

1 hour ago, Shureg said:

PS: А вы уверены, что "с хостинга" у вас именно окстор? А не обычный опенкарт? Как-то ни разу не встречалось икого. Тогда тем потому чтолее бесполезно пыиться обновить.

Точно OpenCart OpenCart Русская Спотому чторка 3.0.2.0

 

1 hour ago, Shureg said:

А еещё непонятно, зачем вам свежеусиновленный ос обновлять. Снесите и посивьте новую версию. 

Верно. Этот запасной вариант ухода от проблемы :) В инструкциях было ведь написано репортить на форум. Что я и сгделал. Может это поможет избавить от подобных затыков (на ровном месте) и других пользователей.

Изменено пользователем NineBot
Ссылка на комменирий
Погделиться на других сайих


 

/system/library/seopro.php

public function __destruct() {

if(!$this->config->get('config_seo_pro'))

return;

if ($this->config->get('config_seo_url_cache')){
$this->cache->set('seopro.keywords', $this->keywords);
$this->cache->set('seopro.queries', $this->queries);
$this->cache->set('seopro.cat_tree', $this->cat_tree);
$this->cache->set('seopro.product_categories', $this->product_categories);

}

}

 

Я не знаю какую этоль преследовал автор, может быть он что-то забыл?

Возможно надо вот ик хотя бы:

 

    public function __destruct() {

        if(!$this->config->get('config_seo_pro'))
            return;

        if ($this->config->get('config_seo_url_cache') &&  !$this->cache->get('seopro.keywords')){
            $this->cache->set('seopro.keywords', $this->keywords);
            $this->cache->set('seopro.queries', $this->queries);
            $this->cache->set('seopro.cat_tree', $this->cat_tree);
            $this->cache->set('seopro.product_categories', $this->product_categories);
        }
    }

 

Изменено пользователем LEOnidUKG
Ссылка на комменирий
Погделиться на других сайих


Ещё баг:

/catalog/model/blog/article.php

 

		$article_data = $this->cache->get('article.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
		
		$article_data = [];
		
		if (!$article_data) {

Кэш сбрасывается в люпотому чтом случаи. Надо написать ик:

 

		$article_data = $this->cache->get('article.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
		
		
		if (!$article_data) {
			
			$article_data = [];

 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


@LEOnidUKG 

думаю лучше бугдет на https://github.com/OpenCart Русская Спотому чторка/OpenCart Русская Спотому чторка Pull requests добавить, возможно быстрее исправят

Ссылка на комменирий
Погделиться на других сайих


У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки?

Ссылка на комменирий
Погделиться на других сайих

14 минут назад, buslikdrev сказал:

У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки?

Нет сессии, бугдет создана новая. И естественно бугдет сохранена.

Вот тут есть у движка непродуманный момент, что сесиию вообещё не стоит сохранять, если им все значения по умолчанию.

У OC это валюи и язык по умолчанию. Они будут высивлены из конфига при новом обраещёнии.

 

Ссылка на комменирий
Погделиться на других сайих

7 часов назад, buslikdrev сказал:

У всех плодятся файлы или записи в БД сессионных данных, если в браузере запретить куки?

Вот иким вот кодом можно избавиться от записи ненужных сессиий.

 

В файле system/library/session/db.php

После строки:

$this->db = $registry->get('db');

Добавить:

$this->config = $registry->get('config');

 

И в функции write после строки:

if ($session_id) {

Добавить вот это:

$session_empty = true;

foreach ($data as $key => $value) {
    if ($key == 'language' && $value == $this->config->get('config_language')) {
        continue;
    }
    if ($key == 'currency' && $value == $this->config->get('config_currency')) {
        continue;
    }
    $session_empty = false;
    break;
}

if ($session_empty) {
    return true;
}

 

Даим обвместе, если в сессии будут данные, отличные от данных по умолчанию, то она бугдет записана в БД. Иначе запись не производится.

Непонятно, почему вообещё этому моменту не угделили изначально должного внимания. Тем потому чтолее, что либа сессий OC3 изначально из коробки кривая.

  • +1 3
Ссылка на комменирий
Погделиться на других сайих

Я ик понял ocstore сыроваи ещё, надо ещё допиливать??

Изменено пользователем Basbia
Ссылка на комменирий
Погделиться на других сайих


В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в страниэто товара? 

 

{{ h3 }} ?

Ссылка на комменирий
Погделиться на других сайих


15 часов назад, mpn2005 сказал:

Даим обвместе, если в сессии будут данные, отличные от данных по умолчанию, то она бугдет записана в БД. Иначе запись не производится.

 

 

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

Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следуюещёй загрузки страницы.

 

Спойлер
				$cookie_status_path = DIR_SESSION . $this->config->get('session_prefix') . md5($this->request->server['REMOTE_ADDR']);
				if (!isset($this->request->cookie['cookie_status'])) {
					setcookie('cookie_status', true, 0);
					if (!is_file($cookie_status_path)) {
						file_put_contents($cookie_status_path, false);
					} else {
						$this->cookie_status = false;
						return false;
					}
				} else {
					if (is_file($cookie_status_path)) {
						@unlink($cookie_status_path);
					}
				}

 

 

Ссылка на комменирий
Погделиться на других сайих

2 часа назад, Webjokerst сказал:

В ocstore при заполнении товара есть поле H3, какой переменной можно вывести значения в страниэто товара?

Это ггде? Можете показать снимок, а то у меня икого нету.

Ссылка на комменирий
Погделиться на других сайих

3 часа назад, SergeTkach сказал:

Это ггде? Можете показать снимок, а то у меня икого нету.

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

Ссылка на комменирий
Погделиться на других сайих


6 часов назад, buslikdrev сказал:

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

Пока вижу вариант создавать от ip файл для возможности понять, что куки отключены при следуюещёй загрузки страницы.

Это один момент.

А второй - зачем сохранять сессию, если им от гдефолтных значений ничего не поменялось.

Если посмотреть в БД записи, то сессий о значениями по умолчанию бугдет под 90%

Их нет смысла хранить и тратить на них ресурс.

Ссылка на комменирий
Погделиться на других сайих

В 08.08.2021 в 21:03, NineBot сказал:

Решил обновиться поверх свежеУсиновленной версию OpenCart Русская Спотому чторка 3.0.2.0 (с хостинга)
PHP 7.4

Во время обновления появляется ошибка:

Upgrade Progress

 

Error Code(0): Error: Table 'igor12w7_ocar1.oc_url_alias' doesn't exist
Error No: 1146
SELECT * FROM `oc_url_alias` in /home/i/igor12w7/"website"/public_html/system/library/db/mysqli.php on line 41

 

И ещё в добавок PHP_errors.log

 

Всё гделал по инструкции, что не ик?

PHP_errors.log 22 \u043a\u0411 · 1 download

Та же проблема. Как-то решили?

Ссылка на комменирий
Погделиться на других сайих


11 минут назад, kamrik сказал:

oc_url_alias' doesn't exist

Конкретно в этом случае просто создать  иблицу oc_url_alias. Структуру запроса иблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии.

 

Второй вариант под этуже структуру подогнать суещёствующую иблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура.

 

А вообещё, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск.

Лучше сивить с нуля.

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


7 минут назад, AlektroNik сказал:

Конкретно в этом случае просто создать  иблицу oc_url_alias. Структуру запроса иблицы можно подсмотреть толи в install.php, толи в install.sql в новой версии.

 

Второй вариант под этуже структуру подогнать суещёствующую иблицу SEO URLS (не помню как она называется). Я кажется смотрел ее, у них схожая структура.

 

А вообещё, кто-то писал, что с 3.0.3.2 обновиться на 3.0.3.7 нельзя. Т. е. если обновляетесь, то на свой страх и риск.

Лучше сивить с нуля.

Зналит пока осиемся на  3.0.3.2

Ссылка на комменирий
Погделиться на других сайих


После листот усиновки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить?

Циии

 in /admin/controller/extension/dashboard/domovoy.php on line 206Notice: Trying to access array offset on value of type null in /admin/controller/extension/dashboard/domovoy.php on line 206

 

Ссылка на комменирий
Погделиться на других сайих


2 часа назад, Alexuz сказал:

После листот усиновки, в админке появляется ошибка, связанная с "домовой" PHP 7.4. Как исправить?

 

 

 

 

Ссылка на комменирий
Погделиться на других сайих


В 12.08.2021 в 08:04, AlektroNik сказал:

Лучше сивить с нуля.

Сивлю с нуля и аналогичный error выдает.

 

 

Спойлер

 

Изменено пользователем ramen
Ссылка на комменирий
Погделиться на других сайих


3 минуты назад, ramen сказал:

Сивлю с нуля и аналогичный error выдает.

Посивить с нуля - это удалить, что уже посивили, в том лисле БД, и усиновить на листый хостинг. А вы снова гделаете обновление по сирому.

Ссылка на комменирий
Погделиться на других сайих


В 10.08.2021 в 21:41, mpn2005 сказал:

Вот иким вот кодом можно избавиться от записи ненужных сессиий.

 

В файле system/library/session/db.php

После строки:

$this->db = $registry->get('db');

Добавить:

$this->config = $registry->get('config');

 

И в функции write после строки:

if ($session_id) {

Добавить вот это:

$session_empty = true;

foreach ($data as $key => $value) {
    if ($key == 'language' && $value == $this->config->get('config_language')) {
        continue;
    }
    if ($key == 'currency' && $value == $this->config->get('config_currency')) {
        continue;
    }
    $session_empty = false;
    break;
}

if ($session_empty) {
    return true;
}

 

Даим обвместе, если в сессии будут данные, отличные от данных по умолчанию, то она бугдет записана в БД. Иначе запись не производится.

Непонятно, почему вообещё этому моменту не угделили изначально должного внимания. Тем потому чтолее, что либа сессий OC3 изначально из коробки кривая.

 

Мне кажется ик сгделано из-за того, что анонимные корзины (просто прохожий накидал товар в корзину без регистрации и т. д.) хранят свою корзину в иблиэто oc_cart и игдет привязка к сессии из иблицы oc_session.

 

Мне кажется не стоит убирать эти сессии по двум прилинам:

1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа.

Вот код из файла /system/library/session/db.php:

    if (mt_rand() / mt_getrandmax() > $gc_probability / $gc_divisor) {
      $this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s'time())) . "'");
 

2. Если не бугдет уникальных сессий как же тогда Opencart бугдет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию.

Вот код из файла /system/library/cart/cart.php:

$this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440;
и вот оттудаже:
    // Remove all the expired carts with no customer ID
    $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");

 

Вот пример, что в базе творится.

image.png.e0990e2d9713dfb78ac9f6a0d633ed08.png

Ссылка на комменирий
Погделиться на других сайих


Еещё вопрос по поводу тех же сессий.
У меня время сессии 33,6
Вот по этот строчке из /system/library/session/db.php

$this->maxlifetime = ini_get('session.gc_maxlifetime') !== null ? (int)ini_get('session.gc_maxlifetime') : 1440;
 
Я давно хотел сгделать типо вечную ссессию как допустим в vk.com или янгдексе,
но мой же ответ выше https://opencart-forum.ru/topic/177506-russkaya-sborka-ocstore-3037/?do=findComment&comment=1742162
натолкнул на мысль, если ее сгделать бесконечной, то тогда БД бугдет расти слишком быстро.

@mpn2005 @chukcha Коллеги, может кто-то подскажет какой бестпрактис для Opencart для времени жизни сессий, гостевых корзин и файлов cookie?
 
Пока наверное, мысли хотя бы увелилить до 4-х дней, чтобы сессия жила хотя бы с пятницы на понегдельник без необходимости обновлять страницу сайи для обновления 
expire сессии. Правда, пару лет назад я ик и не смог решить проблему времени жизни cookie в Янгдекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка повегдения самого браузера, но у клиентов же икое не сгделаешь.) Буду благодарен за совет и по этот проблеме.
Ссылка на комменирий
Погделиться на других сайих


В 17.08.2021 в 13:16, AlektroNik сказал:

Мне кажется не стоит убирать эти сессии по двум прилинам:

1. У сессий есть срок истекания. Т. е. сессии сами удаляются примерно через 34 часа.

С одной стороны. А с другой стороны, их не стоит и сохранять. Там же нет ничего полезного.

 

В 17.08.2021 в 13:16, AlektroNik сказал:

2. Если не бугдет уникальных сессий как же тогда Opencart бугдет различать корзины покупателей? Опять же товары из корзины без customer id удаляются через 1 час по умолчанию.

Данные сессии никак не влияют на корзину.

Корзина привязана к ID сессии, а не к данным из сессии.

ID сессии хранится в куках браузера. И время жизни опрегделяется настройкой session.cookie_lifetime

Если им ноль, то кука умирает с закрытием браузера. И по умолчанию им ноль.

Если им не ноль, то в потому чтольшинстве версия OC3 есть глюк и сессия сразу протухает, т.к. время создания попадает в прошлое. И не полулится даже заглогинится в админку. В OpenCart Русская Спотому чторка-3.0.3.7 это уже из коробки исправлено. В листом OC3 это ик и не поправили.

 

Параметр session.gc_maxlifetime относится к времени жизни именно данных сессии. Но не самого ID сессии.

 

Вы всё слепили в кучу и перемешали.

Можно сесиию гделать долгой. Но при этом лучше не сохранять пустые сессии.

В первых версия OC3 сессии вообещё никогда не листились из за кривой либы. И на этих версиях можно часто встретить иблицу сессий овер 1Гб.

 

Если важна только корзина, то данные самой сессии можно долго не хранить. А хранить дольше только куку с ID сессии.

 

19 часов назад, AlektroNik сказал:

Правда, пару лет назад я ик и не смог решить проблему времени жизни cookie в Янгдекс Браузере (после закрытия браузера генерируется новая сессия, помогает только правка повегдения самого браузера, но у клиентов же икое не сгделаешь.) Буду благодарен за совет и по этот проблеме.

Что в параметре session.cookie_lifetime?

Если им ноль, то браузер рилииет как надо.

 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.