Конфигуриране, оптимизиране, функции, статии за OpenCart

От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Oще нещо което може да е полезно на някой! Полето Модел в админа да не е задължително

Редактирайте файла /admin/controller/catalog/product.php
намерите следния ред:
Код:
 private function validateForm() {
if (!$this->user->hasPermission(‘modify’, ’catalog/product’)) {
$this->error['warning'] = $this->language->get(‘error_permission’);
}
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’);
}
}
if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
$this->error['model'] = $this->language->get(‘error_model’);
}
if ($this->error && !isset($this->error['warning'])) {
$this->error['warning'] = $this->language->get(‘error_warning’);
}

И го заменете с:
Код:
private function validateForm() {
if (!$this->user->hasPermission(‘modify’, ’catalog/product’)) {
$this->error['warning'] = $this->language->get(‘error_permission’);
}
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’);
}
}
/*if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
$this->error['model'] = $this->language->get(‘error_model’);
}*/
if ($this->error && !isset($this->error['warning'])) {
$this->error['warning'] = $this->language->get(‘error_warning’);
}
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Правилнo странициране на продуктите в раздела за промоции/специални предложения.(за версия 1.5.5, 1.5.5.1 и 1.5.6)

Въпреки, че този "бъг" беше решен преди време виждам, че упорито си присъства в инсталациите на посочените по-горе версии в официалния сайт. Забелязох, че и на повечето безплатни(а и на някои премиум) теми разработчиците не са си направили труда да го оправят.
В какво се състои самия "бъг" :

В раздела "Специални Предложения"(Special Offers) ограничението за брой продукти, които трябва да се покажат на текущата страница(лимита) винаги ще бъде възможно най-големия( стандартно 100 ), независимо колко ще посочите от html падащото меню(селекта) отговарящ за това.

Причината за това е презаписване стойността на променливата отговаряща за ограничението(лимита) при странициране.

Решението:

в контролера намниращ се в catalog/controller/product/special.php намерете следните редове(обикновенно започващи от ред 229):

Код:
foreach($limits as $limit){
	$this->data['limits'][] = array(
		'text'  => $limit,
		'value' => $limit,
		'href'  => $this->url->link('product/special', $url . '&limit=' . $limit)
	);
}

заменете ги с :

Код:
foreach($limits as $limits){
	$this->data['limits'][] = array(
		'text'  => $limits,
		'value' => $limits,
		'href'  => $this->url->link('product/special', $url . '&limit=' . $limits)
	);
}

Това е, вече ограничението при страницирането ще работи правилно. :)
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Автопопълване на поле "Модел"

В файла admin/view/template/catalog/product_form.tpl

Заменяме:
Код:
 <td><input type="text" name="model" value="<?php echo $model; ?>" />

с

Код:
<td><input type="text" name="model" value="<?php echo $model; ?><?php if ($model) {} else {$urunkodu = date("ymdhis"); echo $urunkodu;} ?>" />
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Направете изглед "мрежа" по подразбиране в категориите

Във файла на шаблона /темата/ : catalog/view/theme/вашата_тема/template/product/category.tpl, е необходимо вместо "list" да се напише "grid"

В края на файла, намерете редовете:

if (view) {
display(view);
} else {
display('list');
}

и поменете list на grid.
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Slide Like Box Facebook
floating+facebook+widget.png


Отворете файла catalog / view / theme / youtheme / template / common / header.tpl

След тага <body>

поставете следния
Код:
<script type="text/javascript">
//<!--
$(document).ready(function() {$(".w2bslikebox").hover(function() {$(this).stop().animate({right: "0"}, "medium");}, function() {$(this).stop().animate({right: "-250"}, "medium");}, 500);});
//-->
</script>
<style type="text/css">
.w2bslikebox{background: url("http://2.bp.blogspot.com/-S3wMYM5ABsk/Tv57qFo1odI/AAAAAAAAAUw/8NkdLv4d9bo/s1600/w2b_facebookbadge.png") no-repeat scroll left center transparent !important;display: block;float: right;height: 270px;padding: 0 5px 0 46px;width: 245px;z-index: 99999;position:fixed;right:-250px;top:20%;}
.w2bslikebox div{border:none;position:relative;display:block;}
.w2bslikebox span{bottom: 12px;font: 8px "lucida grande",tahoma,verdana,arial,sans-serif;position: absolute;right: 6px;text-align: right;z-index: 99999;}
.w2bslikebox span a{color: #808080;text-decoration:none;}
.w2bslikebox span a:hover{text-decoration:underline;}
</style><div class="w2bslikebox" style=""><div><iframe src="http://www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com/bgfishingshop&amp;width=245&amp;colorscheme=light&amp;show_faces=true&amp;connections=9&amp;stream=false&amp;header=false&amp;height=270" scrolling="no" frameborder="0" scrolling="no" style="border: medium none; overflow: hidden; height: 270px; width: 245px;background:#fff;"></iframe></div></div>

Внимание заменете www.facebook.com/bgfishingshop с вашата фейсбук страница!!!

Ако инсталацията на Opencart е версия по стара от 1.5.4.1 то добавете шреди тага </head>
Код:
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>

Разбирасе чувствайте се свободни да изменяте параметрите както Ви харесва.

height: 477px
connections=24
float: left
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Добавяне на количество в страницата с категорията.

Пример:
db3067456938.jpg


отваряте файла catalog/view/javascript/common.js
и намирате функцията :
Код:
function addToCart(product_id)

сменяте я с този
Код:
 function addToCart(product_id, el) {
	if ($(el).parent().children('input[name="quantity"]').val() != 'undefined') {
		quantity = $(el).parent().children('input[name="quantity"]').val();
	} else {
		quantity = 1;
	}
 
	$.ajax({
		url: 'index.php?route=checkout/cart/update',
		type: 'post',
		data: 'product_id=' + product_id + '&quantity=' + quantity,

Отиваме на catalog/view/theme/ваша тема/template/product/category.tpl
и търсим <div class="cart"></div>
сменяме го на
Код:
 <div class="cart"><span class="kg">кг</span> <br> <a class="qtyplus" href="#">+</a><br> <a class="qtyminus" href="#">-</a><input type="text" size="3" id="quantity-<?php echo $product['product_id']; ?>" name="quantity" value="1" class="lerr" /> <a onclick="addToCart('<?php echo $product['product_id']; ?>', this);" class="button"><span>ок.</span></a></div>

В същия файл добавяме най-долу:
Код:
 <script language="javascript">
$(function() {
	$('.cart').each(function() {
		var asd = $(this);
		asd.find('a.qtyminus').click(function() {
			var data = asd.find('input').val();
			if(data > 0) {
				asd.find('input').val(parseInt(data) - 1);
			}
			return false
		});
		asd.find('a.qtyplus').click(function() {
			var data = asd.find('input').val();
			asd.find('input').val(parseInt(data) + 1);
			return false
		});
	});
});
 
</script>
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Увеличаването на "тежестта" на линковете на продуктовата категория (тестван на v1.5.4)

Ако е разрешена опцията SEO URLр то в страницата на продукта в тага <head> се добавя канонично име на страницата <link href="http://your.domain.com/seo_url" rel="canonical"/>, което казва на робота приоритетния адрес на тази страница.

По аналогия, същия алгоритъм трябва да се използва и за категорията на продукта, но явно разработчиците са забравили да го добавят.

В файла ./catalog/controller/product/category.php след реда:
Код:
$this->document->setKeywords($category_info['meta_keyword']);

добавете:
Код:
$this->document->addLink($this->url->link('product/category', 'path=' . $this->request->get['path']), 'canonical');
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Аз лично съм добавил подобен каноничен линк и за страницата на производителите тъй като и там се генерират около десет различни страници с еднакво съдържание поради наличие на продукти.

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

Код:
$this->document->addLink($this->url->link('product/category', 'path=' . $category_info['cateogry_id']), 'canonical');

Колкото по-близко до основната директория / е линка, толкова по-добре. Да не говорим, че при OpenCart няма реална йерархия на категориите и подобни извращения от рода на:

http://demo.opencart.com/index.php?route=product/category&path=78947_283_4729_blabla_46 (пълен абсурд)
http://demo.opencart.com/index.php?route=product/category&path=34_27_34_18_25_18 (микс от категории, незнайно коя от къде е)
http://demo.opencart.com/index.php?route=product/category&path=18_18_18_18_18_18 (и така до безкрай)

са си абсолютно възможни.
 
  • Like
Реакции: CTAH
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Здравейте,

въпрос към СТАН:

Толкова ли е ВЕЛИКО в този форум да работиш с два профила ( СТАН и stan_BG), че и да си даваш репутация от единия на другия профил, АДМИНИТЕ спят ли или това е ОБИЧАЙНА практика в този форум.

Отделно от това, не е нужно да се правиш на ГУРУ на OPENCART и да предоставяш УЖ свои решения за Opencart, а всъщност всички са копирани БУКВАЛНО и преведени, в някои случаи с Google преводач от руския форум на Opencart.

Съвсем нормално е да поставиш и линк към източника. Дотук в темата няма нито едно твое решение, всичко е от руския форум, ако трябва ще постна и линк.

Може и наистина да си добър в Opencart-а, но в момента се ИЗЛАГАШ, но може пък такава да е практиката тук, да се толерират някои членове на форума, които се правят на велики разбирачи.
 
От: От: Конфигуриране, оптимизиране, функции, статии за OpenCart

seos
seos Е онлайн в момента Junior Member

Регистриран от
Dec 2013
Мнения
2

Rep Power
0

Направи нов профил само за да спамиш темата ?!??!?!!!
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Здравейте,

въпрос към СТАН:

Толкова ли е ВЕЛИКО в този форум да работиш с два профила ( СТАН и stan_BG), че и да си даваш репутация от единия на другия профил, АДМИНИТЕ спят ли или това е ОБИЧАЙНА практика в този форум.

Отделно от това, не е нужно да се правиш на ГУРУ на OPENCART и да предоставяш УЖ свои решения за Opencart, а всъщност всички са копирани БУКВАЛНО и преведени, в някои случаи с Google преводач от руския форум на Opencart.

Съвсем нормално е да поставиш и линк към източника. Дотук в темата няма нито едно твое решение, всичко е от руския форум, ако трябва ще постна и линк.

Може и наистина да си добър в Opencart-а, но в момента се ИЗЛАГАШ, но може пък такава да е практиката тук, да се толерират някои членове на форума, които се правят на велики разбирачи.


Тъй като и моя никнейм е споменат нека да отговоря и аз докато според думите ти "моето второ аз" се изкаже срещу нападките ти.

Да, наистина има голямо съвпадение между никнеймовете предружено с един общ интерес, но това е всичко общо между нас. Не познавам СТАН лично, но не мисля че има раздвоение на личността. Не знам дали ти в момента се излагаш, но със сигурност си се объркал в заключенията си.

п.с. Нека хората, от които зависи да преместят в отделна тема мненията, които не са свързани с въпросната система за онлайн търговия.
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Фиксация на проверката за правата за запис на папките за кеш, кеш снимки, изтегляния и логове в админ панела.

Този проблем засяга всички налични версии за сваляне от официалната страница. След като докладвах за него не знам дали не е оправен вече в официалните изтегляния, защото не съм ги свалял(знам само че го промениха в гитхъб). В новата бъдеща версия 2.0 този проблем го няма поради факта, че тази проверка вече е премахната. При неправилно зададени права на изброените по-горе папки или ако поради някаква причина са били изтрити в началната страница в администраторския панел трябва да ви се появи предупреждение, че не е позволено записване в тях(както ви се появява съобщение за изтриване на инсталационната папка), но поради грешка в кода това няма как да стане. Ако е изключено визуализирането на грешки, обикновения потребител няма да знае какъв е проблема, тъй като няма да му се появи съответното съобщение.

Отворете следния файл admin/controller/common/home.php, намерете следните редове(не следват един след друг както съм ги дал тук):

PHP:
$this->data['error_image'] = sprintf($this->language->get('error_image'). DIR_IMAGE);
$this->data['error_image_cache'] = sprintf($this->language->get('error_image_cache'). DIR_IMAGE . 'cache/');
$this->data['error_cache'] = sprintf($this->language->get('error_image_cache'). DIR_CACHE);
$this->data['error_download'] = sprintf($this->language->get('error_download'). DIR_DOWNLOAD);
$this->data['error_logs'] = sprintf($this->language->get('error_logs'). DIR_LOGS);

и заменете "."(точката) със запетая "," преди DIR_IMAGE, DIR_IMAGE . 'cache/', DIR_CACHE, DIR_DOWNLOAD и DIR_LOGS константи. По този начин оказваме правилно нужния втори параметър за функцията sprintf.
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Докато са нещата на тема каноникал да споделя аз как съм го направил. Не знам кой е правилният начин, но този ми се стори удачен.

във /catalog/view/theme/темата/template/common/header.tpl

търсиш

Код:
<link href="<?php echo $link['href']; ?>" rel="<?php echo $link['rel']; ?>" />

и го променяш на

Код:
<link rel="<?php echo $link['rel']; ?>" href="<?php echo $link['href']; ?>" />
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Докато са нещата на тема каноникал да споделя аз как съм го направил. Не знам кой е правилният начин, но този ми се стори удачен...

И двата начина са правилни. Позицията на атрибутите в html таговете не е от значение за търсачките. Варианта се определя от стила на писане на фронт-енд разработчика.
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Сортиране по наличност в категорията. Тествано на OpenCart 1.5.4.1

Отваряте /catalog/controller/product/category.php

след :
Код:
 $this->data['sorts'] = array();
 
$this->data['sorts'][] = array(
  'text'  => $this->language->get('text_default'),
  'value' => 'p.sort_order-ASC',
  'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
);

Изберете на коя позиция в списъка да сложите
Код:
//stock sorting
$this->data['sorts'][] = array(
  'text'  => $this->language->get('text_stockprod'),
  'value' => 'p.quantity-DESC',
  'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.quantity&order=DESC' . $url)
);
//

В файла /catalog/language/bulgarian/product/category.php добавяте ред
Код:
 $_['text_stockprod']	= 'Налични';


След това в файла /catalog/model/catalog/product.php търсим първото съвпадение в един ред.
Код:
if (!$product_data) {

Под този ред ще видите следния код (може да бъде малко по- различен в твоя).
Код:
$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating 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)";

Задачата е да поставите малко код : "p.quantity," след "SELECT p.product_id,". да стане тъка:
Код:
$sql = "SELECT p.product_id, p.quantity, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating 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)";

и това е
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Minify / GZIP, CSS, JavaScript файлове

Код:
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

2) Включване на кеширането

Код:
# Caching information
# Note: (use A3024000 for 5 weeks or A604800 for 1 week)

# Set up caching on media files for 5 weeks
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A3024000
Header append Cache-Control "public"
</FilesMatch>

# Set up caching on media files
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$">
ExpiresDefault A604800
Header append Cache-Control "public"
</FilesMatch>
 
# Set up caching on commonly updated files
<FilesMatch "\.(xml|txt|html|js|css)$">
ExpiresDefault A604800
Header append Cache-Control "proxy-revalidate"
</FilesMatch>

# Force no caching for dynamic files
<FilesMatch "\.(php|cgi|pl|htm)$">
ExpiresActive Off
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
</FilesMatch>
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Чудех се тук или в темата с добавките да питам, но реших, че май тук е по-добре.

Интересува ме как за Опенкарт може да се направи продуктов фийд, тоест да се експортне в xml файл примерно продуктите, линкове към снимки. Идеята е максимално лесно дропшипър да може да набие продуктите в своя магазин.

Принципно имам възможност да експортвам в pdf тип ценова, но като човек, които си е късал нервите с подобни ценови не ми се иска да го причинявам на другите.
 
От: Конфигуриране, оптимизиране, функции, статии за OpenCart

Аз ползвам комбинация от тези два модула:
http://www.opencart.com/index.php?route=extension/extension/info&extension_id=5664
и
http://www.opencart.com/index.php?route=extension/extension/info&extension_id=4943

получих добри отзиви и за този :
http://www.opencart.com/index.php?r...n/info&extension_id=10197&filter_search=excel

мисля да го пробвам тея дни
 

Горе