Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Проблемка при включении SEO url в OpenCart v1.4.9.6.


FLworker

Recommended Posts

После активации SEO url на сайте только и отображается:

Error: Unknown column 'p.main_category_id' in 'field list'
Error No: 1054
SELECT IFNULL(p.main_category_id, p2c.category_id) AS category_id FROM product AS p JOIN product_to_category AS p2c USING (product_id) WHERE p.product_id = '121' LIMIT 1
Надіслати
Поділитися на інших сайтах


После активации SEO url на сайте только и отображается:

Error: Unknown column 'p.main_category_id' in 'field list'
Error No: 1054
SELECT IFNULL(p.main_category_id, p2c.category_id) AS category_id FROM product AS p JOIN product_to_category AS p2c USING (product_id) WHERE p.product_id = '121' LIMIT 1
Это значит, что в таблице БД product нет поля main_category_id .
Надіслати
Поділитися на інших сайтах


а по точней, как мне решить эту проблему?

Зайдите через PhpMyAdmin в базу данных, выберите таблицу oc_products или просто products (зависит от установки) и посмотрите есть ли там в структуре поле "main_category_id"
Надіслати
Поділитися на інших сайтах


Зайдите через PhpMyAdmin в базу данных, выберите таблицу oc_products или просто products (зависит от установки) и посмотрите есть ли там в структуре поле "main_category_id"

ее там нету, я ее добавил, но точно не знаю какие параметры в ее поля вбивать. Там надо ставить авто инкремент или нет?

я пока поставил без автоинкримента, но после переходв в категорию товаров пишет:

Not Found
The requested URL /mag2/earrings was not found on this server.

что можно еще делать? ПС: когда переменоувал вайл с .htaccses.txt в .htaccses.txt то вообще выдает 503 ошибку.

Надіслати
Поділитися на інших сайтах


ее там нету, я ее добавил, но точно не знаю какие параметры в ее поля вбивать. Там надо ставить авто инкремент или нет?

я пока поставил без автоинкримента, но после переходв в категорию товаров пишет:

Not Found
The requested URL /mag2/earrings was not found on this server.

что можно еще делать? ПС: когда переменоувал вайл с .htaccses.txt в .htaccses.txt то вообще выдает 503 ошибку.

Вот Вам структура таблицы product:

CREATE TABLE `product` (
  `product_id` int(11) NOT NULL auto_increment,
  `model` varchar(64) NOT NULL,
  `sku` varchar(64) NOT NULL,
  `location` varchar(128) NOT NULL,
  `quantity` int(4) NOT NULL default '0',
  `stock_status_id` int(11) NOT NULL,
  `image` varchar(255) default NULL,
  `manufacturer_id` int(11) NOT NULL,
  `shipping` int(1) NOT NULL default '1',
  `price` decimal(15,4) NOT NULL default '0.0000',
  `tax_class_id` int(11) NOT NULL,
  `date_available` date NOT NULL,
  `weight` decimal(5,2) NOT NULL default '0.00',
  `weight_class_id` int(11) NOT NULL default '0',
  `length` decimal(5,2) NOT NULL default '0.00',
  `width` decimal(5,2) NOT NULL default '0.00',
  `height` decimal(5,2) NOT NULL default '0.00',
  `length_class_id` int(11) NOT NULL default '0',
  `status` int(1) NOT NULL default '0',
  `date_added` datetime NOT NULL default '0000-00-00 00:00:00',
  `date_modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `viewed` int(5) NOT NULL default '0',
  `sort_order` int(11) NOT NULL default '0',
  `subtract` int(1) NOT NULL default '1',
  `minimum` int(11) NOT NULL default '1',
  `cost` decimal(15,4) NOT NULL default '0.0000',
  `main_category_id` int(11) default NULL,
  PRIMARY KEY  (`product_id`),
  KEY `status` (`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
Надіслати
Поділитися на інших сайтах


Вот Вам структура таблицы product:

CREATE TABLE `product` (
  `product_id` int(11) NOT NULL auto_increment,
  `model` varchar(64) NOT NULL,
  `sku` varchar(64) NOT NULL,
  `location` varchar(128) NOT NULL,
  `quantity` int(4) NOT NULL default '0',
  `stock_status_id` int(11) NOT NULL,
  `image` varchar(255) default NULL,
  `manufacturer_id` int(11) NOT NULL,
  `shipping` int(1) NOT NULL default '1',
  `price` decimal(15,4) NOT NULL default '0.0000',
  `tax_class_id` int(11) NOT NULL,
  `date_available` date NOT NULL,
  `weight` decimal(5,2) NOT NULL default '0.00',
  `weight_class_id` int(11) NOT NULL default '0',
  `length` decimal(5,2) NOT NULL default '0.00',
  `width` decimal(5,2) NOT NULL default '0.00',
  `height` decimal(5,2) NOT NULL default '0.00',
  `length_class_id` int(11) NOT NULL default '0',
  `status` int(1) NOT NULL default '0',
  `date_added` datetime NOT NULL default '0000-00-00 00:00:00',
  `date_modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `viewed` int(5) NOT NULL default '0',
  `sort_order` int(11) NOT NULL default '0',
  `subtract` int(1) NOT NULL default '1',
  `minimum` int(11) NOT NULL default '1',
  `cost` decimal(15,4) NOT NULL default '0.0000',
  `main_category_id` int(11) default NULL,
  PRIMARY KEY  (`product_id`),
  KEY `status` (`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

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

Надіслати
Поділитися на інших сайтах


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

Возможно .htaccess не правильно настроен!?

Надіслати
Поділитися на інших сайтах


Возможно .htaccess не правильно настроен!?

вот что у меня в .htaccess:

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled. 

# 2. In your opencart directory rename htaccess.txt to .htaccess

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listing 
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini|log)">
 Order deny,allow
 Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]


### Additional Settings that may need to be enabled for some servers 
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200
Надіслати
Поділитися на інших сайтах


Вроде .htaccess правильный. Может поле "Псевдоним" в товаре не заполнено? Если заполнено, то тогда нужно только смотреть в файлы, так не смогу сказать причину...

Надіслати
Поділитися на інших сайтах


Вроде .htaccess правильный. Может поле "Псевдоним" в товаре не заполнено? Если заполнено, то тогда нужно только смотреть в файлы, так не смогу сказать причину...

а о каком файле(файлах) идет речь?

Надіслати
Поділитися на інших сайтах


Вот как выглядит мой файл seo_url.php в папке catalog\controller\common

<?php
class ControllerCommonSeoUrl extends Controller {
	public function index() {
		if (isset($this->request->get['_route_'])) {
			$parts = explode('/', trim($this->request->get['_route_'], '/'));

			foreach ($parts as $part) {

				if( $this->config->get('config_seo_url_replace') ) {
					$part = str_replace('_', ' ', $part);
				}

				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");

				if ($query->num_rows) {
					$url = explode('=', $query->row['query']);

					switch ($url[0]) {
						case 'product_id':
							$this->request->get['product_id'] = $url[1];
							break;

						case 'category_id':
							if (!isset($this->request->get['path'])) {
								$this->request->get['path'] = $url[1];
							} else {
								$this->request->get['path'] .= '_' . $url[1];
							}
							break;

						case 'manufacturer_id':
						case 'information_id':
							$this->request->get[$url[0]] = $url[1];
							break;

						default:
							break;
					}
				} else {
					$this->request->get['route'] = 'error/not_found';
					return $this->forward('error/not_found');
				}
			}

			if (isset($this->request->get['product_id'])) {
				$reference = 'index.php?route=product/product&product_id=' . $this->request->get['product_id'];
				if ($this->checkUrl($reference) === false) {
					$this->request->get['route'] = 'error/not_found';
				} else {
					$this->request->get['route'] = 'product/product';
				}
			} elseif (isset($this->request->get['path'])) {
				$reference = 'index.php?route=product/category&path=' . $this->request->get['path'];
				if ($this->checkUrl($reference) === false) {
					$this->request->get['route'] = 'error/not_found';
				} else {
					$this->request->get['route'] = 'product/category';
				}
			} elseif (isset($this->request->get['manufacturer_id'])) {
				$this->request->get['route'] = 'product/manufacturer';
			} elseif (isset($this->request->get['information_id'])) {
				$this->request->get['route'] = 'information/information';
			}

			if (isset($this->request->get['route'])) {
				return $this->forward($this->request->get['route']);
			}
		} elseif ($this->config->get('config_seo_url') && isset($this->request->get['route'])) {
			if (isset($this->request->get['product_id']) && $this->request->get['route'] == 'product/product') {
				$reference = 'index.php?route=product/product&product_id=' . $this->request->get['product_id'];
			} elseif (isset($this->request->get['path']) && $this->request->get['route'] == 'product/category') {
				$reference = 'index.php?route=product/category&path=' . $this->request->get['path'];
			}

			if (isset($reference) && $this->checkUrl($reference) === false) {
				$this->request->get['route'] = 'error/not_found';
				return $this->forward('error/not_found');
			}
		}
	}

	private function checkUrl($reference) {
		$this->load->model('tool/seo_url');

		$seo_url = $this->model_tool_seo_url->rewrite(HTTP_SERVER . $reference, 'validate');

		if ($seo_url === false) return false;

		if (isset($this->request->get['_route_'])) {
			$url = HTTP_SERVER . $this->request->get['_route_'];
		} else {
			$url = HTTP_SERVER . 'index.php?' . urldecode(http_build_query($this->request->get));
		}

		if ($url != $seo_url) {
			header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
			$this->redirect($seo_url);
		}

		return true;
	}
}
?>
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.