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

ocStore 3.0.3.7 - Модифицированный OpenCart


dinox
 Поделиться

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

8 минут назад, zhu4koff сказал:

 

возможно будет интересно посмотреть модуль и потом пообщаться с его автором

 

 

 

 

Спасибо за совет, прикольный модуль.
Но по факту я знаю как увеличить время жизни корзины для гостей.
Основная сложность у меня определиться указанием времени жизни сессии и временем жизни cookie. 

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


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

Может кинете Pull Request в git OcStore?

Сделан ещё в октябре 2020

https://github.com/ocStore/ocStore/pull/39

 

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

2. Вот с временем жизни сессии и куков немного в затруднении. Обычно все ставят одинаковое число. Я поставил время жизни сессий 4 дня, чтобы они из базы вычищались, т. к. один фиг их по кукам с тем же номером сессии опять в базу пропишет OcStore. Но что-то мне подсказывает что люди все же не с проста делают одинаковые значения у этих параметров.

    # 1 год = 31 536 000
    php_value session.cookie_lifetime 31536000
    # 4 Дня равно 345600 секунд
    php_value session.gc_maxlifetime 345600

 

Тут по сути всё индивидуально. Удобно когда клиент повторно заходит на сайт и его не выкидывает из личного кабинета.

Если не сохранять пустые сессии, то записей в БД станет существенно меньше, и можно будет сделать сессию подлинеее.

Если клиент заходит на сайт раз в месяц, то не помешало бы хранить сессию пару месяцев.

Тут всё ещё зависит от ресурсов вашего хостинга, от посещаемости и т.д.

Есть запас по ресурсам делайте храните сессию дольше. Это удобство клиентов. А удобство клиента может увеличить количество ваших заказов.

 

Насчёт одинакового значения, тут странное утверждение. Многие даже не понимают сути данных параметров и как с ними работает движок конкретной версии.

В cookie_lifetime по дефолту вообще ноль торчит. И его ненулевое состояние сразу делает невозможным логин в админку на чистом OpenCaert3

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

С включенным Seo Pro не сохраняется на странице сайта выбранный язык.

 

С включенным  Seo Pro выбранный язык на странице сайта сохраняется только в рамках сессии.

Если зайти на сайт в новой вкладке, то язык сбрасывается на русский. Хотя в куках сайта правильно прописывается нужный выбранный язык.

С отключенным Seo Pro все работает как надо, язык запоминается и выводится при последующим заходе на сайт.

 

Кто-нибудь сталкивался с такой проблемой? Тестил на 3.0.3.7 и также на  3.0.2.0.

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


13 часов назад, mpn2005 сказал:
17 часов назад, AlektroNik сказал:

Может кинете Pull Request в git OcStore?

Сделан ещё в октябре 2020

https://github.com/ocStore/ocStore/pull/39

Действительно, видимо эти изменения с 3.0.3.2 в 3.0.3.7 не перенесли. Как минимум часть.

Сейчас поковыряюсь еще.

Можете эти пул реквесты отправить в ветку 3.0.3.7?

 

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

Если клиент заходит на сайт раз в месяц, то не помешало бы хранить сессию пару месяцев.

Да так и сделаю, спасибо.

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

Насчёт одинакового значения, тут странное утверждение. Многие даже не понимают сути данных параметров и как с ними работает движок конкретной версии.

Вот я и хотел узнать у Вас как на практике лучше.
 

Судя по строчке из комита https://github.com/ocStore/ocStore/pull/39/commits/c8b5bec5ec33a191bb476b16f43a2562d522b3e7 :

 

Получается Вы все же рекомендуете, чтобы время жизни сессии было равно session.cookie_lifetime, иначе будет равно session.gc_maxlifetime.
Получается нет смысла выставлять разное время для этих параметров, одно без другого не живет?
Если я правильно понимаю, схема такая:
Умирает раньше session.gc_maxlifetime -> создается новая сессия -> создается новые cookie с новым ID.

Умирает раньше session.cookie_lifetime -> создается новая сессия -> создается новые cookie с новым ID.


 

 

Получается в моем случае нужно выставить 2 месяца и в том и в том параметре ну и сделать фиксы из Вашего поста выше, чтобы лишние сесси не создавались.:

Я все правильно понял?

session.cookie_lifetime = 5356800

session.gc_maxlifetime = 5356800

 

Я по началу думал, что время жизни куки статичное, а потом заметил, что оно тоже обновляется при обновлении страницы. 😅

 

 

 

 

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


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

Получается Вы все же рекомендуете, чтобы время жизни сессии было равно session.cookie_lifetime, иначе будет равно session.gc_maxlifetime.

Для удобства да. Т.к. если умрут данные сессии, то из ЛК пользователя выкинет.

 

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

Я по началу думал, что время жизни куки статичное, а потом заметил, что оно тоже обновляется при обновлении страницы. 😅

Продлевается. Время жизни идёт с последнего посещения, а не с первого. 

 

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

Можете эти пул реквесты отправить в ветку 3.0.3.7?

В этой версии сборки уже должны быть все правки. По крайней мере в архиве, который опубликован на форуме для скачивания.

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

В 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 изначально из коробки кривая.

 

https://github.com/ocStore/ocStore/pull/39/files

В этом пулреквесте изменения совпадают для двух файлов:

upload/catalog/controller/startup/session.php

upload/system/framework.php

 

А вот upload/system/library/session/db.php кардинально отличается. Я про него говорил Pull requests оформить. Если Вам несложно.

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


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

А вот upload/system/library/session/db.php кардинально отличается. Я про него говорил Pull requests оформить. Если Вам несложно.

Не думаю, что такое кардинальное изменение примут.

 

Есть ещё и другие моменты. Многие модули просмотренных товаров сохраняют данные в сессии, что не очень хорошо. Т.к. при заходе в товар сессия сразу наполняется не очень нужными, но уникальными данными.  Тут лучше сохранять id последних просмотренных в куке браузера, а не в сессии на стороне сервера.

Но это уже на совести авторов таких модулей и шаблонов, где такой функционал встроен из коробки.

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

В 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 изначально из коробки кривая.

 

 

Все поправил, все работает. Файлик перезалил. Можно пользоваться кому нужно.
Очередная благодарность @mpn2005 🤗🍻

 

 

AlektroNik-unnecessary-sessions.ocmod.zip

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


49 минут назад, mpn2005 сказал:

Не думаю, что такое кардинальное изменение примут.

 

Почему-бы и нет. Мне идея понравилась, все обосновано и работает. 🤗🍻 В любом случае спасибо.

 

53 минуты назад, mpn2005 сказал:

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

Но это уже на совести авторов таких модулей и шаблонов, где такой функционал встроен из коробки.

Согласен. Все мои шаблоны так и делают. Просмотренные товары хранят в отдельной cookie.
Так что я голосую "ЗА" Pull request :) 

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


37 минут назад, Dime сказал:

Доброе утро!
После перехода на 3.0.3.7 яндекс стал ругаться на дубли страниц типа      https://site.ru/mebel/stoly/?attrb=101%3D3

Установлен только шаблон, фильтр только дефолтный

Подскажите как убрать эти ссылки?

 

Если я правильно понял, эта ссылка у Вас появляется при выборе конкретного фильтра.
Специально настроил стандартный фильтр.
У меня вот такая ссылка при фильтре https://site.ru/aksessuary/?filter=1, у Вас поченму-то /?attrb=
Скорее всего Вам нужно обратиться к разработчикам шаблона, либо они что-то адаптировали, либо они должны были предусмотреть варианты необходимости индексирования данных страниц.

В идеале у Вас на этой странице внутри <head>...</head> должно быть указание для поискового робота:
<meta name="robots" content="noindex,follow">

 

Второй вариант самостоятельно в файле robots.txt запретить индексацию /?attrb=.

Disallow: /*?attrb=
Disallow: /*&attrb=

Изменено пользователем AlektroNik
Добавил <meta name="robots" content="noindex,follow">
Ссылка на комментарий
Поделиться на других сайтах


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

Так а собственно что далеко ходить...

https://demo3.ocstore.com/desktops/?attrb=101%3D5

И спокойно открывается дубль

Не понимаю что Вы нажимаете чтобы этот атрибут появился? 

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


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

Не понимаю что Вы нажимаете чтобы этот атрибут появился? 

https://demo3.ocstore.com/desktops/?ololo=123

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

2 минуты назад, spectre сказал:

 

53 минуты назад, Dime сказал:

Так а собственно что далеко ходить...

https://demo3.ocstore.com/desktops/?attrb=101%3D5

И спокойно открывается дубль

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

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

Или посмотреть sitemap. Может можуль sitemap скармливает эти ссылки поисковому роботу.

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


2 минуты назад, Dime сказал:

Мне яндекс вебмастер внезапно это как критическую проблему выдал. Получается это все в robots закрывать нужно. Яндекс пишет так, а при переходе ссылки превращаются в https://site.ru/mebel/stoly/?attrb[101]=3

Это похоже на FilterVier

Вам точно нужны страницы фильтрации в индексе?

Лучше запретить их индексацию в роботс.

И этот вопрос уж точно никак не относится к сборке. Лучше создать отдельную тему и не засорять эту.

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

32 минуты назад, mpn2005 сказал:

Это похоже на FilterVier

 

37 минут назад, Dime сказал:

 

Я кстати тоже встречал тему аналогичную. Там упоминался фильтр FilterVier. Но решения проблемы там нет.

 

Получается отстается тольок.

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

Второй вариант самостоятельно в файле robots.txt запретить индексацию /?attrb=.

Disallow: /*?attrb=
Disallow: /*&attrb=

 

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


А где нибудь есть инструкция как правильно и корректно обновиться с версии ocStore 3.0.2.0 ? Что то не нашел

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


40 минут назад, Facebook сказал:

А где нибудь есть инструкция как правильно и корректно обновиться с версии ocStore 3.0.2.0 ? Что то не нашел

Нет и делать это не рекомендуется. Уже неоднократно обсуждалось в этой теме.

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


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

Нет и делать это не рекомендуется. Уже неоднократно обсуждалось в этой теме.

Спасибо. Просто поинтересовался

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


4 минуты назад, nikifalex сказал:

На самом деле обновиться можно с 3.0.2 и особо без проблем, за пару часов, в ручном режиме.

Если это конечно вам нужно, что врядли.

 

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

Спасибо. Просто поинтересовался

В ручном режиме все можно :)

Я например с ocStore 2.3.0.2.3 перехожу на 3.0.3.7.

Но я поставил голый 3.0.3.7 и частично мигрируют таблицы из базы с правками, частично руками переношу (так быстрее). Но нужно еще учитывать, что могут отличаться ID и ссылки в тексте. Поэтому ручной работы много. Не говоря уже о том, что с некоторыми вещами нужно смириться. К примеру, врятли у Вас получится по моей схеме, чтобы ID товаров в заказе совпали с ID товаров в Каталоге. Емли только импортировать и таблицу товаров тоже. Но у нас еще переход с одной стстемы учеты на другую, так что импорт товаров на сайт делаем с нуля.

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


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

у Вас получится по моей схеме

)) Ну как же. Я около 8 сайтов с 1,5 переезжал на 2 ку, и потом с 2-ки на тройку. Короче опыт есть . Да делал через БД все ручками, Но я уж думал что на мноих сайтах существует простой скрипт обновления, а тут столько лет движку и до сих пор нету. Вот так выглядит в адмике, просто кликаешь, жмешь обновиться и готово. Хотя движек тоже бесплатный. Тут же деревня ))


image.png.1333fbce7d927e1c961b3f7aa9088123.png

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


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

К примеру, врятли у Вас получится по моей схеме, чтобы ID товаров в заказе совпали с ID товаров в Каталоге.

Вообще-то надо постараться, чтобы вышло иначе. При копировании таблиц БД оно, внезапно, с теми же id копируется.

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

Емли только импортировать и таблицу товаров тоже.

Вы предлагаете товары не переносить? Странная методика. Видимо, сильно эксклюзивная.
 

 

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

Вот так выглядит в адмике, просто кликаешь, жмешь обновиться и готово. Хотя движек тоже бесплатный. Тут же деревня ))

А смысл делать такую кнопочку, если все равно ни модули, ни темы для разных версий несовместимы? Для новой версии может вообще не быть варианта модуля. Есть скрипты с такой кнопочкой "обновить", которые ограничиваются переносом - модификацией БД, но работает это через раз и все равно проблемы не решает. 

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


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

Вы предлагаете товары не переносить? Странная методика. Видимо, сильно эксклюзивная.

Я же написал, странно, что Вы не дочитали до конца 😁

 

4 часа назад, AlektroNik сказал:

Но у нас еще переход с одной стстемы учеты на другую, так что импорт товаров на сайт делаем с нуля.

Соответственно и ID товаров меняется, и лишние товары в новой системе отсутствуют и т. д.

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


Всем привет! Поставил сборку 3037 и шаблон journal 318 все почистил обновил и тд выдает ошибку 

Notice: Undefined variable: loader in /home/a0486456/domains/savemoto.ru/public_html/storage/modification/system/library/template/twig.php on line 49

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


// Journal Theme Modification
            if (defined('JOURNAL3_ACTIVE')) {
                $j3loader = new \Twig_Loader_Filesystem();

                if (defined('DIR_CATALOG') && is_dir(DIR_MODIFICATION . 'admin/view/template/')) {
                    $j3loader->addPath(DIR_MODIFICATION . 'admin/view/template/');
                } elseif (is_dir(DIR_MODIFICATION . 'catalog/view/theme/')) {
                    $j3loader->addPath(DIR_MODIFICATION . 'catalog/view/theme/');
                }

                $j3loader->addPath(DIR_TEMPLATE);

                $loader = new \Twig\Loader\ChainLoader(array($loader, $j3loader));
            }
            // End Journal Theme Modification

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


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

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

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

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

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

Войти

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

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

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

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

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