Настройки, оптимизации, фичи, для OpenCart

Настройки, оптимизации, фичи, для OpenCart
В данной статье наша студия веб-разработки «Движок» решила собрать основные настройки, советы, фичи которые накопились при опыте создания Интернет-магазинов на CMS Opencart. Надеемся это будет полезно. В данной статье Вы найдете: Совет после установки движка на хостинг, Нормальная ссылка на логотипе, Избавляемся от дублей главной страницы, Убираем или редактируем надпись внизу страницы «Работает на Opencart», .htaccess для сайта Opencart, Закрытие серьезной уязвимости в OpenCart, Отзывы в Opencart для товаров, делаем их индексируемыми для поисковиков, Ускоряем opencart при большом количестве товаров, Делаем один язык в opencart или убираем английский, Ключевые слова на главной странице и другое.

Совет после установки движка на хостинг

1) Заходим в панель администратора, далее «Система» — «Настройки» — «Управление магазинами» — жмем «Изменить». Заходим во вкладку «Сервер» и находим раздел «Ключ шифрования:» (значение которого имеет вид 0e485dc46ab8fd0ca460340a0f7a3359 ). Заменяем его на свой-любой (формат UTF8).

Попутно в данной вкладке включаем ЧПУ. Тип ЧПУ выбираем SeoPro. Включаем «ЧПУ товаров с категориями». «Окончание ЧПУ» — пишем как «.html».

Жмем кнопку сохранить. В корне сайта (магазина) находится файл «.htaccess.txt». Переименовываем его в «.htaccess» (обязательно !!!). Многие забывают это сделать и как следствие красивые урлы страниц не генерируются. Теперь наши страницы с созданными товарами будут иметь вполне красивый вид, типа http://ваш сайт.ua/категория/имя_товара.html, вместо: http://site.ru/index.php?route=product/product&path=20&product_id=40.

2) Для повышения безопасности интернет-магазина на OpenCart после установки движка не забываем удалить папку install и изменить права на файлы: «config.php» и «/admin/config.php» на 444. Не лишнем будет и защитита папки «admin» при помощи файлов «.htpasswd» и «.htaccess». Т.е. доступ к ней будет получен только после ввода логина и пароля. Это можно сделать через панель управления хостингом cPanel, либо найти информацию о защите папок при помощи «.htpasswd» и «.htaccess» в интернете (там ее предостаточно). Если у Вас статичный IP-адрес и Вы уверенны, что он не изменится, то можно поместить в директорию «admin» файл .htaccess примерно следующего содержания:

Order Deny,Allow
Deny from all
Allow from Ваш_IP_адрес

Делаем нормальную ссылку при нажатии на логотип сайта

Ранее мы уже писали как изменить ссылку на Главной странице Opencart, но решили снова описать данное решение и сейчас.

Открываем файл: system/library/url.php
Находим строчки (с 25 по 27):

if ($args) {
$url .= str_replace('&', '&', '&' . ltrim($args, '&'));
}

После них вставляем следующий кусок:
else {
if($route == 'common/home') {
if($connection == 'NONSSL') { return HTTP_SERVER; }
else { return HTTPS_SERVER; }
}
}

Вот и все.

Избавляемся от дублей главной страницы

Изначально, главная страница сайта на CMS Opencart доступна по следующим адресам: http://www.site.ru/, http://site.ru/, http://site.ru/index.php, http://www.site.ru/index.php. Это очень плохо, ведь для поисковиков это четыре разных страницы (разные URL). Если не принять меры, то поисковые системы добавят в свой индекс четыре одинаковых страницы. А это признак некачественного сайта. Для того, чтобы избежать такой проблемы в файл «.htaccess», расположенный в корне сайта допишем после RewriteEngine On следующие строки:

# Редирект c www на без www
RewriteCond %{HTTP_HOST} ^www.site.ua
RewriteRule ^(.*)$ http://site.ua/$1 [R=301,L]
# Редирект для главной (с /index.php на /)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/
RewriteRule ^index\.html$ / [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]

Все дубли главной страницы будут склеены редиректом с кодом 301 («постоянное перемещение») с главной страницей – http://site.ua/. Желательно также назначить совпадающее основное зеркало в файле robots.txt. Внизу этого файла дописываем строчку:
Host: site.ua
Разумеется везде, вместо site.ua — используйте свой домен.
Бывает, что после применения редиректа с www на без www или наоборот, становится невозможно авторизоваться на сайте в качестве администратора. Для решения этой проблемы (используя ftp доступ к сайту) смотрим и при необходимости редактируем пути в файле «config.php» в папке «admin» и «корневой» директории магазина.

Убираем или редактируем надпись внизу страницы «Работает на Opencart»

Данный метод был реализован на OpenCart версии 1.5.3.1.
Внизу сайта (интернет-магазина) видим надпись и ссылку на сайт http://myopencart.ru/:
Работает на OpenCart
Название_магазина © 2012

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

\catalog\view\theme\default\template\common\footer.tpl

Внизу файла удаляем строку:
<div id="powered"><?php echo $powered; ?></div>
Либо в это место «футера» вставим счетчики посещаемости. Тогда строка будет вида:
<div id="powered"><span>код_счетчика</span></div>
С помощью css стилей можно отредактировать отступы и выравнивание для блока счетчиков.
Для этого идем в папку и открываем файл

\catalog\view\theme\default\stylesheet\stylesheet.css

В его конце (строка 1627, примерно) находим идентификатор «powered»
#powered {
margin-top: 5px;
text-align: right;
clear: both;
}

robots.txt для OpenCart

Для закрытия от индексации дублей страниц в OpenCart предлагаем файл robots.txt.
Если в нем что-нибудь забыли указать, то просьба знающих людей дополнить или поправить…

User-agent: *
Disallow: /admin
Disallow: /cache
Disallow: /niks
Disallow: /catalog
Disallow: /download
Disallow: /export
Disallow: /system
Disallow: /index.php?route=account
Disallow: /index.php?route=account/account
Disallow: /index.php?route=checkout/cart
Disallow: /index.php?route=checkout/shipping
Disallow: /index.php?route=common/home
Disallow: /index.php?route=product/product/captcha
Disallow: /index.php?route=product/product*&manufacturer_id=
Disallow: /index.php?route=product/search
Disallow: /index.php?route=information/contact/captcha
Disallow: /index.php?route=information/information&information_id=
Disallow: /index.php?route=account/login
Disallow: /*route=account/
Disallow: /*route=account/login
Disallow: /*route=checkout/
Disallow: /*route=checkout/cart
Disallow: /*route=affiliate/
Disallow: /*route=product/search
Disallow: /*?sort=
Disallow: /*?sort
Disallow: /*&sort=
Disallow: /*?order=
Disallow: /*?order
Disallow: /*&order=
Disallow: /*?limit=
Disallow: /*&limit=
Disallow: /*?filter_name=
Disallow: /*&filter_name=
Disallow: /*?filter_sub_category=
Disallow: /*&filter_sub_category=
Disallow: /*?filter_description=
Disallow: /*&filter_description=
Disallow: /*?tracking=
Disallow: /*&tracking=
Disallow: /*?manufacturer
Disallow: /*?keyword
Sitemap: http://site.ua/sitemap.xml- меняем на свой адрес к карте сайта
Host: site.ua - меняем на свой домен

Закрытие серьезной уязвимости в OpenCart

Была замечена до версии 1.5.4.1 включительно.

http://ваш_сайт/system/logs/error.txt

И весь журнал ошибок доступен для всех
Так делать нельзя, потому что бывают ошибки SQL, из-за которых можно получить логин и адрес сервера mysql, а также получить логин и хеш пароля пользователя (в случае ошибки mysql при авторизации), который в принципе можно взломать.

C аналогичной уязвимостью в ранних версиях 1C-Битрикс, хакеры уводили базы данных сайтов. http://habrahabr.ru/post/165999/
Поэтому рекомендуем, почаще чистить журнал, или закройте доступ к файлу в .htaccess, иначе в error.txt можно многое узнать про сайт.

Рекомендуем прописать в конце или в начале файла .htaccess:
<FilesMatch "\.(tpl|ini|log|)">
Order deny,allow
Deny from all
</FilesMatch>

Таким образом перекроем доступ и к файлу vqmod.log и другим, кое где платежные логи есть.

Файл .htaccess для сайта Opencart

Разумеется адрес site.ua меняем на СВОЙ ДОМЕН

Options +FollowSymlinks
Options -Indexes
<FilesMatch "error.(txt)$">
Order Allow,Deny
Deny from all
</FilesMatch>
<FilesMatch "\.(tpl|ini|log|)">
Order deny,allow
Deny from all
</FilesMatch>
RewriteEngine On
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
# Редирект c www на без www
RewriteCond %{HTTP_HOST} ^www.site.ua
RewriteRule ^(.*)$ http://site.ua/$1 [R=301,L]
# Редирект для главной (с /index.php на /)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/
RewriteRule ^index\.html$ / [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index\.php$ / [R=301]
# php_flag register_globals off
# php_flag magic_quotes_gpc Off
# php_value upload_max_filesize 999M
# php_value post_max_size 999M
# php_value max_execution_time 200
# php_value max_input_time 200
# php_admin_value open_basedir none
<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
<ifModule mod_headers.c>
Header append Vary User-Agent
</ifModule>

Отзывы в Opencart для товаров, делаем их индексируемыми для поисковиков

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

catalog/view/theme/ВАША_TEMA/template/product/product.tpl

Находим там строку:
<div id="review"></div>

Заменим ее на следующий код:

<?php $reviews = $this->model_catalog_review->getReviewsByProductId($product_id);
if ($reviews) {
foreach ($reviews as $review) {
echo '
<div class="content">

<strong>'.$review['author'].'</strong> - ';
$date = strtotime($review['date_added']);
echo date('d M Y',$date); ?>

<img src="catalog/view/theme/default/image/stars_<?php echo $review['rating'] ?>.png" alt="<?php echo $review['rating'] ?> из 5 звёзд!" />

<?php echo $review['text'].'

</div>
';
}
} else { ?>
<div class="content"><?php echo "Нет отзывов"; ?></div>
<?php } ?>

Вот и все.

Ускоряем opencart при большом количестве товаров

Если у Вас большое количество товаров(больше 7000) то опенкарте начинает виснуть, страницы долго открываются.
Решения покупать виделеный сервер или сервер и самое главное правильно настроить сервер баз данных MySQL, а именно:

key_buffer = 400M
max_allowed_packet = 48M
table_cache = 1024
sort_buffer_size = 4m
read_buffer_size = 4m
read_rnd_buffer_size = 2m
myisam_sort_buffer_size = 64m
tmp_table_size = 96m
query_cache_type = 1
query_cache_size = 64m
thread_cache_size = 16
max_connections = 300
wait_timeout = 120

После этого нужен перезапустить mySQL или весь сервер.
Помните, для хорошей работы opencart достаточно нормального хостинга:
Hosting Ukraine

Делаем один язык в opencart или убираем английский

Opencart 1.5.x
1) Самый легкий способ, если вы хотите сделать магазин только на русском — просто удалить английский язык через админку Opencart: Система — Локализация — Языки. Но иногда такой способ не проходит — потому, что английский это fallback language то есть системный язык для некоторых шаблонов, например shoppica 2. Поэтому при его удалении может выдать кучу ошибок.

2) Если стоит задача оставить только один язык на сайте, но не удалять английский, то при добавлении товара название товара все равно приходится заполнять для английской вкладки — такова логика работы самого Opencart. Сами разработчики насчёт этой проблемы высказываются в духе «это не баг, а фича» или кому надо тот найдет решение.
Решение представляется таким: сделать поле название товара для английской вкладки необязательным.
Для этого находим и открываем

\admin\controller\catalog\product.php

строка 1301

/*foreach ($this->request->post['product_description'] as $language_id => $value) {
if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 255)) {
$this->error['name'][$language_id] = $this->language->get('error_name');
}
}*/

В итоге имеем один язык на сайте.

Ключевые слова на главной странице

Есть 2 варианта:
Первый вариант:
— Добавить модуль на сайт — который скачиваем по ссылке ниже.
— Добавляет в админке (Система-Настройки-Ваш магазин-Витрина) настройку поля Мета-тег «Ключевые слова».
Скачиваем архив с модулем:
Скачать vqmod_shop_settings_meta_keywords (390 downloads)

Вариант второй — вносим изменения руками:
Открываем файл:

/catalog/view/theme/default/template/common/header.tpl​

Находим
<?php if ($keywords) { ?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<?php } ?>

Заменяем на

<?php if ($keywords) { ?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<?php } else { ?>
<meta name="keywords" content="через, запятую, все, ключевые, слова, которые, для, главной, странице" />
<?php } ?>

Сохранить файл после изменений необходимо в кодировке «UTF-8».

Расширяем возможности стандартного редактора CKEditor

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

В файле

admin\view\javascript\ckeditor\config.js

Меняем строку
config.toolbar = 'Custom';
на строку
config.toolbar = 'Full';
После чего может потребоваться очистить кэш вашего браузера, нажав Ctrl + F5. Если ничего не изменилось, очистите кэш вручную (всмысле через меню браузера).
В CKEditor'e появится много дополнительных возможностей.

На этом все, если Вы хотите «поблагодарить» наш информационный портал о веб-разработке — у вас есть такая возможность: справа есть варианты для пожертвований на развитие портала. Или поделитесь статьей в ваших соц.стеях через сервисы ниже.

Отправить ответ

Please Login to comment
Войти с помощью: 
  Subscribe  
Notify of
Authorization
*
*
Войти с помощью: 
Registration
*
*
*
Войти с помощью: 

2 × 2 =

Password generation