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

Recommended Posts

Только одна строка может быть затронута из-за того что окно запроса в вашей версии пхпадмина не поддерживает множественные запросы. Ну на всякий случай проверьте, разделителем является ";". Если все-же окно не поддерживает множественных запросов,то я бы просто сделал импорт в таблицу url_alias.

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

Да ; есть разделение. по поводу файла htaccess как только я убирал txt то сразу вылетает такая ошибка что в админе что на сайте. Internal Server Error

Возможно нужно какой то другой файл htaccess?

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


Да ; есть разделение. по поводу файла htaccess как только я убирал txt то сразу вылетает такая ошибка что в админе что на сайте. Internal Server Error

Возможно нужно какой то другой файл htaccess?

1) смотрите какую именно строку съедает запрос к бд, если верхнюю, то попробуйте скормить другую...

2) ошибка из-за неподдерживаемых директорий в файле htaccess скорее всего, что странно при том что вы его содержимого (как я понимаю) не меняли, подождем что скажут гуру, может тут что-то найдете для себя.

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


1) смотрите какую именно строку съедает запрос к бд, если верхнюю, то попробуйте скормить другую...

2) ошибка из-за неподдерживаемых директорий в файле htaccess скорее всего, что странно при том что вы его содержимого (как я понимаю) не меняли, подождем что скажут гуру, может тут что-то найдете для себя.

Без разнице какую бы строку не поставил все равно пишет не пишет разве что когда 1 срока. Но не суть я через импорт сделал. Но с файлом не понятно... я ничего не трогал но вот такая беда :(

Явно какая то беда с файлом htaccess.

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


Установил данную версию - внес SQL - все ок - но вот при попытке перейти из списка брендов (domain/brands/) в любой бренд - пишет что:

Запрашиваемая страница не найдена!

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


Установил на сайт, всё работает. Спасибо большое, за проделанную Вами работу. Очень полезное дополнение !

Но только есть проблема с правильным отображением "Новостей"

И QiWi стал ошибку выдавать

2013-03-19 23:08:29 - qiwi error hash

Подскажите пожалуйста как решить ?

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


Установил на сайт, всё работает. Спасибо большое, за проделанную Вами работу. Очень полезное дополнение !

Но только есть проблема с правильным отображением "Новостей"

И QiWi стал ошибку выдавать

2013-03-19 23:08:29 - qiwi error hash

Подскажите пожалуйста как решить ?

C новостями навести порядок мне помогло вот это https://opencartforum.com/files/file/554-seo-manager-%D0%B4%D0%BB%D1%8F-ocstore-153/.

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


Подскажите, пожалуйста как устранить баг с модулем FAQ (модуль часто задаваемых вопросов).

Вопросы выглядят так http://сайт.ru/faq.html?topic=6 , сделать по аналогии с модулем новостей не получилось.

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


после всех переделок, получается максимум такой вид http://сайт.ru/faq/?topic=8

,а хотелось бы чтобы отображалось http://сайт.ru/faq/kak-zakazat/html

<?php
class ControllerCommonSeoPro extends Controller {
private $cache_data = null;
public function __construct($registry) {
 parent::__construct($registry);
 $this->cache_data = $this->cache->get('seo_pro');
 if (!$this->cache_data) {
  $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias");
  $this->cache_data = array();
  foreach ($query->rows as $row) {
   $this->cache_data['keywords'][$row['keyword']] = $row['query'];
   $this->cache_data['queries'][$row['query']] = $row['keyword'];
  }
  $this->cache->set('seo_pro', $this->cache_data);
 }
}
public function index() {
 // Add rewrite to url class
 if ($this->config->get('config_seo_url')) {
  $this->url->addRewrite($this);
 } else {
  return;
 }
 // Decode URL
 if (!isset($this->request->get['_route_'])) {
  $this->validate();
 } else {
  $route = $this->request->get['_route_'];
  unset($this->request->get['_route_']);
  $parts = explode('/', trim(utf8_strtolower($route), '/'));
  /* BEGIN Actions */
  if (preg_match('#^(actions/)(.*)#', $route, $matches)) {
   $parts = explode('/', trim(utf8_strtolower($matches[2]), '/'));
   if($parts[0] == '' AND count($parts) == 1) {
 $parts = explode('/', trim(utf8_strtolower($route), '/'));
   }
  }
  /* END Actions */
  /* BEGIN News & Reviews */
  if (preg_match('#^(news/)(.*)#', $route, $matches)) {
   $parts = explode('/', trim(utf8_strtolower($matches[2]), '/'));
   if($parts[0] == '' AND count($parts) == 1) {
 $parts = explode('/', trim(utf8_strtolower($route), '/'));
   }
  }
  /* END News & Reviews */  
  list($last_part) = explode('.', array_pop($parts));
  array_push($parts, $last_part); 
  $rows = array();
  foreach ($parts as $keyword) {
   if (isset($this->cache_data['keywords'][$keyword])) {
 $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]);
   }
  }
  if (count($rows) == sizeof($parts)) {
   $queries = array();
   foreach ($rows as $row) {
 $queries[utf8_strtolower($row['keyword'])] = $row['query'];
   }
   reset($parts);
   foreach ($parts as $part) {
 $url = explode('=', $queries[$part], 2);
 if ($url[0] == 'category_id') {
  if (!isset($this->request->get['path'])) {
   $this->request->get['path'] = $url[1];
  } else {
   $this->request->get['path'] .= '_' . $url[1];
  }
 } elseif (count($url) > 1) {
  $this->request->get[$url[0]] = $url[1];
 }
   }
  /* BEGIN Actions */
  } elseif ( (isset($keyword_in[0]) AND $keyword_in[0] == 'actions') OR (isset($parts[0]) AND $parts[0] == 'actions') ) {
   $this->request->get['route'] = 'information/actions';
  /* END Actions */
  /* BEGIN News & Reviews */
  } elseif ( (isset($keyword_in[0]) AND $keyword_in[0] == 'news') OR (isset($parts[0]) AND $parts[0] == 'news') ) {
   $this->request->get['route'] = 'information/news';
  /* END News & Reviews */  
  } else {
   $this->request->get['route'] = 'error/not_found';
  }
  if (isset($this->request->get['product_id'])) {
   $this->request->get['route'] = 'product/product';
   if (!isset($this->request->get['path'])) {
 $path = $this->getPathByProduct($this->request->get['product_id']);
 if ($path) $this->request->get['path'] = $path;
   }
  } elseif (isset($this->request->get['path'])) {
   $this->request->get['route'] = 'product/category';
  } elseif (isset($this->request->get['manufacturer_id'])) {
   $this->request->get['route'] = 'product/manufacturer/product';
  } elseif (isset($this->request->get['information_id'])) {
   $this->request->get['route'] = 'information/information';
  /* BEGIN Actions */
  } elseif (isset($this->request->get['actions_id'])) {
   $this->request->get['route'] = 'information/actions';
  /* END Actions */
  /* BEGIN News & Reviews */
  } elseif (isset($this->request->get['news_id'])) {
   $this->request->get['route'] = 'information/news';
  /* END News & Reviews */

  } else {
   if (isset($queries[$parts[0]])) {
 $this->request->get['route'] = $queries[$parts[0]];
   }
  }

  $this->validate();
  if (isset($this->request->get['route'])) {
   return $this->forward($this->request->get['route']);
  }
 }
}
public function rewrite($link) {
 if (!$this->config->get('config_seo_url')) return $link;
 $seo_url = '';
 $component = parse_url(str_replace('&', '&', $link));
 $data = array();
 parse_str($component['query'], $data);
 $route = $data['route'];
 unset($data['route']);
 switch ($route) {
  /* BEGIN Actions*/
  case 'information/actions':
   if (!isset($data['actions_id'])) {
 $seo_url .= '/actions';
   }
   break;
  /*END Actions*/
  /* BEGIN News & Reviews */
  case 'information/news':
   if (!isset($data['news_id'])) {
 $seo_url .= '/news';
   }
   break;
  /* END News & Reviews */
  case 'product/product':
   if (isset($data['product_id'])) {
 $tmp = $data;
 $data = array();
 if ($this->config->get('config_seo_url_include_path')) {
  $data['path'] = $this->getPathByProduct($tmp['product_id']);
  if (!$data['path']) return $link;
 }
 $data['product_id'] = $tmp['product_id'];
 if (isset($tmp['tracking'])) {
  $data['tracking'] = $tmp['tracking'];
 }
   }
   break;
  case 'product/category':
   if (isset($data['path'])) {
 $category = explode('_', $data['path']);
 $category = end($category);
 $data['path'] = $this->getPathByCategory($category);
 if (!$data['path']) return $link;
   }
   break;
  case 'product/product/review':
  case 'information/information/info':
   return $link;
   break;
  default:
   break;
 }
 if ($component['scheme'] == 'https') {
  $link = $this->config->get('config_ssl');
 } else {
  $link = $this->config->get('config_url');
 }
 $link .= 'index.php?route=' . $route;
 if (count($data)) {
  $link .= '&' . urldecode(http_build_query($data, '', '&'));
 }
 $queries = array();
 foreach ($data as $key => $value) {
  switch ($key) {
   /* BEGIN Actions */
   case 'actions_id':
 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");
 if ($query->num_rows) {
  $seo_url .= '/actions/' . rawurlencode($query->row['keyword']);
  unset($data[$key]);
  $postfix = 1;
 }
 break;
   /* END Actions */
   /* BEGIN News & Reviews */
   case 'news_id':
 $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");
 if ($query->num_rows) {
  $seo_url .= '/news/' . rawurlencode($query->row['keyword']);
  unset($data[$key]);
  $postfix = 1;
 }
 break;
   /* END News & Reviews */  
   case 'product_id':
   case 'manufacturer_id':
   case 'category_id':
   case 'information_id':
 $queries[] = $key . '=' . $value;
 unset($data[$key]);
 $postfix = 1;
 break;
   case 'path':
 $categories = explode('_', $value);
 foreach ($categories as $category) {
  $queries[] = 'category_id=' . $category;
 }
 unset($data[$key]);
 break;
   default:
 break;
  }
 }
 if(empty($queries)) {
  $queries[] = $route;
 }
 $rows = array();
 foreach($queries as $query) {
  if(isset($this->cache_data['queries'][$query])) {
   $rows[] = array('query' => $query, 'keyword' => $this->cache_data['queries'][$query]);
  }
 }
 if(count($rows) == count($queries)) {
  $aliases = array();
  foreach($rows as $row) {
   $aliases[$row['query']] = $row['keyword'];
  }
  foreach($queries as $query) {
   $seo_url .= '/' . rawurlencode($aliases[$query]);
  }
 }
 if ($seo_url == '') return $link;
 $seo_url = trim($seo_url, '/');
 if ($component['scheme'] == 'https') {
  $seo_url = $this->config->get('config_ssl') . $seo_url;
 } else {
  $seo_url = $this->config->get('config_url') . $seo_url;
 }
 if (isset($postfix)) {
  $seo_url .= trim($this->config->get('config_seo_url_postfix'));
 } else {
  $seo_url .= '/';
 }
 if(substr($seo_url, -2) == '//') {
  $seo_url = substr($seo_url, 0, -1);
 }
 if (count($data)) {
  $seo_url .= '?' . urldecode(http_build_query($data, '', '&'));
 }
 return $seo_url;
}
private function getPathByProduct($product_id) {
 $product_id = (int)$product_id;
 if ($product_id < 1) return false;
 static $path = null;
 if (!is_array($path)) {
  $path = $this->cache->get('product.seopath');
  if (!is_array($path)) $path = array();
 }
 if (!isset($path[$product_id])) {
  $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . $product_id . "' ORDER BY main_category DESC LIMIT 1");
  $path[$product_id] = $this->getPathByCategory($query->num_rows ? (int)$query->row['category_id'] : 0);
  $this->cache->set('product.seopath', $path);
 }
 return $path[$product_id];
}
private function getPathByCategory($category_id) {
 $category_id = (int)$category_id;
 if ($category_id < 1) return false;
 static $path = null;
 if (!is_array($path)) {
  $path = $this->cache->get('category.seopath');
  if (!is_array($path)) $path = array();
 }
 if (!isset($path[$category_id])) {
  $max_level = 10;
  $sql = "SELECT CONCAT_WS('_'";
  for ($i = $max_level-1; $i >= 0; --$i) {
   $sql .= ",t$i.category_id";
  }
  $sql .= ") AS path FROM " . DB_PREFIX . "category t0";
  for ($i = 1; $i < $max_level; ++$i) {
   $sql .= " LEFT JOIN " . DB_PREFIX . "category t$i ON (t$i.category_id = t" . ($i-1) . ".parent_id)";
  }
  $sql .= " WHERE t0.category_id = '" . $category_id . "'";
  $query = $this->db->query($sql);
  $path[$category_id] = $query->num_rows ? $query->row['path'] : false;
  $this->cache->set('category.seopath', $path);
 }
 return $path[$category_id];
}
private function validate() {
 if (empty($this->request->get['route']) || $this->request->get['route'] == 'error/not_found') {
  return;
 }
 if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  return;
 }
 if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
  $url = str_replace('&', '&', $this->config->get('config_ssl') . ltrim($this->request->server['REQUEST_URI'], '/'));
  $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));
 } else {
  $url = str_replace('&', '&', $this->config->get('config_url') . ltrim($this->request->server['REQUEST_URI'], '/'));
  $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'NONSSL'));
 }
 if (rawurldecode($url) != rawurldecode($seo)) {
  header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
  $this->response->redirect($seo);
 }
}
private function getQueryString($exclude = array()) {
 if (!is_array($exclude)) {
  $exclude = array();
  }
 return urldecode(http_build_query(array_diff_key($this->request->get, array_flip($exclude))));
 }
}
?>

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


Прочитал все топики и совсем запутался, даты создания тем раньше чем появился ocStore v1.5.4.1, собственно у меня он и стоит и всвязи с этим есть ряд вопрросов.

1. Как сделать чпу страницах контактов, информации, производителей? Как я понял нужно делать запросом к базе?

2. Как автоматичести генерить url страниц и категорий?

3. Как прописать robots.txt?

4. Как убрать дубли?

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


Вдруг ни с чего перестал формировать алиасы на новые товары. Откатился, перезалил алиасы в базу - один хрен. Загадка.

Вернул старый шаблонный, он ссылки на товары формирует нормально.

1.5.4.1 ставил cached_seo_pro_v1.5.3.zip

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


У кого нибудь получилось сделать ссылки с производителями следующим образом:

имя_сайта/производители/название_производителя

А то как то не красиво получается: имя_сайта/название_производителя

Ведь если смотрим товар, то выглядит всё здорово - имя_сайта/категория/товар

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


Вопрос к автору темы. Можно сделать, чтобы модуль: seopro_multilang.zip, был кэшированый, как: cached_seo_pro_v1.5.3.zip. Почему-то магазин дает большую нагрузку на сервер.

PS. Возможно вопрос, не умный, но меня он, очень волнует.

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


Вопрос к автору темы. Можно сделать, чтобы модуль: seopro_multilang.zip, был кэшированый, как: cached_seo_pro_v1.5.3.zip. Почему-то магазин дает большую нагрузку на сервер.

PS. Возможно вопрос, не умный, но меня он, очень волнует.

multilang кешированный. как вы проверяли нагузку?

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

Прошу помощи. Уже на грани истерики ))

Перечислю, что сделано:

1. Установлен cached_seo_pro_v1.5.3.zip

2. Выполнен запрос к БД.

3. Переименован .htaccess.txt в .htaccess

4. В системе управления все настройки включены

5. Почищены все "cache" и на сервере и в браузере

6. В ручную прописан Seo url для товара

А запрос как был http://****.com/inde...3&product_id=65 так и остался.

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


Прошу помощи. Уже на грани истерики ))

Перечислю, что сделано:

1. Установлен cached_seo_pro_v1.5.3.zip

2. Выполнен запрос к БД.

3. Переименован .htaccess.txt в .htaccess

4. В системе управления все настройки включены

5. Почищены все "cache" и на сервере и в браузере

6. В ручную прописан Seo url для товара

А запрос как был http://sait.com/inde...3&product_id=65 так и остался.

Аналогично. У меня 1.5.4.1 Основные ссылки стали нормальными. А вот категории и товары как всегда.

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


seo url'ы должны быть для всех категорий товара

Ну на основные категории то сработало, а вот пути к товарам и подкатегориям нет: http://jade.by/

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


Ну на основные категории то сработало, а вот пути к товарам и подкатегориям нет: http://jade.by/

Вобщем, вроде разобрался.

Нужно прописывать Seu url везде: категория/подкатегория/товар.

Т.е. у тебя должны быть урлы где-то так: Для лица/Лифтинг и упругость/NANO CORRECTOR ( и дальше по аналогии).

Но вообще-то я думал, что все это должно подхватываться автоматом, а не вбиваться ручками.

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


Поискал по форуму, может конечно плохо искал, но всё же. Есть структура категорий типа:

Футбол

- кроссовки

- одежка

Баскетбол

- кросовки

- одежда

Так вот используя seo_pro с кеширование (да и просто если seo_pro использовать) то перейдя по ссылке футбол/кроссовки - редирект идёт на баскетбол/кроссовки.

В общем что делать с одинаковыми названиями подкатегорий в seo_url

OcStore 15.3.1

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


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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