uorypm

Кэш. Class Cache. Проблема с генерацией непонятной строки

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

uorypm    0

Здравствуйте, форумчане!

 

Есть файл контроллера, в котором запрашивается кэш:

$product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);

Есть системный класс Cache, в котором есть метод get.

 

 

Проблема в том, что из файла контроллера запрашивается строка вида "product.total.1.0.1.$cache" (где $cache - это некая сгенерированная строка). А в метод get класса Cache приходит непонятно почему такая строка: "product.total.1.0.1.cfcd208495d565ef66e7dff9f98764da.$cache".

 

Ссылка $this в файле контроллера ссылается на объект $registry класса Registry, в нем зарегистрирован экземпляр класса Cache. Т.е. вроде бы все нормально.

 

При этом метод set класса Cache записывает кэш как и положено - в виде файла с именем "product.total.1.0.1.$cache". Т.е. сейчас кэш для файлов "product.total.1.0.1.*" вообще не используется и CMS постоянно обращается к БД.

 

Временно метод get класса Cache изменил так:

	public function get($key) {
		if(preg_match('/^product\.total\.1\.0\.1\.cfcd208495d565ef66e7dff9f98764da.*$/', $key))
		{
			$key = str_replace('cfcd208495d565ef66e7dff9f98764da.', '', $key);
		}

	// ...

	}

Кто-нибудь с таким сталкивался и откуда и почему вставляетяс строка "cfcd208495d565ef66e7dff9f98764da" в имя файла кэша?

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    157
$cache = '1.0.1.cfcd208495d565ef66e7dff9f98764da' ;

Все правильно работает.

1. Напишите полный код класса Cache под спойлером.

2. И код контроллера, который запрашивает данные из кэша.

3. Как определили, что кэш не используется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
uorypm    0

1. Код класса Cache

<?php
class Cache { 
	private $expire = 3600; 

	public function get($key) {
		if(preg_match('/^product\.total\.1\.0\.1\.cfcd208495d565ef66e7dff9f98764da.*$/', $key))
		{
			$key = str_replace('cfcd208495d565ef66e7dff9f98764da.', '', $key);
			//echo $key , "<br/>\r\n";
		}
		$files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');
		
		if ($files) {
			$cache = file_get_contents($files[0]);
			
			$data = unserialize($cache);
			
			foreach ($files as $file) {
				$time = substr(strrchr($file, '.'), 1);

      			if ($time < time()) {
					if (file_exists($file)) {
						unlink($file);
					}
      			}
    		}
			
			return $data;			
		}
	}

  	public function set($key, $value) {
    	$this->delete($key);
		
		$file = DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.' . (time() + $this->expire);
    	
		$handle = fopen($file, 'w');

    	fwrite($handle, serialize($value));
		
    	fclose($handle);
  	}
	
  	public function delete($key) {
		$files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*');
		
		if ($files) {
    		foreach ($files as $file) {
      			if (file_exists($file)) {
					unlink($file);
				}
    		}
		}
  	}
}
?>

 

2. Модель, не контроллер. Вот код метода:

<?php
	public function getTotalProducts($data = array()) {
		if ($this->customer->isLogged()) {
			$customer_group_id = $this->customer->getCustomerGroupId();
		} else {
			$customer_group_id = $this->config->get('config_customer_group_id');
		}	
				
		$cache = md5(http_build_query($data));
		
		$product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
		
		if (!$product_data and $product_data === NULL) {
			
			$sql = "SELECT COUNT(DISTINCT p.product_id) AS total FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id)";
	
			if (!empty($data['filter_category_id'])) {
				$sql .= " LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id)";			
			}
						
			$sql .= " WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
			
			if (!empty($data['filter_name']) || !empty($data['filter_tag'])) {
				$sql .= " AND (";
				
				if (!empty($data['filter_name'])) {					
					if (!empty($data['filter_description'])) {
						$sql .= "LCASE(pd.name) LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%' OR MATCH(pd.description) AGAINST('" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "')";
					} else {
						$sql .= "LCASE(pd.name) LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%'";
					}
				}
				
				if (!empty($data['filter_name']) && !empty($data['filter_tag'])) {
					$sql .= " OR ";
				}
				
				if (!empty($data['filter_tag'])) {
					$sql .= "MATCH(pd.tag) AGAINST('" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "')";
				}
			
				$sql .= ")";
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}	
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}		

				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}

				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}		
				
				if (!empty($data['filter_name'])) {
					$sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				}				
			}
						
			if (!empty($data['filter_category_id'])) {
				if (!empty($data['filter_sub_category'])) {
					$implode_data = array();
					
					$implode_data[] = (int)$data['filter_category_id'];
					
					$this->load->model('catalog/category');
					
					$categories = $this->model_catalog_category->getCategoriesByParentId($data['filter_category_id']);
										
					foreach ($categories as $category_id) {
						$implode_data[] = (int)$category_id;
					}
								
					$sql .= " AND p2c.category_id IN (" . implode(', ', $implode_data) . ")";			
				} else {
					$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
				}
			}		
			
			if (!empty($data['filter_manufacturer_id'])) {
				$sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'";
			}
			
			$query = $this->db->query($sql);
			
			$product_data = $query->row['total']; 
			
			$this->cache->set('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache, $product_data);
		}
		
		return $product_data;
	}

 

3. Изначальная причина была в том, что сайт работал медленно. Системный администратор, потом и я, проверил нагрузку на сервер - нагрузка на сервер действительно была очень большой (не такой, какой должна была быть при работе с кэшем). Была поставлена мне задача. Посмотрел папку с кэшем - кэш создается под одним именем, а запрашивается под другим (в следствие чего создается новый запрос к БД и сайт работает медленно, а сервер под нагрузкой).

 

---------------------------

 

Откуда инфа, что $cache = '1.0.1.cfcd208495d565ef66e7dff9f98764da' ? Эта переменная вообще по-другому формируется.

 

В модели выводил на экран передаваемый текст - был один вариант (собственно, под каким и сохранялся кэш), а в метод класса приходит уже другой (а кэша с таким именем уже нет)!

При том такой запрос кэша формируется только в этом методе и только в этой модели! Т.е. только для кэшей которые начинаются с product.total.1.0.1.*.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    157

Да, ошибся:

$cache = md5(http_build_query($data)); //cfcd208495d565ef66e7dff9f98764da

Значит имя файла кэша cache.product.total.1.0.1.cfcd208495d565ef66e7dff9f98764da.$UTC. 

if (!$product_data and $product_data === NULL) {
//замените на 
if (empty($product_data)) {

Пришлите в ЛС данные для доступа к магазину или сорцы с БД на talgatks@gmail.com, я посмотрю. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
uorypm    0
Пришлите в ЛС данные для доступа к магазину или сорцы с БД на talgatks@gmail.com, я посмотрю. 

 

К сожалению, это невозможно.

 

debug_backtrace'ом выяснил, что среди прочих вызывается файл "/vqmod/vqcache/vq2-catalog_model_catalog_product.php" и в нем вызывается тот самый метод класса, но строка к кэшу формируется уже по-другому:

// Start filter change
	    $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.'.md5($filter). '.'. $cache); 
// End filter

Сравните с исходным запросом:

$product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);

 

Т.е. как раз тут и вставляется эта злополучная строка прямо посреди текста - " .md5($filter). ".

 

С vQmod никогда не работал. Как наиболее правильно исправить такую работу этого мода? Или ничего страшного, ели вмешаться в код напрямую?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
uorypm    0

Проблема в файле скрипта vQmod '/vqmod/xml/vqmod_filter_products.xml' :

 

	<operation>
            <search position="replace"><![CDATA[
            $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
            ]]></search>
            <add><![CDATA[
// Start filter change
	    $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.'.md5($filter). '.'. $cache); 
// End filter
            ]]></add>
        </operation>

 

Переменная $filter всегда имеет значение int(0), следовательно, md5(0) имеем - "cfcd208495d565ef66e7dff9f98764da".

 

Следует просто переписать замещающий код? Из знающих vQmod никто не подскажет? Нужна ли вообще переменная $filter и в каких случаях?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
halfhope    157

Проблема в файле скрипта vQmod '/vqmod/xml/vqmod_filter_products.xml' :

 

	<operation>
            <search position="replace"><![CDATA[
            $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.' . $cache);
            ]]></search>
            <add><![CDATA[
// Start filter change
	    $product_data = $this->cache->get('product.total.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . (int)$customer_group_id . '.'.md5($filter). '.'. $cache); 
// End filter
            ]]></add>
        </operation>

 

Переменная $filter всегда имеет значение int(0), следовательно, md5(0) имеем - "cfcd208495d565ef66e7dff9f98764da".

 

Следует просто переписать замещающий код? Из знающих vQmod никто не подскажет? Нужна ли вообще переменная $filter и в каких случаях?

 

Это XML файл какого-то модуля фильтра, если этот фильтр не используется на сайте, то можете просто переименовать vqmod_filter_products.xml на vqmod_filter_products.xml.bak, при обновлении страницы vqmod его не обработает и файл /vqmod/vqcache/vq2-catalog_model_catalog_product.php примет прежний вид. 

Если же этот фильтр используется, то обратитесь к его автору. Если же понадобится помощь, то я уже писал ранее свои контакты.

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От pikitos

      2 299.00 руб
      Скачать/Купить дополнение


      2.x Revolution. Адаптивный универсальный шаблон
       
      Демонстрация:
      Магазин техники Apple Магазин авто-запчастей Магазин пиццерии Магазин авто-товаров (пример 1) Магазин авто-товаров (пример 2) Магазин одежды и обуви Магазин косметики Админка доступ: demo / demo Ссылка на валидатор Ссылка на PageSpeed  
      Как купить и очень легко и быстро установить шаблон и начать работать показано на видео. Видео старое и качество огонь..
      Так же прошу учитывать мой часовой пояс: + 4 часа к Московскому времени (GMT+7). Это если вдруг у вас вечер, а ответа все нет, будет утром.
      !Внимание: Для шаблона начиная с версии 2.0 должны быть установлены на сервере - PHP версии 5.4 и выше + Ioncube Loader версии 5.0 и выше.
      Чтобы узнать вашу версию php и ioncube, скачайте файл, распакуйте, загрузите к себе в корень сайта и откройте по адресу http://ваш-сайт.ru/myinfo.php
      Шаблон Revolution - это результат многолетнего опыта работы с cms opencart и сферой e-commerce в целом. Главная идея - чистота, минимализм и выделение товара на главный план. Любое решение в шаблоне обосновано.
      Настройки шаблона продуманы и взаимосвязаны. В шаблоне продуманы многие мелочи. Если товара нет в наличии, быстрый заказ не доступен (но его можно включить, есть опция). Возможность использовать магазин как каталог, без кнопки купить и корзины в пару кликов. Если корзина стоит всплывающая, то убирается "стрелка вниз" на Корзине покупок указывающая на ее корзины. Меняется сортировка товаров в зависимости от доступности товара для заказа. И тому подобные взаимосвязи.
       
      Функционал:
      2 типа меню каталога товаров: Amazon меню и горизонтальное выпадающее. Быстрый поиск в шапке сайта с возможностью выбора категории поиска. Заказ обратного звонка в шапке сайта. Дополнительные контакты. Новые страницы каталога: Новинки и Хиты продаж. Встроенный модуль новостей с выбором товаров для новости. Отзывы на магазин. Информационные блоки на главной странице. 6 настраеваемых слайдеров товаров. Новинки, Хиты продаж, Акции и 3 пользовательских слайдера. Виджет vk на главной странице. Настраевыемые сортировки в каталоге товаров. Автоматические настраевыемые стикеры товаров: новинка, хит продаж, акция. Быстрый заказ товара. Полностью переделана страница сравнения товаров. Теперь она адаптивная, выбор параметров сравнения, идет сравнение товаров по категории, кнопка показа только отличий. Меняются и сохраняются кнопки после добавления товаров в сравнение или закладки. 3 вид отображения товаров в каталоге. Всплывающая корзина. Быстрый просмотр товара. В закладки добавление без регистрации. Выбор вывода характеристик в карточке товара с ограничением. Выбор какие данные показывать в карточке товара. В карточке товара зум для фото и слайдер дополнительных фото. Дополнительные вкладки для всех товаров с настройками. Дополнительные вкладки отдельно для каждого товара. Отображение новостей в карточке товара к которым он прикреплен. Подписка на новости, с выбором пользователей для рассылки в админке. Иконки социальных сетей в подвале сайта. Иконки платежных систем в подвале сайта. В контактах карта формируется автоматически из адреса. Внимание! На сайте auto.oc-mod.ru и moda.oc-mod.ru показана адаптация для модулей: Simple - упрощенная регистрация и заказ; filter Pro. В состав шаблона входит только адаптация для этих модулей (в архиве с шаблоном в папке "_Фиксы для других модулей"). Микро-разметка. ... еще много чего (допишется позже). Лицензия:
      Шаблон можно приобрести на форуме и запросить лицензионный ключ в личном сообщении, написав домен на котором он будет использоваться. Шаблон можно использовать только на одном домене. + Выдается ключ на тестовый домен. В след. версиях добавиться:
      Поддержка мультимагазина И что еще нужно пишите.. Включена адаптация для популярных модулей:
      Модуль Simple - упрощенная регистрация и заказ filter Pro более полное описание добавится попозже...
      .
      Добавил pikitos Добавлено 05.06.2016 Категория Платные шаблоны Системные требования PHP v5.4+ и Ioncube Loader v5.0+ Сайт разработчика oc-mod.ru Старая цена Метод активации По запросу в ЛС
      По запросу на почту
      По скайпу
      По емейлу
      Через официальный сайт дополнения 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  
    • От Rojzman
      Дорогие обитатели форума!
      Возникла такая проблема, что в админке, в фотогалерее не переключаются страницы дальше первой. 
       
      Версия ocStore/Opencart 2.3.0.2

    • От shyn

      Скачать/Купить дополнение


      Basecart шаблон для OpenСart 2.x
      Описание
      Basecart - базовый, бесплатный шаблон для OpenCart 2.x со встроенными цветовыми схемами Bootswatch.
      Простота и лёгкость шаблона позволяют использовать его для разных типов интернет магазинов.
      Демо магазин
       
       
      Основные возможности
      - Простая установка
      - Адаптивный дизайн
      - 17 цветовых схем
      - Шаблон построен с использованием Bootstrap 3
      - Удобное переключение цветовых схем через админку
       
       
      Совместимость
      - OpenCart 2.3.0.2
      - OpenCart 2.3.0.1
      - OpenCart 2.3.0.0
      - OpenCart 2.2.0.0
      - OpenCart 2.1.0.2
      - OpenCart 2.1.0.1
      - OpenCart 2.0.3.1
       
      Поддерживаются также соответствующие версии ocStore и OpenCart "Русская сборка"
       
       
      Изменения
      10.01.2017
      - Незначительные улучшения
       
      02.01.2017
      - Изменен формат установки
       
      03.12.2016
      - Исправлен модуль управления темой (OpenCart 2.3.0.x)
       
      04.09.2016
      - Добавлена поддержка OpenCart 2.3.0.x
       
      16.06.2016
      - Добавлена поддержка OpenCart 2.2.0.0 и ocStore 2.1.0.2.1
       
      16.02.2016
      - Незначительные исправления
       
      10.01.2016
      - Исправлена ошибка с капчей на странице возврата товара (OpenCart 2.1.0.1)
       
      12.10.2015
      - Добавлена поддержка OpenCart 2.1.0.1
       
       
      Установка
      1. Скачать zip архив.
      2. В архиве находятся файлы, установщики темы, названия которых оканчиваются на *.ocmod.zip (Распаковка не требуется).
      3. Перед началом установки убедитесь, что в установленном OpenCart настроен доступ по FTP.
      System -> Settings -> [Edit] -> FTP Если OpenCart установлен локально или по каким-то причинам необходимо произвести установку темы без настройки FTP, скачайте и установите модуль QuickFix, который позволяет устанавливать дополнения без настроенного FTP доступа.
      3. Выбрать и установить файл темы для соответствующей версии OpenCart.
      Extensions -> Extension Installer -> Upload 4. Выбрать установленную тему basecart из списка.
      Extensions -> Extensions -> Themes -> [Edit] -> Theme Directory -> basecart 5. Сохранить
       
      Если, по каки-то причинам, шаблон был установлен путем простого копирования файлов, без использования установщика дополнений, нужно дополнительно установить модификатор шаблона (файл install.xml), найти его можно при распаковке архива, название которого оканчивается на *.ocmod.zip. Установка модификатора производится через: Дополнения -> Установка дополнений. Перед установкой install.xml необходимо переименовать в install.ocmod.xml
       
      Переключение цветовых схем:
      Зайти в админку магазина.
      Extensions -> Extensions -> Modules -> Basecart -> Install / Edit  
      Добавил shyn Добавлено 21.07.2015 Категория Бесплатные шаблоны Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.2
      2.1 OpenCart.Pro, ocShop  
    • От shyn
      Описание
      Basecart - базовый, бесплатный шаблон для OpenCart 2.x со встроенными цветовыми схемами Bootswatch.
      Простота и лёгкость шаблона позволяют использовать его для разных типов интернет магазинов.
      Демо магазин
       
       
      Основные возможности
      - Простая установка
      - Адаптивный дизайн
      - 17 цветовых схем
      - Шаблон построен с использованием Bootstrap 3
      - Удобное переключение цветовых схем через админку
       
       
      Совместимость
      - OpenCart 2.3.0.2
      - OpenCart 2.3.0.1
      - OpenCart 2.3.0.0
      - OpenCart 2.2.0.0
      - OpenCart 2.1.0.2
      - OpenCart 2.1.0.1
      - OpenCart 2.0.3.1
       
      Поддерживаются также соответствующие версии ocStore и OpenCart "Русская сборка"
       
       
      Изменения
      10.01.2017
      - Незначительные улучшения
       
      02.01.2017
      - Изменен формат установки
       
      03.12.2016
      - Исправлен модуль управления темой (OpenCart 2.3.0.x)
       
      04.09.2016
      - Добавлена поддержка OpenCart 2.3.0.x
       
      16.06.2016
      - Добавлена поддержка OpenCart 2.2.0.0 и ocStore 2.1.0.2.1
       
      16.02.2016
      - Незначительные исправления
       
      10.01.2016
      - Исправлена ошибка с капчей на странице возврата товара (OpenCart 2.1.0.1)
       
      12.10.2015
      - Добавлена поддержка OpenCart 2.1.0.1
       
       
      Установка
      1. Скачать zip архив.
      2. В архиве находятся файлы, установщики темы, названия которых оканчиваются на *.ocmod.zip (Распаковка не требуется).
      3. Перед началом установки убедитесь, что в установленном OpenCart настроен доступ по FTP.
      System -> Settings -> [Edit] -> FTP Если OpenCart установлен локально или по каким-то причинам необходимо произвести установку темы без настройки FTP, скачайте и установите модуль QuickFix, который позволяет устанавливать дополнения без настроенного FTP доступа.
      3. Выбрать и установить файл темы для соответствующей версии OpenCart.
      Extensions -> Extension Installer -> Upload 4. Выбрать установленную тему basecart из списка.
      Extensions -> Extensions -> Themes -> [Edit] -> Theme Directory -> basecart 5. Сохранить
       
      Если, по каки-то причинам, шаблон был установлен путем простого копирования файлов, без использования установщика дополнений, нужно дополнительно установить модификатор шаблона (файл install.xml), найти его можно при распаковке архива, название которого оканчивается на *.ocmod.zip. Установка модификатора производится через: Дополнения -> Установка дополнений. Перед установкой install.xml необходимо переименовать в install.ocmod.xml
       
      Переключение цветовых схем:
      Зайти в админку магазина.
      Extensions -> Extensions -> Modules -> Basecart -> Install / Edit  
    • От artemmc

      View File


      Clean Cache Button - Кнопка "Очистка кэша"
      Данное дополнение для ocStore выводит дополнительную кнопку в шапке Админки - "Очистка кэша"
      Очень удобно когда она под рукой и не нужно совершать лишние действия когда нужно почистить кэш.
       
      Тестировалось на версиях ocStore 2.1.0.1 - 2.3.0.2.3
      Submitter artemmc Submitted 07/29/2017 Category Caching & Server Performance Системные требования Сайт разработчика https://startem.pro Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart Несовместим ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу