OCStore UE 3.0.3.9

  • Автор темы Автор темы Daniel
  • Дата начала Дата начала
А просто обновить на последнюю версию от 26.06 никак? Только чистая установка?
Можно скопировать все из папки upload (кроме папки install) на сайт с заменой. Файлов config.php в архиве нет, настройки не затрете. Если демо данные удалены, то можно не копировать демо картинки или потом удалить папку image\catalog\demo.
 
Разница в .htaccess всего в одной строке
Options +FollowSymlinks заменена на Options +SymLinksIfOwnerMatch, т.к. Options +FollowSymlinks запрещена на многих хостингах как небезопасная. Поэтому вместо нее используется Options +SymLinksIfOwnerMatch. Файлы config.php могут отсутствовать - будут созданы автоматически или быть пустыми - стандартное поведение.

домового здесь нет, потому что Ocstore - было как основа, и официальная версия OpenCart (ocStore) 3.0.3.7 от 08 июля 2021, давно устарела плюс содержит кучу ошибок как новых, так и перенесенных из более ранних версий. Эта версия на базе Opencart 3.0.3.9 с исправлениями и обновлениями из более старших версий.

Атрибуты добавляются в конкретно выбранную группу. Некоторые ответы вполне очевидны и их можно легко найти.
Посмотреть вложение 8982
За время использования Opencart пытался найти ответ, что делает эту систему удобной и практичной? Единственный ответ который напрашивается - ничего! И чем дальше - тем хуже. И с таким подходом и скоростью разработки он будет постоянно устаревшим и не соответствовать времени.
сорри, не заметил, красава
 
Исправление неправильного отображения списка модификаторов при разбивке на страницы, файл admin/controller/marketplace/modification.php.
Содержимое архива скопировать с заменой
 
Было бы неплохо добавить из коробки поддержку svg, webp. Вот есть модификатор, который можно положить в system. также заметил баг, если удаляешь модификатор то он не удаляется
XML:
<?xml version="1.0" encoding="utf-8"?>
<modification>
  <code>svg_3_0_3_8</code>
  <name>Set SVG 3.0.3.8</name>
  <version>1.0</version>
  <author>Venter</author>
  <link></link>
  <file path="admin/controller/common/filemanager.php">
    <operation>
      <search>
        <![CDATA[PNG,GIF]]>
      </search>
      <add position="replace">
        <![CDATA[PNG,GIF,svg,SVG,ico,ICO]]>
      </add>
    </operation>
    <operation>
      <search>
        <![CDATA[if (!in_array(utf8_strtolower(utf8_substr(strrchr($filename, '.'), 1)), $allowed))]]>
      </search>
      <add position="before">
        <![CDATA[
                    //set svg ico webp
                    $new_extension_types = array( 'svg', 'ico', 'webp' );
                    $allowed = array_merge( $allowed, $new_extension_types );
                    //end set svg ico webp
        ]]>
      </add>
    </operation>
    <operation>
      <search>
        <![CDATA[if (!in_array($file['type'], $allowed))]]>
      </search>
      <add position="before">
        <![CDATA[
                    //set svg ico webp
                    $new_mime_types = array( 'image/svg+xml', 'image/x-icon', 'image/webp', 'image/vnd.microsoft.icon' );
                    $allowed = array_merge( $allowed, $new_mime_types );
                    //end set svg ico webp
        ]]>
      </add>
    </operation>
  </file>
  <file path="admin/model/tool/image.php">
    <operation>
      <search>
        <![CDATA[$image_old = $filename;]]>
      </search>
      <add position="after"><![CDATA[
        //set svg
        if( 'svg' == $extension || 'ico' == $extension || 'webp' == $extension ) {
            if( $this->request->server['HTTPS'] ) {
                $https_ct = rtrim( HTTPS_CATALOG, '/' );
                return $https_ct . '/image/' . $image_old;
            } else {
                $http_ct = rtrim( HTTP_CATALOG, '/' );
                return $http_ct . '/image/' . $image_old;
            }
        }
      ]]></add>
    </operation>
  </file>
  <file path="catalog/model/tool/image.php">
    <operation>
      <search>
        <![CDATA[$image_old = $filename;]]>
      </search>
      <add position="after"><![CDATA[
        //set svg
        if( 'svg' == $extension || 'ico' == $extension || 'webp' == $extension ) {
            if( $this->request->server['HTTPS'] ) {
                $https_ct = rtrim( $this->config->get('config_ssl'), '/' );
                return $https_ct . '/image/' . $image_old;
            } else {
                $http_ct = rtrim( $this->config->get('config_url'), '/' );
                return $http_ct . '/image/' . $image_old;
            }
        }
      ]]></add>
    </operation>
  </file>
</modification>
 
Было бы неплохо добавить из коробки поддержку svg, webp. Вот есть модификатор, который можно положить в system. также заметил баг, если удаляешь модификатор то он не удаляется
XML:
<?xml version="1.0" encoding="utf-8"?>
<modification>
  <code>svg_3_0_3_8</code>
  <name>Set SVG 3.0.3.8</name>
  <version>1.0</version>
  <author>Venter</author>
  <link></link>
  <file path="admin/controller/common/filemanager.php">
    <operation>
      <search>
        <![CDATA[PNG,GIF]]>
      </search>
      <add position="replace">
        <![CDATA[PNG,GIF,svg,SVG,ico,ICO]]>
      </add>
    </operation>
    <operation>
      <search>
        <![CDATA[if (!in_array(utf8_strtolower(utf8_substr(strrchr($filename, '.'), 1)), $allowed))]]>
      </search>
      <add position="before">
        <![CDATA[
                    //set svg ico webp
                    $new_extension_types = array( 'svg', 'ico', 'webp' );
                    $allowed = array_merge( $allowed, $new_extension_types );
                    //end set svg ico webp
        ]]>
      </add>
    </operation>
    <operation>
      <search>
        <![CDATA[if (!in_array($file['type'], $allowed))]]>
      </search>
      <add position="before">
        <![CDATA[
                    //set svg ico webp
                    $new_mime_types = array( 'image/svg+xml', 'image/x-icon', 'image/webp', 'image/vnd.microsoft.icon' );
                    $allowed = array_merge( $allowed, $new_mime_types );
                    //end set svg ico webp
        ]]>
      </add>
    </operation>
  </file>
  <file path="admin/model/tool/image.php">
    <operation>
      <search>
        <![CDATA[$image_old = $filename;]]>
      </search>
      <add position="after"><![CDATA[
        //set svg
        if( 'svg' == $extension || 'ico' == $extension || 'webp' == $extension ) {
            if( $this->request->server['HTTPS'] ) {
                $https_ct = rtrim( HTTPS_CATALOG, '/' );
                return $https_ct . '/image/' . $image_old;
            } else {
                $http_ct = rtrim( HTTP_CATALOG, '/' );
                return $http_ct . '/image/' . $image_old;
            }
        }
      ]]></add>
    </operation>
  </file>
  <file path="catalog/model/tool/image.php">
    <operation>
      <search>
        <![CDATA[$image_old = $filename;]]>
      </search>
      <add position="after"><![CDATA[
        //set svg
        if( 'svg' == $extension || 'ico' == $extension || 'webp' == $extension ) {
            if( $this->request->server['HTTPS'] ) {
                $https_ct = rtrim( $this->config->get('config_ssl'), '/' );
                return $https_ct . '/image/' . $image_old;
            } else {
                $http_ct = rtrim( $this->config->get('config_url'), '/' );
                return $http_ct . '/image/' . $image_old;
            }
        }
      ]]></add>
    </operation>
  </file>
</modification>

Так уже все добавлено, не?

Screenshot_45.png

ocstore 3.0.3.9 уже внедрил
 
Вот чтобы реально хотелось, это переписать движок под Bootstrap 5 и уже адаптировать под него все шаблоны и модули.
Да это много работы, но в ногу со временем
 
я пытался загружать svg, но так и не получилось. С модификатором завелось
ну да там в списке svg нету, но webp есть.

там помню был модификатор который вообще все картинки загруженые в webp превращал, и выводил на фронт. но файлов много 100 папок кеша, такое себе дело
 
заметил баг, если удаляешь модификатор то он не удаляется
есть такое, не удаляются модификаторы только из базы. Проблема уже найдена, сегодня выложу исправления.
 
Обновление, файл OcStore_mod_latest_php73.zip
Исправлено условие в admin/view/template/marketplace/modification.twig из-за которого не присваивался ID модификатора для модификаторов в базе из-за чего нельзя было удалить модификатор.

Вот чтобы реально хотелось, это переписать движок под Bootstrap 5 и уже адаптировать под него все шаблоны и модули.
Да это много работы, но в ногу со временем
все это возможно только в пределах одного законченного проекта. Если понадобиться установить еще какой-то модуль или сменить шаблон, то сразу столкнемся с проблемами совместимости. Это самая большая проблема, что все должны продолжать использовать устаревшие решения и добавлять новые костыли для хромого движка. Для сохранения совместимости, правки ядра, сделаны минимальные. Изначально идея с модификациями была хорошая, но в самой CMS нужно сделать множество правок для старта. Количество модификаций становится очень большим и приводит к конфликтам. Создаётся впечатление, что с каждой новой версией, умышленно идет постоянное ухудшение взаимодействия с пользователем, чтобы продавалось больше расширений. При этом большинство расширений устраняет всего один "пустячок" и нужно установить кучу расширений, чтобы появилась возможность хоть какого-то комфортного использования.
 
Обновление, файл OcStore_mod_latest_php73.zip
Исправлено условие в admin/view/template/marketplace/modification.twig из-за которого не присваивался ID модификатора для модификаторов в базе из-за чего нельзя было удалить модификатор.


все это возможно только в пределах одного законченного проекта. Если понадобиться установить еще какой-то модуль или сменить шаблон, то сразу столкнемся с проблемами совместимости. Это самая большая проблема, что все должны продолжать использовать устаревшие решения и добавлять новые костыли для хромого движка. Для сохранения совместимости, правки ядра, сделаны минимальные. Изначально идея с модификациями была хорошая, но в самой CMS нужно сделать множество правок для старта. Количество модификаций становится очень большим и приводит к конфликтам. Создаётся впечатление, что с каждой новой версией, умышленно идет постоянное ухудшение взаимодействия с пользователем, чтобы продавалось больше расширений. При этом большинство расширений устраняет всего один "пустячок" и нужно установить кучу расширений, чтобы появилась возможность хоть какого-то комфортного использования.
Все банально просто, те модули или решения которые используют пользователи не так много, если вести линейку ocstore UC, таким же образом можно вести линейку самых используемых модулей.

При том что bootstrap 5 будет влиять на шаблоны и визуал в основном, а 70% модулей это расширение функционала движка в основном.
 
Все банально просто, те модули или решения которые используют пользователи не так много, если вести линейку ocstore UC, таким же образом можно вести линейку самых используемых модулей.

При том что bootstrap 5 будет влиять на шаблоны и визуал в основном, а 70% модулей это расширение функционала движка в основном.
Проблема будет только в одном - в популярности и популяризации. Нет единого ресурса с комьюнити - нет пользователей - нет популярности. Для популярности нужно иметь конкурентное преимущество, чаще всего это шаблон-конструктор, типа джорнала но с меньшим порогом вхождения. А это сразу же задевает наших любимых копирастов, типа спектрача. Не говоря уже про модули.
Так что идея хорошая, но обречена на провал.
 
Проблема будет только в одном - в популярности и популяризации. Нет единого ресурса с комьюнити - нет пользователей - нет популярности. Для популярности нужно иметь конкурентное преимущество, чаще всего это шаблон-конструктор, типа джорнала но с меньшим порогом вхождения. А это сразу же задевает наших любимых копирастов, типа спектрача. Не говоря уже про модули.
Так что идея хорошая, но обречена на провал.
Много аналитики и мыслей. Просто надо брат ьи делать. Всё будет. Надо начинать. Я готов вливатся.
 
в стоковый модуль HTML можно вставлять код Iframe ?
пытаюсь вставить в исходный код, потом возвращаюсь в редактор, он пустой
на другом сайте точно такой же блок и работает
 
запускал предыдущую сборку на php8, вроде как все хорошо было, единственное, что не смог найти подходящего шаблона для теста, то что у меня есть в основном для 2.3, скачал тут prostore 1.3.0 (на что хватило симпатий), установил, там пишут, что работает на php8, но у меня так и не вышло его посмотреть. до модулей фильтров и прочего так и не дошел...
 
в стоковый модуль HTML можно вставлять код Iframe ?
пытаюсь вставить в исходный код, потом возвращаюсь в редактор, он пустой
на другом сайте точно такой же блок и работает
нужно больше информации для проверки:
пример кода для вставки
какой редактор использовался: summernote, ckeditor или tinymce?
 
***Скрытое содержимое***
Summernote предоставляет защиту от XSS для CodeView. Она включает в себя фильтрацию тегов и белый список для iframe.
скорее всего дело в этом
можно отключить это поведение в
admin\view\javascript\summernote\opencart.js
добавив
JavaScript:
    function setupSummernote($element, lang) {
        $element.summernote({
            lang: lang,
            disableDragAndDrop: true,
            height: 300,
            codeviewFilter: false, // добавить
            codeviewIframeFilter: false, // добавить
            emptyPara: '',
...
в tinymce добавляется тег <p></p>
ckeditor вроде не режет
 
Понял. Я было подумал что это особенности версии 3.0.3.9 или какой то доп защиты сайта и файлов🙂
Спасибо
Самому в голову пойти в гугл не дошло. Думал в другом направлении


зы добавил
codeviewFilter: false
codeviewIframeFilter: false
все равно режет

и изменил в summernote.js
Screenshot_1.png
и удалил код полностью
if (this.options.codeviewFilter) {
// filter code view regex
value = value.replace(this.options.codeviewFilterRegex, '')


// allow specific iframe tag
if (this.options.codeviewIframeFilter) {
var whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);
value = value.replace(/(<iframe .*?>.*?(?:<\/iframe>)?)/gi, function (tag) {
// remove if src attribute is duplicated
if (/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(tag)) {
return '';
}
var _iterator = _createForOfIteratorHelper(whitelist),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var src = _step.value;
// pass if src is trusted
if (new RegExp('src="(https??\/\/' + src.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + '\/(.+)"').test(tag)) {
return tag;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return '';
});
}
}
все равно режет)
 
Последнее редактирование:
Назад
Верх