Jump to content

Recommended Posts

Добрый день,

Подскажите пожалуйста , я проверяю свой магазин W3C validator'ом он говорит что  in.ua/image/cache/data/logo[1]-200x50.png" alt="SPL" title="SPL" /></a>

</div>

Bad value http://www.xxx.ua/image/cache/data/logo[1]-200x50.png for attribute src on element img: Illegal character in path segment: not a URL code point.

я так понимаю что символ [...] - и вызывает эту ошибку.

 

Вопрос! где в контроллере функция которая кеширует это все? все что надо сделать заменть [...] на (...) и думаю хватит этого!

 

 

Share this post


Link to post
Share on other sites

Нет, не кеширует

 

Нужно делать urlencode таких имен

Share this post


Link to post
Share on other sites

Нет, не кеширует

 

Нужно делать urlencode таких имен

 а я думал что надо кэш править, хорошая идея, думаю должно решить проблему, но вопрос все-же остался тот-же, куда надо добавить urlencode? в каком файле искать ? если знаете, то буду очень благодарен!

Share this post


Link to post
Share on other sites

в контроллерах, где выводится $image

Share this post


Link to post
Share on other sites

\catalog\model\tool\image.php

Share this post


Link to post
Share on other sites

\catalog\model\tool\image.php

Да, в одном месте :)

Share this post


Link to post
Share on other sites

Да, в одном месте :)

покопался немного посмотрел что возвращает в  пути, оказывается все немного не так как я думал изначально! файл при загрузке через файл менеджер приобретает имя формата "ИМЯ[1].jpg" значит наверное надо смотреть файл менеджер что и как он сохраняет. 

Share this post


Link to post
Share on other sites

покопался немного посмотрел что возвращает в  пути, оказывается все немного не так как я думал изначально! файл при загрузке через файл менеджер приобретает имя формата "ИМЯ[1].jpg" значит наверное надо смотреть файл менеджер что и как он сохраняет. 

а вообще подумал что быстрее фотки переименую, это должно решить проблему, решение кривое, но пока не знаю  лучшего, если есть идеи, буду рад выслушать!

Share this post


Link to post
Share on other sites


$new_image = urlencode($new_image);

if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {

return $this->config->get('config_ssl') . 'image/' . $new_image;

} else {

return $this->config->get('config_url') . 'image/' . $new_image;

}

Share this post


Link to post
Share on other sites
$new_image = urlencode($new_image);
		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			return $this->config->get('config_ssl') . 'image/' . $new_image;
		} else {
			return $this->config->get('config_url') . 'image/' . $new_image;
		}

Спасибо, помогло! как я не заметил эти ретурны.. наверно пора отдыхать.. 

Share this post


Link to post
Share on other sites

При чем тут библиотека image и кеш, если вам просто надо синтаксис tpl поправить.

Share this post


Link to post
Share on other sites

При чем тут библиотека image и кеш, если вам просто надо синтаксис tpl поправить.

интересно.. если не затруднит объясните, для личного познания.

Share this post


Link to post
Share on other sites

Погуглите в направлении "спецификации html" и "doctype".

В зависимости от версии - отличается синтаксис.

 

В вашей ситуации для прохождения валидации нужно убрать отсюда

in.ua/image/cache/data/logo[1]-200x50.png" alt="SPL" title="SPL" /></a>

слеш перед > чтобы получилось вот так. А библиотеки opencart  тут не причем - это элментарный синтаксис HTML

in.ua/image/cache/data/logo[1]-200x50.png" alt="SPL" title="SPL"></a>


 

 

Share this post


Link to post
Share on other sites

Спасибо, за объяснения. завтра займусь спецификациями.  

Share this post


Link to post
Share on other sites

Добрый день! Подскажите куда именно или вместо чего надо вставить данный кусок кода?

 

Валидатор мне выдает 4 ошибки, как их устранить не понятно:

    Error: Bad value http://site.com/image/cache/catalog/logotyps/Franklin Wireless-130x100.jpg for attribute src on element img: Illegal character in path segment: space is not allowed.

    From line 215, column 29; to line 215, column 170

    franklin"><img src="http://site.com/image/cache/catalog/logotyps/Franklin Wireless-130x100.jpg" alt="Franklin Wireless" class="img-responsive" /></a>↩ 

    Error: Bad value http://site.com/image/cache/catalog/ZTE AC81_2-200x200.jpg for attribute src on element img: Illegal character in path segment: space is not allowed.

    From line 258, column 111; to line 258, column 338

    -novinka"><img src="http://site.com/image/cache/catalog/ZTE AC81_2-200x200.jpg" alt="ZTE AC81 3…бит/с НОВИНКА" title="ZTE AC81 3G CDMA Rev.B МОДЕМ до 14,7 Мбит/с НОВИНКА" class="img-responsive" /></a></

    Error: Bad value http://site.com/image/cache/catalog/mircdma/Cricket A600-200x200.jpg for attribute src on element img: Illegal character in path segment: space is not allowed.

    From line 338, column 90; to line 338, column 277

    cal-comp"><img src="http://site.com/image/cache/catalog/Cricket A600-200x200.jpg" alt="3G модем Cricket A600 Cal-Comp" title="3G модем Cricket A600 Cal-Comp" class="img-responsive" /></a></

    Error: Bad value http://site.com/image/cache/catalog/Samsung SCH-LC11 CDMA-LTE_4-200x200.jpg for attribute src on element img: Illegal character in path segment: space is not allowed.

    From line 515, column 209; to line 515, column 647

    -antenny"><img src="http://site.com/image/cache/catalog/Samsung SCH-LC11 CDMA-LTE_4-200x200.jpg… для операторов Интертелеком, PEOPLEnet с поддержкой внешней cdma антенны" class="img-responsive" /></a></

Мой файл imagе.php выглядит так:

 

class ModelToolImage extends Model {
public function resize($filename, $width, $height) {
if (!is_file(DIR_IMAGE . $filename)) {
return;
}

$extension = pathinfo($filename, PATHINFO_EXTENSION);

$old_image = $filename;
$new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;

if (!is_file(DIR_IMAGE . $new_image) || (filectime(DIR_IMAGE . $old_image) > filectime(DIR_IMAGE . $new_image))) {
$path = '';

$directories = explode('/', dirname(str_replace('../', '', $new_image)));

foreach ($directories as $directory) {
$path = $path . '/' . $directory;

if (!is_dir(DIR_IMAGE . $path)) {
@mkdir(DIR_IMAGE . $path, 0777);
}
}

list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image);

if ($width_orig != $width || $height_orig != $height) {
$image = new Image(DIR_IMAGE . $old_image);
$image->resize($width, $height);
$image->save(DIR_IMAGE . $new_image);
} else {
copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image);
}
}

if ($this->request->server['HTTPS']) {
return $this->config->get('config_ssl') . 'image/' . $new_image;
} else {
return $this->config->get('config_url') . 'image/' . $new_image;
}
}
}

 

$new_image = urlencode($new_image);
		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			return $this->config->get('config_ssl') . 'image/' . $new_image;
		} else {
			return $this->config->get('config_url') . 'image/' . $new_image;
		}
Edited by webcomp

Share this post


Link to post
Share on other sites

а это он специально ругается на любителей использовать пробелы в названиях файлов и папок ;)

 

неоднократно обсуждалось - не используйте спецсимволы в названии файлов, папок и seourl

желательно использовать только латиницу в нижнем регистре и цифры, а все что отличается - менять на тире или нижнее подчеркивание (или опускать совсем)

избавит от множества проблем

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By SergeTkach
      Допустим, есть файл cache.sticker.bestseller.1560966030, который создал модуль из комплектации шаблона.
      И в другом модуле стикеров, идет запрос кеша через
      $sticker_cache = $this->cache->get('sticker'); В итоге, данные из файла cache.sticker.bestseller.1560966030 оказываются в переменной $sticker_cache...
      А вот так все ок
      $sticker_cache = $this->cache->get('prefix_sticker'); Ситуация наблюдается в OpenCart 2.1.0.2 - в других, еще не пробовал. Если что - опишусь.
    • By p0v1n0m
      Модуль поможет очистить кэш и логи одним кликом, находясь на любой странице админки.
       
      Установка:
      1. Загрузить скачанный архив для своей версии движка через Установщик дополнений.
      2. Очистить и Обновить кэш в Менеджере дополнений.
      3. Установить и включить модуль.
    • By p0v1n0m
      Скачать/Купить дополнение


      Чистильщик кэша и логов
      Модуль поможет очистить кэш и логи одним кликом, находясь на любой странице админки.
       
      Установка:
      1. Загрузить скачанный архив для своей версии движка через Установщик дополнений.
      2. Очистить и Обновить кэш в Менеджере дополнений.
      3. Установить и включить модуль.
      Добавил p0v1n0m Добавлено 15.08.2016 Категория Кэширование, сжатие, ускорение Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика  
    • By markimax
      990.00 руб
      Скачать/Купить дополнение


      Jet Cache - кеширование, оптимизация для магазинов

       

      Логин / пароль:
      demo / demo
       
      Документация  
      Более 10`000 интернет магазинов выбрали SEO CMS для работы
      SEO CMS JET CACHE :: Jet Cache - быстрая система кеширования страниц, контроллеров и методов моделей opencart

      Версия под opencart 3.x высылается по запросу
      Возможности
       
      - кеширует полностью страницы при полной интеграции с opencart (позволяет кешировать и для зарегистрированных пользователей и изменений корзины а также в зависимости от изменений в модулях)  
      - кеширует выбранные контроллеры (т е фактически  любые модули, будь то меню или т.п. а также полностью кеширует позиции (уникальная технология которая не реализовано ни в одном модуле кеширования для opencart) (с))  
      - кеширует методы моделей opencart (подсчет количества товаров и т п )  
      - простая установка и обновление  
      - гибкие настройки  
      - поддержка мультиязычности  
      - поддержка мультимагазинов  
      - поддержка протоколов https и http  
      - гибкая взаимосвязь с любым функционалом платформы SEO CMS  
      - совместимость с любой темой, любыми модулями, которые соответствуют стандартам программирования  
      - поддержка кеширования sitemap Чем модуль лучше других
       
      - уникальные технологии кеширования не имеющие аналогов в opencart (уникальная технология полной интеграции с opencart, в отличии от всех кешировщиков которые сделанны по технологии v2pc)  
      - модуль работает с любыми темами и модулями Требования
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) PHP 5.3 или выше Модуль НЕ заменяет файлы системы Модуль НЕ использует ioncube  
      Совместимость модуля
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) Любая тема или любые модули (которые сделаны без ошибок, согласно стандартов программирования или верстки) для оpencart 2.x  
      Установка, настройка
       
      Если пользователь хочет чтобы сотрудник службы технической поддержки проделал работу по установке и настройке модуля вместо пользователя на сервере пользователя, это уже услуга + 590 рублей  
      Лицензия Все права на модуль принадлежат разработчикам opencartadmin.com Условия использования лицензии: один домен - одна лицензия (покупка продукта для каждого домена). Условия использования лицензии - "на владельца". Далее... Добавил markimax Добавлено 15.03.2017 Категория Кэширование, сжатие, ускорение Системные требования PHP 5.3+ Сайт разработчика https://opencartadmin.com/seo-cms-jet-cache.html Старая цена 590 Метод активации Через официальный сайт дополнения Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • By Yoda
      Буквально несколько недель назад Hetzner, пытаясь остаться в тренде, запустил cloud сервис аналогичный Amazon W3 или Digital Ocean.
      Выглядит очень круто - от 3 евро за юнит(2 гига RAM 20 гиг диска), NVME-диски, и даже есть возможность купить не виртуально ядро в виде какого-то потока HyperThread,  а полноценный кусок процессора, правда от 23 евро за 2 виртуальных ядра - но это тоже круто.
       
      И очень меня эти три евры за выделенный юнит заманили, взял я под новый проект себе на пробу, и был приятно удивлен, что оно работает быстрее подавляющего числа доступных VPS, да и деплой реально в три секунды.
       
      Почему же это зло?
      После некоторых тестов, выяснилось что на самом деле, не все так хорошо как на фасаде. Я взял сервер, для блога на Wordpress, поставил php 7.2, и он просто полетел.

      Но когда мы взяли 4 ядра 160 гигабайт юнит, при переносе и холодном старте все оказалось быстро (главная страница магазина на 160 000 товаров грузилась за 150мс), но вот через полчаса после переноса DNS и появления  нагрузки, вдруг 150мс превратиилсь в 600, при том что нагрузка на процессоре была не больше 20-25% и памяти свободной вагон.
       
      После аудита, обнаружилась очень простая и достаточно логичная проблема. 
      В силу использования модуля кеширования  (не буду уточнять какого), в кеш набилось  за 20 минут порядка 5000 файлов. В целом, если у вас просто кусок сервера, или обычный VPS  - это немного и не повлечет таких проблем просадки в скорости. Но у нас же клауд. Соответственно данные на диске динамически реплицируются и синхронизируются на несколько узлов (и это ни фига не быстрый RAID). Вобщем оказалось что такой побочный эффект облачной виртуализации казалось бы напрочь убил возможность использования площадки под большой проект. Но выжигание кривого кеширования, правильная общая оптимизация системы и установка Redis спасла отцов русской демократиии от фиаско.
       
      Так что друзья, клауд - это хорошо но не очень, и не каждый модуль кеширования такой полезный как пишут в ваших этих интернетах, и если вы хотите оптимизировать большой магазин, возможно стоит изначально смотреть в сторону аренды выделенного сервера с производительной файловой системой, и использовать техники оптизимиации, отличные от кеширования.
       
       
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.