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

berrber    12

index.php?app=downloads&module=display&section=screenshot&id=3040

Название: Отзывы с изображениями

Добавил: berrber

Добавлен: 21 марта 2016

Категория: Модули

Работает на OpenCart: 1.5.1.3.1,1.5.2.1,1.5.3.1,1.5.4.1,1.5.5.1,1.5.6.4

Работает на ocStore: 1.5.1.3.1,1.5.2.1,1.5.3.1,1.5.4.1,1.5.5.1

Метод активации: Без активации

Описание:

Создание отзывов о магазине на отдельной странице, с возможностью размещения отзывов в отдельном модуле.

Отзывы добавляют клиенты магазина, заполняя форму. Можно прикрепить изображения.

Отзыв, заполненный клиентом, по-умолчанию отключен, для публикации требуется включить его в панели управления магазином.

Отзывы публикуются от нового к старым, по дате публикации.

Настройки/возможности:

1. Администратор магазина может редактировать, удалять, создавать отзыв.

2. Мультиязык.

3. Нет поддержки мульти-магазина.

4. Общие настройки модуля:

  • оповещать о новом отзыве по e-mail или нет
  • размеры фото
  • размеры прикрепленных изображений
  • размеры всплывающего изображения
  • размер фото kB
  • размер прикрепленных изображений kB
  • количество отзывов в модуле
  • разрешенные для загрузки типы файлов
  • seo url
  • заголовок страницы отзывов
  • title страницы отзывов
  • description страницы отзывов
  • keywords страницы отзывов

5. Настройки модуля в позициях

  • схему
  • расположение
  • статус
  • размеры фото
  • лимит
  • порядок сортировки

6. Настройки отзыва

  • дата публикации
  • рейтинг
  • статус
  • автор
  • текст
  • фото
  • дополнительные фото

Функциональные возможности:

Модуль использует стандартную схему работы upload opencart v1.5.6.4 с модификацией защиты(getimagesize, resize).

В случае неудачи upload изображений отзыва, изображения удаляются с сервера, отзыв не добавляется, покупателю отображается ошибка.

Валидация полей формы двухэтапная - js с дублированием на php. Осуществляется проверка расширения, размера, длинны имени файла.

Возможно назначить отдельной странице модуля h1, теги: title, description, keywords. Seo-url отдельной страницы работает при установленном расширении SeoPro.

Реализовано оповещение администрации магазина по средствам e-mail, указанной в разделе "Система-Настройки-Общие".

Стандартный input type=file кастомизирован, возможно использовать <a>, input и прочее, привязка к class тэга/поля и т.п.

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

Публичная оферта:

1. Автор не несет ответственности за код модуля и последствия его использования.

2. Модуль поддерживается/развивается силами сообщества opencartforum, автор не берет на себя обязательство поддержки/развития модуля.

3. Автор не заинтересован в платных доработках.

Нажмите здесь, чтобы скачать файл

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


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

Модуль с пробоем безопасности. Можно подделать псевдо изображение с php "бомбой" внутри. Далее уже все будет зависеть только от квалификации хакера.

Ну нельзя давать прямой доступ к загруженному файлу

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


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

Код "private function upload", "/catalog/controller/information/arbitrage.php"

	private function upload($upload_dir) {
		$upload_file = true;
		$uploaded_files = array();
		$files_unlink = array();

		foreach ($this->request->files['files']['name'] as $key => $file_name) {
			$file_usr_name = basename(preg_replace('/[^a-zA-Z0-9\.\-\s+]/', '', html_entity_decode($file_name, ENT_QUOTES, 'UTF-8')));

			if (is_uploaded_file($this->request->files['files']['tmp_name'][$key]) && file_exists($this->request->files['files']['tmp_name'][$key])) {
				$file = $upload_dir . md5(mt_rand()) . basename($file_usr_name);
				$uploaded_files[] = $file;
				$file = DIR_IMAGE . $file;

				$files_unlink[] = $file;

				if (@move_uploaded_file($this->request->files['files']['tmp_name'][$key], $file)) {
					$settings = $this->config->get('arbitrage_description');

					$image = new Image($file);

					if ($key) {
						$width = $settings['image_popup']['width'] ? $settings['image_popup']['width'] : 800;
						$height = $settings['image_popup']['height'] ? $settings['image_popup']['height'] : 600;
					} else {
						$width = $settings['dimension']['width'] ? $settings['dimension']['width'] : 50;
						$height = $settings['dimension']['height'] ? $settings['dimension']['height'] : 50;
					}

					$image->resize($width, $height);

					$image->save($file);
				} else {
					$upload_file = false;

					$this->error['upload_file'][$key] = $this->language->get('error_upload');
				}
			}
		}

		if (!$upload_file) {
			foreach ($files_unlink as $uploaded_file) {
				unlink($uploaded_file);
			}
		}

		return $uploaded_files;
	}


Код "protected function validate() {", "/catalog/controller/information/arbitrage.php"

protected function validate() {
		$this->language->load('information/arbitrage');

		if ($this->request->server['REQUEST_METHOD'] == 'POST') {
			if ((utf8_strlen($this->request->post['author']) < 3) || (utf8_strlen($this->request->post['author']) > 25)) {
				$this->error['author'] = $this->language->get('error_author');
			}

			if ((utf8_strlen($this->request->post['description']) < 25) || (utf8_strlen($this->request->post['description']) > 3000)) {
				$this->error['description'] = $this->language->get('error_description');
			}

			if (empty($this->request->post['rating'])) {
				$this->error['rating'] = $this->language->get('error_rating');
			}

			if (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) {
				$this->error['captcha'] = $this->language->get('error_captcha');
			}
		}

		foreach ($this->request->files['files']['name'] as $key => $file_name) {
			if (!empty($this->request->files['files']['name'][$key])) {
				$settings = $this->config->get('arbitrage_description');

				$file_usr_name = basename(preg_replace('/[^a-zA-Z0-9\.\-\s+]/', '', html_entity_decode($file_name, ENT_QUOTES, 'UTF-8')));

				// Allowed file extension types
				$allowed = array();

				$filetypes = explode(',', $settings['upload_allowed']);

				foreach ($filetypes as $filetype) {
					$allowed[] = trim($filetype);
				}

				$content = file_get_contents($this->request->files['files']['tmp_name'][$key]);

				if ($key) {
					$size = $settings['attached_size'] ? $settings['attached_size'] : 100;
				} else {
					$size = $settings['photo_size'] ? $settings['photo_size'] : 1000;
				}

				if (preg_match('/\<\?php/i', $content)) {
					$this->error['upload_file'][$key] = $this->language->get('error_filetype');
				} elseif (!in_array(substr(strrchr($file_usr_name, '.'), 1), $allowed)) {
					$this->error['upload_file'][$key] = $this->language->get('error_filetype');
				} elseif ((utf8_strlen($file_usr_name) < 1) || (utf8_strlen($file_usr_name) > 255)) {
					$this->error['upload_file'][$key] = $this->language->get('error_filename');
				} elseif (($this->request->files['files']['size'][$key] / 1000) > $size) {
					$this->error['upload_file'][$key] = sprintf($this->language->get('error_filesize'), $size);
				} elseif ($this->request->files['files']['error'][$key] != UPLOAD_ERR_OK) {
					$this->error['upload_file'][$key] = $this->language->get('error_upload');
				} elseif (@getimagesize($this->request->files['files']['tmp_name'][$key]) == FALSE) {
					$this->error['upload_file'][$key] = $this->language->get('error_upload');
				} elseif ($this->error) {
					$this->error['upload_file'][$key] = $this->language->get('error_upload');
				}
			} else {
				$this->error['upload_file'][$key] = $this->language->get('error_select_file');
			}
		}

		if (!$this->error) {
			return true;
		} else {
			return false;
		}
	}


1. $this->request->files['files']['error'][$key] != UPLOAD_ERR_OK
2. @getimagesize($this->request->files['files']['tmp_name'][$key]) == FALSE
3. preg_match('/\<\?php/i', $content)
4. $file = $upload_dir . md5(mt_rand()) . basename($file_usr_name);
5. $image->resize($width, $height);

6. прошлая беседа, на ту же тему, с вами Отзывы покупателей о магазине (отдельная страница)

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


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

Код ..

<img src="<?php echo $arbitrage['image']; ?>" 

;)

И посмотрите класс Image, условие при котором не происходит ресайз ;)

preg_match - тоже можно обойти (врапперы, потоки)

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


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

preg_match - тоже можно обойти

Ключевые методы:

2. @getimagesize($this->request->files['files']['tmp_name'][$key]) == FALSE

4. $file = $upload_dir . md5(mt_rand()) . basename($file_usr_name);

5. $image->resize($width, $height);

 

<img src="<?php echo $arbitrage['image']; ?>"

?

И посмотрите класс Image, условие при котором не происходит ресайз ;)

Надеюсь вы не об этом, т.к. там resize не для безопасности

 if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $image_width, $image_height);
} else {
$image = '';
}
Если вы об этом

$image->resize($width, $height);
То о каком условии речь?

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


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

....

 if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $image_width, $image_height);
} else {
$image = '';
}
Если вы об этом

$image->resize($width, $height);
То о каком условии речь?

 

 

    public function resize($width = 0, $height = 0, $default = '') {

        if (!$this->width || !$this->height) {

            return;

        }

...

 

        if ($scale == 1 && $scale_h == $scale_w && $this->mime != 'image/png') {

            return;

        }

 

 

Т е без ресайза ЗАГРУЖЕННОЙ бомбы

Напомню, что через врапперы и потоки можно обойти preg_match

file_get_contents - тоже пробойная в принципе функция через врапперы и потоки

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


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

Враппер php://filter — это вид метаобертки, позволяющий применять фильтры к потоку во время открытия. Использование фильтров дает возможность трансформировать данные, получаемые из файла или записываемые в файл. В PHP есть встроенные фильтры, доступные по умолчанию, но с помощью враппера php://filter также можно задействовать и пользовательские фильтры, созданные с помощью функции stream_filter_register. При этом использование неопределенных фильтров не влияет на обработку данных другими фильтрами. Например, если фильтр anyfilter не определен, то функция readfile просто выведет содержимое /etc/hosts полностью в верхнем регистре.

readfile("php://filter/read=string.toupper|\  anyfilter/resource=/etc/hosts");

Эта особенность может быть полезна для обхода проверок, на основе strpos, preg_match и других.

 

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


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

 

Обход проверки на основе getimagesize

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

extract($_REQUEST); ..................include $templatedir.'/header.html'; ..................if(!empty($_FILES) )  {   $file_info = getimagesize($_FILES['image']['tmp_name']);   if($file_info['mime'] == 'image/jpeg'){   if(move_uploaded_file($_FILES['image']\ ['tmp_name'], $folder.'/avatar.jpg')).................

При отсутствии NULL-байта может показаться, что нет возможности ни проэксплуатировать RFI, ни загрузить что-то, кроме файла avatar.jpg. Но врапперы предоставляют нам новые способы эксплуатации подобного рода уязвимостей.

....

 

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


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

 

Т е без ресайза ЗАГРУЖЕННОЙ бомбы

Не понял смысл.

 

Как писал ранее preg_match не ключевой метод проверки.

Изображение модифицируется изменением размера, что позволяет думать о полном удалении присутствующего в нем скрипта.

Опубликуйте источники откуда цитаты брали.

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


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

И надо не только на <?php проверять, но можно атаковать через

<?xml

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


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

Как вы заметили ранее это не эффективный метод, тем не менее его наличие позволяет в некоторых случаях сэкономить на getimagesize.

Интересует что вы хотели сказать этим

    public function resize($width = 0, $height = 0, $default = '') {
        if (!$this->width || !$this->height) {
            return;
        }

...

 

        if ($scale == 1 && $scale_h == $scale_w && $this->mime != 'image/png') {
            return;
        }

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


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

Пруфов очень много

Один из них

https://xakep.ru/2012/11/22/php-filter-wrapper-attacks/

 

Вообще давать загружать пользователям ХОТЬ ЧТО ТО на сервер очень опасно

 

Для этого мало ресайзить, тем более через стандартный класс Image, первое что надо сделать отдавать файлы не на прямую, а через скрипты, а ресайзить через "рандом"

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


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

 

Как вы заметили ранее это не эффективный метод, тем не менее его наличие позволяет в некоторых случаях сэкономить на getimagesize.

Интересует что вы хотели сказать этим

    public function resize($width = 0, $height = 0, $default = '') {
        if (!$this->width || !$this->height) {
            return;
        }

...

 

        if ($scale == 1 && $scale_h == $scale_w && $this->mime != 'image/png') {
            return;
        }

Как видите при этих условиях стандартная библиотека Image не ресайзит

Как вариант сделать  свою функцию ресайза, причем с "рандом" величинами а потом уже их преобразовывать в нужное

Когда хакер знает изначальные величины при которых не будет ресайза - он через враппер может их подделать

А как видите стандартная библиотека при этих условиях просто не ресайзит

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


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

 

Для этого мало ресайзить, тем более через стандартный класс Image

Почему вы так думаете?

 

первое что надо сделать отдавать файлы не на прямую, а через скрипты

Что имеете ввиду?

 

Спасибо за ссылку, ознакомлюсь.

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


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

Как видите при этих условиях стандартная библиотека Image не ресайзит

Как вариант сделать  свою функцию ресайза, причем с "рандом" величинами а потом уже их преобразовывать в нужное

Когда хакер знает изначальные величины при которых не будет ресайза - он через враппер может их подделать

А как видите стандартная библиотека при этих условиях просто не ресайзит

 

Опередили с ответом. Ознакомлюсь со статьей.

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


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

И "отдавайте" <img как это сделано в opencart через скрипт download

К примеру <img src="index.php?route=information/arbitrage/image&image_id=...">

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


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

Какой именно скрипт download имеете ввиду?

 

index.php?route=account/download/download&order_download_id=...

 

Также надо отдавать <img

 

<img src="index.php?route=information/arbitrage/image&image_id=...">

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


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

И не забудьте вставить проверку не только на <?php но и на <?xml

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


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

index.php?route=account/download/download&order_download_id=...

 

Также надо отдавать <img

 

<img src="index.php?route=information/arbitrage/image&image_id=...">

Зачем?

 

И не забудьте вставить проверку не только на <?php но и на <?xml

Считаю что лишнее.

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


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

Зачем?

 

Считаю что лишнее.

 

Не надо считать, надо сделать

Из <?xml можно выполнить что угодно

 

 

XXE-атаки

XML — широко распространенный текстовый формат, предназначенный для хранения структурированных данных, которые используются при обмене информацией между программами. Хорошо известно, что в XML-документ можно добавлять содержимое внешних файлов с помощью внешних сущностей (external entities), но при этом итоговый документ должен быть well-formed. В PHP обойти это ограничение можно с помощью фильтра convert.base64-encode.

Bypass well-formed XML output check<?xml version='1.0' standalone='yes'?><!DOCTYPE scan   [  <!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=./db.php">  ]><scan>&xxe;</scan>

Но врапперы можно использовать не только внутри XML-документа, но и в функции simplexml_load_file и в методе DOMDocument::load. Это дает возможность произвести XXE-атаку при allow_url_fopen =Off, если есть возможность манипулировать именем файла.

 

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


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

И "отдавайте" <img как это сделано в opencart через скрипт download

К примеру <img src="index.php?route=information/arbitrage/image&image_id=...">

index.php?route=account/download/download&order_download_id=...

 

Также надо отдавать <img

 

<img src="index.php?route=information/arbitrage/image&image_id=...">

 

Если не затруднит, поясните свою точку зрения.

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


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

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

Не подымал бы этот вопрос, если бы не хотел помочь хоть немного сделать безопасным

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

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

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


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

 

Если не затруднит, поясните свою точку зрения.

В каком смысле? Нет прямого линка на файл, пусть даже вы его там тысячу раз "ресайзили" и проверяли, все это обходится. Нельзя давать линк на файл прямо на сервере. А этим методом вы маскируете, заодно можно еще пару раз там "проверить" :)

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От markimax

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


      SEO CMS TOP 2: Блог | Новости | Отзывы | Галерея | Формы
       
        
      Логин / пароль:
      demo / demo
      Документация и описание
      Более 8500 интернет магазинов выбрали модуль для работы
      Модуль делает из opencart полноценную CMS
      Модуль адаптирован (сетка верстки) под ЛЮБУЮ тему,
      даже самую не стандартную, выполненную согласно
      требованиям разработчиков opencart
      (есть автоадаптер тем в один клик)
      Факт: использование модуля повышает место в выдаче поиска поисковиков
      (модуль оптимизирован под seo)
      Версии с которыми совместим данный модуль: все версии и сборки на базе opencart OpenCart:1.5.x,2.x, 2.1.x, 2.2.x, 2.3.x ocStore: 1.5.x, 2.1.x, 2.3.x Модуль Блог версии 3.* Поддерживаемые языковые расширения в комплекте: Russian English Рекомендую SEO CMS mod for Image Compressor & Watermark 1.1.0
      Добавляет суперсжатие JPEG, PNG и watermark для модуля
       
      IMGeneratorSeoSCT - Генератор сео текстов и описаний для SEO CMS TOP 2 (синонимайз)   Чем данный модуль лучше других: Не перезаписываетсистемных файлов Opencart Не требует и не использует VQmod Не требует и не использует OCMOD Не требует и не использует ioncube Легкая установка Полное кеширование виджетов Работает со всеми известными SEO модулями ( SEO PRO , SEO Pack PRO, seo url, cached ...) Имеет свой SEO виджет Гибкая настройка Большое количество виджетов "Видимость" блогов и записей для разных групп покупателей Реализация галереи Реализация отзывов Реализация html вставок Возможность ответов на комментарий Слежение и оповещение о новых комментариях к записи по e-mail Возможности опросов Поддержка отзывов с возможностью вывода html и редактирования bbcode в визуальном редакторе RSS Sitemap (для категорий блога, записей, отзывах о магазине, галерей, опросов, faq и т.п.) Древовидное представление комментариев Отзывы для товаров с ответами в виде дерева и рейтингом каждого комментария Редактирование даты отзывов товара Отзывы индексируются всеми поисковиками Рейтинги комментариев Вывод списка отзывов товарови записей (кешируемый), с различными гибкими настройками Скорость Кеширование SEO виджета Расширенные возможности кеширования Что можно реализовать на базе модуля: Новости Блоги Статьи Галереи Отзывы Акции FAQ Голосования / Опросы (с пользовательскими вариантами ответов) Вставки HTML Баннеры ... (дополните сами, архитектура гибкая...) Возможности: Неограниченное количество записей "Видимость" блогов и записей для разных групп покупателей Поддержка мультимагазинов Дата начала публикации и дата окончания публикации записей Краткий и полноценный анонс записи (CKEditor) Поддержка мультиязычности Поддержка SEO Pro и всех известных SEO модулей Возможности кратких SEO ссылок Настройки закрытия SEO ссылки слешем Отдельные настройки для категорий (блогов) Древовидное представление комментариев Возможность ответа на комментарий Рейтинг комментария Ввод символов капчи мышкой Возможность редактирования записи из frontend сайта Ссылки записей (статей) на продукты Похожие записи (статьи) Неограниченная вложенность и представление категорий (блогов) Настройки шаблонов, отдельно для виджетов и категорий Настройки шаблонов для списков, записей, комментариев Настройки для "обрезания" описаний по количеству символов, по количеству слов, по количеству предложений Поиск по записям RSS Вывод списка записей (новостей) в любой колонке и схеме, с индивидуальными настройками Отзывы для товаров с ответами в виде дерева и рейтингом каждого комментария ... Демо модуля: http://oc2.opencartadmin.com Административная часть: http://oc2.opencartadmin.com/admin/index.php?route=module/blog Логин: demo Пароль: demo   Инструкция по установке модуля в архиве "ЕСЛИ ЧТО-ТО ДОЛГО НЕ ПОЛУЧАЕТСЯ - ПРОЧТИТЕ НАКОНЕЦ ИНСТРУКЦИЮ!" Закон Мерфи   Техническая поддержка Установка Требования Обновление Глоссарий Детальная инструкция к модулю SEO CMS  
      https://opencartforum.com/files/file/2636-инструкция-к-модулю-seo-cms-pro/ Документация Лицензия Все права на модуль принадлежат разработчикам opencartadmin.com Условия использования лицензии: один домен - одна лицензия (покупка продукта для каждого домена). Условия использования лицензии - "на владельца". Далее... Для XDS Coloring Theme в "коробке" модуля уже идут адаптированные шаблоны Для MoneyMaker 2 в "коробке" модуля уже идут адаптированные шаблоны Советую обратить внимание на Виджет "Уведомления" для модуля SEO CMS и ckeditor в категориях и записях для SEO CMS TOP 2 от разработчика klaos27   А также на модуль
      HYPER Positions - 71 позиция модулей \ 24 блока Добавил markimax Добавлено 24.03.2015 Категория Блоги, новости, статьи Системные требования PHP 5.3 или выше Сайт разработчика https://opencartadmin.com/index.php?route=account/download Старая цена 1490 Метод активации Через официальный сайт дополнения Ioncube Loader Нет OpenCart 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.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От markimax
       
        
      Логин / пароль:
      demo / demo
      Документация и описание
      Более 8500 интернет магазинов выбрали модуль для работы
      Модуль делает из opencart полноценную CMS
      Модуль адаптирован (сетка верстки) под ЛЮБУЮ тему,
      даже самую не стандартную, выполненную согласно
      требованиям разработчиков opencart
      (есть автоадаптер тем в один клик)
      Факт: использование модуля повышает место в выдаче поиска поисковиков
      (модуль оптимизирован под seo)
      Версии с которыми совместим данный модуль: все версии и сборки на базе opencart OpenCart:1.5.x,2.x, 2.1.x, 2.2.x, 2.3.x ocStore: 1.5.x, 2.1.x, 2.3.x Модуль Блог версии 3.* Поддерживаемые языковые расширения в комплекте: Russian English Рекомендую SEO CMS mod for Image Compressor & Watermark 1.1.0
      Добавляет суперсжатие JPEG, PNG и watermark для модуля
       
      IMGeneratorSeoSCT - Генератор сео текстов и описаний для SEO CMS TOP 2 (синонимайз)   Чем данный модуль лучше других: Не перезаписываетсистемных файлов Opencart Не требует и не использует VQmod Не требует и не использует OCMOD Не требует и не использует ioncube Легкая установка Полное кеширование виджетов Работает со всеми известными SEO модулями ( SEO PRO , SEO Pack PRO, seo url, cached ...) Имеет свой SEO виджет Гибкая настройка Большое количество виджетов "Видимость" блогов и записей для разных групп покупателей Реализация галереи Реализация отзывов Реализация html вставок Возможность ответов на комментарий Слежение и оповещение о новых комментариях к записи по e-mail Возможности опросов Поддержка отзывов с возможностью вывода html и редактирования bbcode в визуальном редакторе RSS Sitemap (для категорий блога, записей, отзывах о магазине, галерей, опросов, faq и т.п.) Древовидное представление комментариев Отзывы для товаров с ответами в виде дерева и рейтингом каждого комментария Редактирование даты отзывов товара Отзывы индексируются всеми поисковиками Рейтинги комментариев Вывод списка отзывов товарови записей (кешируемый), с различными гибкими настройками Скорость Кеширование SEO виджета Расширенные возможности кеширования Что можно реализовать на базе модуля: Новости Блоги Статьи Галереи Отзывы Акции FAQ Голосования / Опросы (с пользовательскими вариантами ответов) Вставки HTML Баннеры ... (дополните сами, архитектура гибкая...) Возможности: Неограниченное количество записей "Видимость" блогов и записей для разных групп покупателей Поддержка мультимагазинов Дата начала публикации и дата окончания публикации записей Краткий и полноценный анонс записи (CKEditor) Поддержка мультиязычности Поддержка SEO Pro и всех известных SEO модулей Возможности кратких SEO ссылок Настройки закрытия SEO ссылки слешем Отдельные настройки для категорий (блогов) Древовидное представление комментариев Возможность ответа на комментарий Рейтинг комментария Ввод символов капчи мышкой Возможность редактирования записи из frontend сайта Ссылки записей (статей) на продукты Похожие записи (статьи) Неограниченная вложенность и представление категорий (блогов) Настройки шаблонов, отдельно для виджетов и категорий Настройки шаблонов для списков, записей, комментариев Настройки для "обрезания" описаний по количеству символов, по количеству слов, по количеству предложений Поиск по записям RSS Вывод списка записей (новостей) в любой колонке и схеме, с индивидуальными настройками Отзывы для товаров с ответами в виде дерева и рейтингом каждого комментария ... Демо модуля: http://oc2.opencartadmin.com Административная часть: http://oc2.opencartadmin.com/admin/index.php?route=module/blog Логин: demo Пароль: demo   Инструкция по установке модуля в архиве "ЕСЛИ ЧТО-ТО ДОЛГО НЕ ПОЛУЧАЕТСЯ - ПРОЧТИТЕ НАКОНЕЦ ИНСТРУКЦИЮ!" Закон Мерфи   Техническая поддержка Установка Требования Обновление Глоссарий Детальная инструкция к модулю SEO CMS  
      https://opencartforum.com/files/file/2636-инструкция-к-модулю-seo-cms-pro/ Документация Лицензия Все права на модуль принадлежат разработчикам opencartadmin.com Условия использования лицензии: один домен - одна лицензия (покупка продукта для каждого домена). Условия использования лицензии - "на владельца". Далее... Для XDS Coloring Theme в "коробке" модуля уже идут адаптированные шаблоны Для MoneyMaker 2 в "коробке" модуля уже идут адаптированные шаблоны Советую обратить внимание на Виджет "Уведомления" для модуля SEO CMS и ckeditor в категориях и записях для SEO CMS TOP 2 от разработчика klaos27   А также на модуль
      HYPER Positions - 71 позиция модулей \ 24 блока
    • От Nannco
      Подскажите как можно отобразить большее количество отзывов на странице товара?

      Сейчас всего 6 отзывов, а во вкладке "отзывов" отображаются только 5 и переключившись на вторую страницу 1-отзыв, хотелось бы хотя бы 10 последних отзывов на одной странице. 
       
      Возможно увеличить? 
    • От hahaysdas
      Образовалась такая проблема. При переезде сайта на https, пагинация отзывов не работает. Открывается только первая страница с 5 отзывами, вторая и последующие страницы не открывает. На http всё работает.
      Перенаправление на https указано в .htaccess
      #Редирект с www to non-www(https) RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] #Редирект с http to https RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]  
    • От Mark54
      Здравствуйте, как реализовать возможность ответа администратора на отзыв? т е сделать еще одно поле «Ответ администратора» и выводить его после поля отзыва.
       
       
  • Последние посетители   0 пользователей онлайн

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