CODEONETEAM Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 1.5.5.1.1 версия опенкарта? у меня 1.5.6.ocStore. А версия SEO Pro какая?Соответствующая. Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Соответствующая. seo_pro.php(ocStore1.5.5).zip - сам файлик seo_pro.php отсюда? :) попробовал этот файлик, проблема та же. Причем точки вконце отрабатывает норм, генерит 301 и перебрасывает на верный ЮРЛ, а вот точку вначале никак. у Вас же все ок. Причем не пойму связи версии самого движка магазина, ЮРЛ то сразу попадает в seo_pro.php который его обрабатывает? А есть кто использующий seo_pro на OpenCart 1.5.6 ? P.S. но Вы все же согласны что это не есть хорошо? :-) Надіслати Поділитися на інших сайтах More sharing options...
CODEONETEAM Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 seo_pro.php(ocStore1.5.5).zip - сам файлик seo_pro.php отсюда? :) Модификация SEO Pro от freelancer входит в дистрибутив ocStore 1.5.5.1.1, поэтому и написал, что соответствующая. В шапке темы есть комментарий: Сообщение отредактировал freelancer: 06 Ноябрь 2013 - 08:11 обновил seopro из ocStore что говорит о том, что в шапку добавлена данная версия. но Вы все же согласны что это не есть хорошо? :-) Я не говорил, что это хорошо, просто не люблю поспешные выводы, а Вы их сделали, данная проблема отсутствует при корректной работе SEO Pro, остальное персоналии. Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Модификация SEO Pro от freelancer входит в дистрибутив ocStore 1.5.5.1.1, поэтому и написал, что соответствующая. В шапке темы есть комментарий: что говорит о том, что в шапку добавлена данная версия. В том то и дело, что я использую версию из шапки, после ее обновления. Да и только что перепробовал все варианты файла seo_pro.php проблема не исчезает. Видимо все же что-то связано со стыковкой с OpenCart 1.5.6. Смог добиться только закомментировав 80, и 81ю строки: list($last_part) = explode('.', array_pop($parts)); array_push($parts, $last_part); Не совсем понял для чего это сделано. Подкажет кто? Причем проблема возникает только когда точка последней правой части ЮРЛА, сколько не ставь точки в начало или конец других частей, до или после слешей все ок, даже в последней части, если поставить точку вконец то все ок. Надіслати Поділитися на інших сайтах More sharing options...
CODEONETEAM Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Видимо все же что-то связано со стыковкой с OpenCart 1.5.6. Корректную работу SEO Pro на OpenCart версии 1.5.6 никто не тестировал и не гарантировал, так что к Вашему сожалению - возможно всё. Не совсем понял для чего это сделано. Подкажет кто? Для определения окончания ЧПУ, например, .html, точка - разделитель. Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Корректную работу SEO Pro на OpenCart версии 1.5.6 никто не тестировал и не гарантировал, так что к Вашему сожалению - возможно всё. Для определения окончания ЧПУ, например, .html, точка - разделитель. Спасибо за пояснение. Теперь понял для чего отсекается точка. В случае не использования таких окончаний думаю можно оставить эти строки закомментированными до выяснение причин и совместимостей с 1.5.6. Правда у меня он выдает 404 в таких случаях, а в Вашем примере после точки редиректит на главную. Странно, но это уже не есть проблем. Спасибо за дискуссию :) Надіслати Поділитися на інших сайтах More sharing options...
CODEONETEAM Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Не вопрос! :wink: Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Пардон если оффтоп. А раз уж тема пошла, может удастся получить подсказку, как к ЮРЛ товара подставлять ?variable=a ? потому как seo_pro его съедает и не дает мне возможности передать мой параметр контроллеру. В категориях все ок, добавляю свое значение и оно не съедается. Ну и буду признателен за подсказу, как и где seo_pro подменяет ЮРЛы формируемые контроллером?! У меня в многих местах на сайте формировались специальные ЮРЛы в контроллере, после установки seo_pro это все перестало работать, какой бы я не формировал ЮРЛ в контроллере(что бы не добавлял к нему) все равно в темплейте ловлю сеошный ЮРЛ к товару, согласно пути т.е. так как его сформировал seo_pro! Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Пардон если оффтоп. А раз уж тема пошла, может удастся получить подсказку, как к ЮРЛ товара подставлять ?variable=a ? потому как seo_pro его съедает и не дает мне возможности передать мой параметр контроллеру. Заранее спасибо! Есть такое дело, этот баг надо было давно исправить. Как совет пользуйтесь ?tracking=page-2_sort-desc (page и tracking seo_pro не удаляет, остальные параметры get просто убивает) и т.п. с разделителем _ для параметров. Не очень конечно красиво, но другого выхода пока нет для seo_pro Надіслати Поділитися на інших сайтах More sharing options... CODEONETEAM Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Не очень конечно красиво, но другого выхода пока нет для seo_proДействительно не красиво и крайне категорично, поспорю. Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Есть такое дело, этот баг надо было давно исправить. Как совет пользуйтесь ?tracking=page-2_sort-desc (page и tracking seo_pro не удаляет, остальные параметры get просто убивает) и т.п. с разделителем _ для параметров. Не очень конечно красиво, но другого выхода пока нет для seo_pro Я попытался решить вот так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } // added if (isset($tmp['variable'])) { $data['variable'] = $tmp['variable']; } Теперь моя переменная перестала кушаться в продукте и в списке товаров(категориях) ЮРЛы перехода к товарам стали нормальными, т.е. такими как я их формирую. Осталось придумать как ?variable=a превратить в /variable-a/ :) .htaccess подправил для этого, в таблицу url_alias внес, при переходе на /variable-a/ перескакивает (редирект) на ?variable=a Надіслати Поділитися на інших сайтах More sharing options... CODEONETEAM Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Я попытался решить вот так Я реализовал так-же. :wink: Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Я попытался решить вот так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } // added if (isset($tmp['variable'])) { $data['variable'] = $tmp['variable']; } Теперь моя переменная перестала кушаться в продукте и в списке товаров(категориях) ЮРЛы перехода к товарам стали нормальными, т.е. такими как я их формирую. Осталось придумать как ?variable=a превратить в /variable-a/ :) .htaccess подправил для этого, в таблицу url_alias внес, при переходе на /variable-a/ перескакивает (редирект) на ?variable=a Ну это вам пришлось допиливать SeoPro А я имел ввиду универсальное решение, а не к конкретному сайту. Надіслати Поділитися на інших сайтах More sharing options... andrew12 Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 Спасибо за регистрацию некоторые решения... Надіслати Поділитися на інших сайтах More sharing options... KANU Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 Такая проблема: есть магазин на ocStore 1.5.5.1.1 после добавления новых товаров у них не отображаться чпу, у раннее добавленных товаров, категорий .. все норм. После удаления кэша seopro (cache.seo_pro) чпу всех товаров начинает нормально отображаться!! Глюк проявился спонтанно, изменений на сайте не было. Подскажите куда копать? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 никуда - удалили кеш - все нормально - уже хорошо. Копать? в сторону добавления/изменения в таблицу url_alias - удалили кеш Или сделать "пимпочку" - удаление seo кеш Надіслати Поділитися на інших сайтах More sharing options... KANU Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 memcached никуда - удалили кеш - все нормально - уже хорошо. Копать? в сторону добавления/изменения в таблицу url_alias - удалили кеш Или сделать "пимпочку" - удаление seo кеш дело в том, что раньше все работало нормально и без ручного удаления кэша, хочу понять из за чего получился подобный глюк P.S. разворачивал из бекапа на localhost эффект такой же как и на боевом. P.P.S. изначально все кэшировалось не на диск, а в memcached. После того как заметил, что сео урлы не подтягиваются перевел весь кэш на диск (думал что проблема в memcached), но нет.... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 січня 2014 Автор Share Опубліковано: 16 січня 2014 В модуле управления seo pro есть vQmod для авто-очистки кеша Надіслати Поділитися на інших сайтах More sharing options... vsuvorov Опубліковано: 17 січня 2014 Share Опубліковано: 17 січня 2014 Есть несколько идентичных категорий с подкатегориями, изначально появились при переходе на новую версию сайта. 1. Квадроциклы \ Запчасти для Yamaha 2. Запчасти в наличии \ для квадроциклов Yamaha Движок OcStore 1.5.5.1, настроен SeoPro и ЧПУ. Хочу сделать переадресацию с "Запчасти в наличии \ для квадроциклов Yamaha" на "Квадроциклы \ Запчасти для Yamaha" и в последствии убрать "Запчасти в наличии". В htaccess добавляю строку Redirect 301 /zapchasti-v-nalichii/dlya-kvadrociklov-brp/ http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/ В итоге перекидывает на страницу http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/?_route_=zapchasti-v-nalichii/dlya-kvadrociklov-brp/ и появляется Ошибка: На этой странице обнаружена циклическая переадресация Что делаю не так? Надіслати Поділитися на інших сайтах More sharing options... PVL Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 (змінено) Здравствуйте! Пользуюсь SeoPro. Все отлично работает, уже как год =) Окончание ЧПУ: html Сегодня начал разбираться с Метками в URL (http://help.yandex.ru/metrika/sources/tags.xml) добавляю к URL site.ru/catrgory/tovar.html?from=test_metok. При переходе по такой ссылки, моментально срабатывает редирект на site.ru/catrgory/tovar.html , естественно, метрика/аналитика не успевает взять инфу с метки. Но! На главной странице, страницах(статьях) и в категориях - все работает хорошо, редирект на срабатывает. Инфа появляется в статистике. site.ru/?from=test_metok site.ru/iphone?from=test_metok site.ru/about.html?from=test_metok А вот в товарах, с этим редиректом не работают метки. Сталкивался кто с таким? Избавиться от .html не могу. ---------- Спасибо zubovd! В seopro.php находим: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } Копируем, и вставляем ниже. Вместо tracking стаим свои теги. Например у меня получилось так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } if (isset($tmp['utm_source'])) { $data['utm_source'] = $tmp['utm_source']; } if (isset($tmp['utm_medium'])) { $data['utm_medium'] = $tmp['utm_medium']; } if (isset($tmp['utm_campaign'])) { $data['utm_campaign'] = $tmp['utm_campaign']; } if (isset($tmp['utm_content'])) { $data['utm_content'] = $tmp['utm_content']; } if (isset($tmp['from'])) { $data['from'] = $tmp['from']; } if (isset($tmp['utm_term'])) { $data['utm_term'] = $tmp['utm_term']; } zubovd советует в robots.txt закрыть эти теги, но я надеюсь что тег rel="canonical" не даст попасть дублям в поиск. Змінено 23 січня 2014 користувачем PVL Надіслати Поділитися на інших сайтах More sharing options... JaoDa Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Добрый день! Прошу помощи, сам не могу разобраться в чем проблема. ocStore 1.5.5.1.1 SeoPro встроен. сайт: terratex.ru ЧПУ вкл SeoPro выбран ЧПУ товаров с категориями: нет окончание .html В чем проблема: Все ссылки на товары, новости, контакты, производителя - идеальные, 1-в-1 как прописано в url_alias. К примеру: http://terratex.ru/7382e6g-server-ibm-system-x3300-m4-express.html А вот ссылки на любую категорию имеет страшный вид: http://terratex.ru/index.php?route=product/category&path=1664_1665_1666 Хотя в url_alias прописаны все чпу для категорий, пример: url_alias_id query keyword 8701 category_id=1610 catalog/computers/HP_7500_Elite Если включить вместо SeoPro режим "По умолчанию", пропадают чпу у производителей, у категорий они появляются, но по этим ссылкам выдается "Запрашиваемая страница не найдена". Что делать не знаю...попробовал уже по-моему все что можно. Помогите! Файл .htaccess Options +SymLinksIfOwnerMatchOptions -IndexesOrder deny,allowDeny from allRewriteEngine 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} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)RewriteRule ^([^?]*) index.php?_route_=$1 [QSA]RewriteCond %{HTTP_HOST} ^(www\.terratex\.ru)(:80)? [NC]RewriteRule ^(.*) http://terratex.ru/$1 [R=301,L]RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/RewriteRule ^index\.php$ http://terratex.ru/ [R=301,L]RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]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] Код файла seo_pro 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 classif ($this->config->get('config_seo_url')) {$this->url->addRewrite($this);} else {return;}// Decode URLif (!isset($this->request->get['_route_'])) {$this->validate();} else {$route_ = $route = $this->request->get['_route_'];unset($this->request->get['_route_']);$parts = explode('/', trim(utf8_strtolower($route), '/'));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];}}} 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/info';} elseif (isset($this->request->get['information_id'])) {$this->request->get['route'] = 'information/information';} elseif(isset($this->cache_data['queries'][$route_])) {header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');$this->response->redirect($this->cache_data['queries'][$route_]);} 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) {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) {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 (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {return;}if(empty($this->request->get['route'])) {$this->request->get['route'] = 'common/home';}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'))) {$config_ssl = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);$url = str_replace('&', '&', $config_ssl . ltrim($this->request->server['REQUEST_URI'], '/'));$seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));} else {$config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);$url = str_replace('&', '&', $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 strpos_offset($needle, $haystack, $occurrence) {// explode the haystack$arr = explode($needle, $haystack);// check the needle is not out of boundsswitch($occurrence) {case $occurrence == 0:return false;case $occurrence > max(array_keys($arr)):return false;default:return strlen(implode($needle, array_slice($arr, 0, $occurrence)));}}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))));}}?> Надіслати Поділитися на інших сайтах More sharing options... Ever Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Как подружить этот модуль с модулем quick-edit??? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 Нигде не нашел как вместо site.ru/category сделать site.ru/category.html ? Версия Opencart 1.5.1.3. SeoPro установлен. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 А смысл? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 хочу чтоб все страницы заканчивались на .html Сейчас некоторые с .html некоторые без. Возможно ли так сделать? Надіслати Поділитися на інших сайтах More sharing options... Назад 31 32 33 34 35 36 37 38 39 40 41 Вперед Сторінка 36 з 72 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 4 Перейти до списку тем Схожі публікації [Поддержка] SEO Генератор мета тегов (категории, товары, производители, статьи), SEO URL - Мультиязык 1 2 3 4 10 Автор: legioner26, 31 березня 2019 метатеги seo-h1 (і ще %d) Теги: метатеги seo-h1 title meta descritption keywords seo чпу url seopro автозаполнение seo автозаполнение seo url автоматическая генерация мета-тегов seo генератор url seo генератор чпу дубли урл дубли удаление дублей дубли категорий дубли товаров дубли статей дубли страниц индексация дубли страниц сео продвижение мета теги title настройка сео продвижение сайта топ 10 выдача сайта автоматическая генерация title и description автоматическая генерация мета-тегов title и description автозаполнение мета тегов сеоген seogen автогенерация seo генераций url мета теги мета теги заполнение выдача в поиске продвижение opencart опенкарт сео опенкарт мета теги opencart seo мультиязык чпу мультиязык мультиязык сео чпу для статей генерация сео статьи производители url производиетли url url_alias url страниц чпу seo 232 відповіді 20 706 переглядів legioner26 6 січня 2022 Избавиться от дублей товаров Автор: kostya242, 15 вересня 2021 дубли 9 відповідей 623 перегляди chukcha 15 вересня 2021 Какое оптимальное решение проблемы дублей в OP 3 для наступающего 2021 Автор: smart_center, 31 грудня 2020 opencart 3 дубли (і ще %d) Теги: opencart 3 дубли дубли страниц seopro seo pro canonical 13 відповідей 1 316 переглядів pawana 1 січня 2021 Хлебные крошки или дубли Автор: Poxod86, 20 березня 2020 дубли хлебные крошки (і ще %d) Теги: дубли хлебные крошки ошибки 3 відповіді 806 переглядів Otvet 20 березня 2020 Товары копируются 2 раза Автор: ScartFM, 2 жовтня 2019 копирование товары (і ще %d) Теги: копирование товары дубли 4 відповіді 1 465 переглядів stickpro 2 жовтня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) дубли страниц, seoPro Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
CODEONETEAM Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Не очень конечно красиво, но другого выхода пока нет для seo_proДействительно не красиво и крайне категорично, поспорю. Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Есть такое дело, этот баг надо было давно исправить. Как совет пользуйтесь ?tracking=page-2_sort-desc (page и tracking seo_pro не удаляет, остальные параметры get просто убивает) и т.п. с разделителем _ для параметров. Не очень конечно красиво, но другого выхода пока нет для seo_pro Я попытался решить вот так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } // added if (isset($tmp['variable'])) { $data['variable'] = $tmp['variable']; } Теперь моя переменная перестала кушаться в продукте и в списке товаров(категориях) ЮРЛы перехода к товарам стали нормальными, т.е. такими как я их формирую. Осталось придумать как ?variable=a превратить в /variable-a/ :) .htaccess подправил для этого, в таблицу url_alias внес, при переходе на /variable-a/ перескакивает (редирект) на ?variable=a Надіслати Поділитися на інших сайтах More sharing options...
CODEONETEAM Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Я попытался решить вот так Я реализовал так-же. :wink: Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 11 січня 2014 Share Опубліковано: 11 січня 2014 Я попытался решить вот так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } // added if (isset($tmp['variable'])) { $data['variable'] = $tmp['variable']; } Теперь моя переменная перестала кушаться в продукте и в списке товаров(категориях) ЮРЛы перехода к товарам стали нормальными, т.е. такими как я их формирую. Осталось придумать как ?variable=a превратить в /variable-a/ :) .htaccess подправил для этого, в таблицу url_alias внес, при переходе на /variable-a/ перескакивает (редирект) на ?variable=a Ну это вам пришлось допиливать SeoPro А я имел ввиду универсальное решение, а не к конкретному сайту. Надіслати Поділитися на інших сайтах More sharing options... andrew12 Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 Спасибо за регистрацию некоторые решения... Надіслати Поділитися на інших сайтах More sharing options... KANU Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 Такая проблема: есть магазин на ocStore 1.5.5.1.1 после добавления новых товаров у них не отображаться чпу, у раннее добавленных товаров, категорий .. все норм. После удаления кэша seopro (cache.seo_pro) чпу всех товаров начинает нормально отображаться!! Глюк проявился спонтанно, изменений на сайте не было. Подскажите куда копать? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 никуда - удалили кеш - все нормально - уже хорошо. Копать? в сторону добавления/изменения в таблицу url_alias - удалили кеш Или сделать "пимпочку" - удаление seo кеш Надіслати Поділитися на інших сайтах More sharing options... KANU Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 memcached никуда - удалили кеш - все нормально - уже хорошо. Копать? в сторону добавления/изменения в таблицу url_alias - удалили кеш Или сделать "пимпочку" - удаление seo кеш дело в том, что раньше все работало нормально и без ручного удаления кэша, хочу понять из за чего получился подобный глюк P.S. разворачивал из бекапа на localhost эффект такой же как и на боевом. P.P.S. изначально все кэшировалось не на диск, а в memcached. После того как заметил, что сео урлы не подтягиваются перевел весь кэш на диск (думал что проблема в memcached), но нет.... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 січня 2014 Автор Share Опубліковано: 16 січня 2014 В модуле управления seo pro есть vQmod для авто-очистки кеша Надіслати Поділитися на інших сайтах More sharing options... vsuvorov Опубліковано: 17 січня 2014 Share Опубліковано: 17 січня 2014 Есть несколько идентичных категорий с подкатегориями, изначально появились при переходе на новую версию сайта. 1. Квадроциклы \ Запчасти для Yamaha 2. Запчасти в наличии \ для квадроциклов Yamaha Движок OcStore 1.5.5.1, настроен SeoPro и ЧПУ. Хочу сделать переадресацию с "Запчасти в наличии \ для квадроциклов Yamaha" на "Квадроциклы \ Запчасти для Yamaha" и в последствии убрать "Запчасти в наличии". В htaccess добавляю строку Redirect 301 /zapchasti-v-nalichii/dlya-kvadrociklov-brp/ http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/ В итоге перекидывает на страницу http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/?_route_=zapchasti-v-nalichii/dlya-kvadrociklov-brp/ и появляется Ошибка: На этой странице обнаружена циклическая переадресация Что делаю не так? Надіслати Поділитися на інших сайтах More sharing options... PVL Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 (змінено) Здравствуйте! Пользуюсь SeoPro. Все отлично работает, уже как год =) Окончание ЧПУ: html Сегодня начал разбираться с Метками в URL (http://help.yandex.ru/metrika/sources/tags.xml) добавляю к URL site.ru/catrgory/tovar.html?from=test_metok. При переходе по такой ссылки, моментально срабатывает редирект на site.ru/catrgory/tovar.html , естественно, метрика/аналитика не успевает взять инфу с метки. Но! На главной странице, страницах(статьях) и в категориях - все работает хорошо, редирект на срабатывает. Инфа появляется в статистике. site.ru/?from=test_metok site.ru/iphone?from=test_metok site.ru/about.html?from=test_metok А вот в товарах, с этим редиректом не работают метки. Сталкивался кто с таким? Избавиться от .html не могу. ---------- Спасибо zubovd! В seopro.php находим: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } Копируем, и вставляем ниже. Вместо tracking стаим свои теги. Например у меня получилось так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } if (isset($tmp['utm_source'])) { $data['utm_source'] = $tmp['utm_source']; } if (isset($tmp['utm_medium'])) { $data['utm_medium'] = $tmp['utm_medium']; } if (isset($tmp['utm_campaign'])) { $data['utm_campaign'] = $tmp['utm_campaign']; } if (isset($tmp['utm_content'])) { $data['utm_content'] = $tmp['utm_content']; } if (isset($tmp['from'])) { $data['from'] = $tmp['from']; } if (isset($tmp['utm_term'])) { $data['utm_term'] = $tmp['utm_term']; } zubovd советует в robots.txt закрыть эти теги, но я надеюсь что тег rel="canonical" не даст попасть дублям в поиск. Змінено 23 січня 2014 користувачем PVL Надіслати Поділитися на інших сайтах More sharing options... JaoDa Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Добрый день! Прошу помощи, сам не могу разобраться в чем проблема. ocStore 1.5.5.1.1 SeoPro встроен. сайт: terratex.ru ЧПУ вкл SeoPro выбран ЧПУ товаров с категориями: нет окончание .html В чем проблема: Все ссылки на товары, новости, контакты, производителя - идеальные, 1-в-1 как прописано в url_alias. К примеру: http://terratex.ru/7382e6g-server-ibm-system-x3300-m4-express.html А вот ссылки на любую категорию имеет страшный вид: http://terratex.ru/index.php?route=product/category&path=1664_1665_1666 Хотя в url_alias прописаны все чпу для категорий, пример: url_alias_id query keyword 8701 category_id=1610 catalog/computers/HP_7500_Elite Если включить вместо SeoPro режим "По умолчанию", пропадают чпу у производителей, у категорий они появляются, но по этим ссылкам выдается "Запрашиваемая страница не найдена". Что делать не знаю...попробовал уже по-моему все что можно. Помогите! Файл .htaccess Options +SymLinksIfOwnerMatchOptions -IndexesOrder deny,allowDeny from allRewriteEngine 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} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)RewriteRule ^([^?]*) index.php?_route_=$1 [QSA]RewriteCond %{HTTP_HOST} ^(www\.terratex\.ru)(:80)? [NC]RewriteRule ^(.*) http://terratex.ru/$1 [R=301,L]RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/RewriteRule ^index\.php$ http://terratex.ru/ [R=301,L]RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]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] Код файла seo_pro 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 classif ($this->config->get('config_seo_url')) {$this->url->addRewrite($this);} else {return;}// Decode URLif (!isset($this->request->get['_route_'])) {$this->validate();} else {$route_ = $route = $this->request->get['_route_'];unset($this->request->get['_route_']);$parts = explode('/', trim(utf8_strtolower($route), '/'));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];}}} 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/info';} elseif (isset($this->request->get['information_id'])) {$this->request->get['route'] = 'information/information';} elseif(isset($this->cache_data['queries'][$route_])) {header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');$this->response->redirect($this->cache_data['queries'][$route_]);} 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) {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) {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 (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {return;}if(empty($this->request->get['route'])) {$this->request->get['route'] = 'common/home';}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'))) {$config_ssl = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);$url = str_replace('&', '&', $config_ssl . ltrim($this->request->server['REQUEST_URI'], '/'));$seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));} else {$config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);$url = str_replace('&', '&', $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 strpos_offset($needle, $haystack, $occurrence) {// explode the haystack$arr = explode($needle, $haystack);// check the needle is not out of boundsswitch($occurrence) {case $occurrence == 0:return false;case $occurrence > max(array_keys($arr)):return false;default:return strlen(implode($needle, array_slice($arr, 0, $occurrence)));}}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))));}}?> Надіслати Поділитися на інших сайтах More sharing options... Ever Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Как подружить этот модуль с модулем quick-edit??? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 Нигде не нашел как вместо site.ru/category сделать site.ru/category.html ? Версия Opencart 1.5.1.3. SeoPro установлен. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 А смысл? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 хочу чтоб все страницы заканчивались на .html Сейчас некоторые с .html некоторые без. Возможно ли так сделать? Надіслати Поділитися на інших сайтах More sharing options... Назад 31 32 33 34 35 36 37 38 39 40 41 Вперед Сторінка 36 з 72 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 4 Перейти до списку тем Схожі публікації [Поддержка] SEO Генератор мета тегов (категории, товары, производители, статьи), SEO URL - Мультиязык 1 2 3 4 10 Автор: legioner26, 31 березня 2019 метатеги seo-h1 (і ще %d) Теги: метатеги seo-h1 title meta descritption keywords seo чпу url seopro автозаполнение seo автозаполнение seo url автоматическая генерация мета-тегов seo генератор url seo генератор чпу дубли урл дубли удаление дублей дубли категорий дубли товаров дубли статей дубли страниц индексация дубли страниц сео продвижение мета теги title настройка сео продвижение сайта топ 10 выдача сайта автоматическая генерация title и description автоматическая генерация мета-тегов title и description автозаполнение мета тегов сеоген seogen автогенерация seo генераций url мета теги мета теги заполнение выдача в поиске продвижение opencart опенкарт сео опенкарт мета теги opencart seo мультиязык чпу мультиязык мультиязык сео чпу для статей генерация сео статьи производители url производиетли url url_alias url страниц чпу seo 232 відповіді 20 706 переглядів legioner26 6 січня 2022 Избавиться от дублей товаров Автор: kostya242, 15 вересня 2021 дубли 9 відповідей 623 перегляди chukcha 15 вересня 2021 Какое оптимальное решение проблемы дублей в OP 3 для наступающего 2021 Автор: smart_center, 31 грудня 2020 opencart 3 дубли (і ще %d) Теги: opencart 3 дубли дубли страниц seopro seo pro canonical 13 відповідей 1 316 переглядів pawana 1 січня 2021 Хлебные крошки или дубли Автор: Poxod86, 20 березня 2020 дубли хлебные крошки (і ще %d) Теги: дубли хлебные крошки ошибки 3 відповіді 806 переглядів Otvet 20 березня 2020 Товары копируются 2 раза Автор: ScartFM, 2 жовтня 2019 копирование товары (і ще %d) Теги: копирование товары дубли 4 відповіді 1 465 переглядів stickpro 2 жовтня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) дубли страниц, seoPro Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
andrew12 Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 Спасибо за регистрацию некоторые решения... Надіслати Поділитися на інших сайтах More sharing options...
KANU Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 Такая проблема: есть магазин на ocStore 1.5.5.1.1 после добавления новых товаров у них не отображаться чпу, у раннее добавленных товаров, категорий .. все норм. После удаления кэша seopro (cache.seo_pro) чпу всех товаров начинает нормально отображаться!! Глюк проявился спонтанно, изменений на сайте не было. Подскажите куда копать? Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 никуда - удалили кеш - все нормально - уже хорошо. Копать? в сторону добавления/изменения в таблицу url_alias - удалили кеш Или сделать "пимпочку" - удаление seo кеш Надіслати Поділитися на інших сайтах More sharing options... KANU Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 memcached никуда - удалили кеш - все нормально - уже хорошо. Копать? в сторону добавления/изменения в таблицу url_alias - удалили кеш Или сделать "пимпочку" - удаление seo кеш дело в том, что раньше все работало нормально и без ручного удаления кэша, хочу понять из за чего получился подобный глюк P.S. разворачивал из бекапа на localhost эффект такой же как и на боевом. P.P.S. изначально все кэшировалось не на диск, а в memcached. После того как заметил, что сео урлы не подтягиваются перевел весь кэш на диск (думал что проблема в memcached), но нет.... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 січня 2014 Автор Share Опубліковано: 16 січня 2014 В модуле управления seo pro есть vQmod для авто-очистки кеша Надіслати Поділитися на інших сайтах More sharing options... vsuvorov Опубліковано: 17 січня 2014 Share Опубліковано: 17 січня 2014 Есть несколько идентичных категорий с подкатегориями, изначально появились при переходе на новую версию сайта. 1. Квадроциклы \ Запчасти для Yamaha 2. Запчасти в наличии \ для квадроциклов Yamaha Движок OcStore 1.5.5.1, настроен SeoPro и ЧПУ. Хочу сделать переадресацию с "Запчасти в наличии \ для квадроциклов Yamaha" на "Квадроциклы \ Запчасти для Yamaha" и в последствии убрать "Запчасти в наличии". В htaccess добавляю строку Redirect 301 /zapchasti-v-nalichii/dlya-kvadrociklov-brp/ http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/ В итоге перекидывает на страницу http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/?_route_=zapchasti-v-nalichii/dlya-kvadrociklov-brp/ и появляется Ошибка: На этой странице обнаружена циклическая переадресация Что делаю не так? Надіслати Поділитися на інших сайтах More sharing options... PVL Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 (змінено) Здравствуйте! Пользуюсь SeoPro. Все отлично работает, уже как год =) Окончание ЧПУ: html Сегодня начал разбираться с Метками в URL (http://help.yandex.ru/metrika/sources/tags.xml) добавляю к URL site.ru/catrgory/tovar.html?from=test_metok. При переходе по такой ссылки, моментально срабатывает редирект на site.ru/catrgory/tovar.html , естественно, метрика/аналитика не успевает взять инфу с метки. Но! На главной странице, страницах(статьях) и в категориях - все работает хорошо, редирект на срабатывает. Инфа появляется в статистике. site.ru/?from=test_metok site.ru/iphone?from=test_metok site.ru/about.html?from=test_metok А вот в товарах, с этим редиректом не работают метки. Сталкивался кто с таким? Избавиться от .html не могу. ---------- Спасибо zubovd! В seopro.php находим: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } Копируем, и вставляем ниже. Вместо tracking стаим свои теги. Например у меня получилось так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } if (isset($tmp['utm_source'])) { $data['utm_source'] = $tmp['utm_source']; } if (isset($tmp['utm_medium'])) { $data['utm_medium'] = $tmp['utm_medium']; } if (isset($tmp['utm_campaign'])) { $data['utm_campaign'] = $tmp['utm_campaign']; } if (isset($tmp['utm_content'])) { $data['utm_content'] = $tmp['utm_content']; } if (isset($tmp['from'])) { $data['from'] = $tmp['from']; } if (isset($tmp['utm_term'])) { $data['utm_term'] = $tmp['utm_term']; } zubovd советует в robots.txt закрыть эти теги, но я надеюсь что тег rel="canonical" не даст попасть дублям в поиск. Змінено 23 січня 2014 користувачем PVL Надіслати Поділитися на інших сайтах More sharing options... JaoDa Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Добрый день! Прошу помощи, сам не могу разобраться в чем проблема. ocStore 1.5.5.1.1 SeoPro встроен. сайт: terratex.ru ЧПУ вкл SeoPro выбран ЧПУ товаров с категориями: нет окончание .html В чем проблема: Все ссылки на товары, новости, контакты, производителя - идеальные, 1-в-1 как прописано в url_alias. К примеру: http://terratex.ru/7382e6g-server-ibm-system-x3300-m4-express.html А вот ссылки на любую категорию имеет страшный вид: http://terratex.ru/index.php?route=product/category&path=1664_1665_1666 Хотя в url_alias прописаны все чпу для категорий, пример: url_alias_id query keyword 8701 category_id=1610 catalog/computers/HP_7500_Elite Если включить вместо SeoPro режим "По умолчанию", пропадают чпу у производителей, у категорий они появляются, но по этим ссылкам выдается "Запрашиваемая страница не найдена". Что делать не знаю...попробовал уже по-моему все что можно. Помогите! Файл .htaccess Options +SymLinksIfOwnerMatchOptions -IndexesOrder deny,allowDeny from allRewriteEngine 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} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)RewriteRule ^([^?]*) index.php?_route_=$1 [QSA]RewriteCond %{HTTP_HOST} ^(www\.terratex\.ru)(:80)? [NC]RewriteRule ^(.*) http://terratex.ru/$1 [R=301,L]RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/RewriteRule ^index\.php$ http://terratex.ru/ [R=301,L]RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]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] Код файла seo_pro 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 classif ($this->config->get('config_seo_url')) {$this->url->addRewrite($this);} else {return;}// Decode URLif (!isset($this->request->get['_route_'])) {$this->validate();} else {$route_ = $route = $this->request->get['_route_'];unset($this->request->get['_route_']);$parts = explode('/', trim(utf8_strtolower($route), '/'));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];}}} 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/info';} elseif (isset($this->request->get['information_id'])) {$this->request->get['route'] = 'information/information';} elseif(isset($this->cache_data['queries'][$route_])) {header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');$this->response->redirect($this->cache_data['queries'][$route_]);} 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) {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) {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 (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {return;}if(empty($this->request->get['route'])) {$this->request->get['route'] = 'common/home';}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'))) {$config_ssl = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);$url = str_replace('&', '&', $config_ssl . ltrim($this->request->server['REQUEST_URI'], '/'));$seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));} else {$config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);$url = str_replace('&', '&', $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 strpos_offset($needle, $haystack, $occurrence) {// explode the haystack$arr = explode($needle, $haystack);// check the needle is not out of boundsswitch($occurrence) {case $occurrence == 0:return false;case $occurrence > max(array_keys($arr)):return false;default:return strlen(implode($needle, array_slice($arr, 0, $occurrence)));}}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))));}}?> Надіслати Поділитися на інших сайтах More sharing options... Ever Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Как подружить этот модуль с модулем quick-edit??? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 Нигде не нашел как вместо site.ru/category сделать site.ru/category.html ? Версия Opencart 1.5.1.3. SeoPro установлен. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 А смысл? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 хочу чтоб все страницы заканчивались на .html Сейчас некоторые с .html некоторые без. Возможно ли так сделать? Надіслати Поділитися на інших сайтах More sharing options... Назад 31 32 33 34 35 36 37 38 39 40 41 Вперед Сторінка 36 з 72 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 4 Перейти до списку тем Схожі публікації [Поддержка] SEO Генератор мета тегов (категории, товары, производители, статьи), SEO URL - Мультиязык 1 2 3 4 10 Автор: legioner26, 31 березня 2019 метатеги seo-h1 (і ще %d) Теги: метатеги seo-h1 title meta descritption keywords seo чпу url seopro автозаполнение seo автозаполнение seo url автоматическая генерация мета-тегов seo генератор url seo генератор чпу дубли урл дубли удаление дублей дубли категорий дубли товаров дубли статей дубли страниц индексация дубли страниц сео продвижение мета теги title настройка сео продвижение сайта топ 10 выдача сайта автоматическая генерация title и description автоматическая генерация мета-тегов title и description автозаполнение мета тегов сеоген seogen автогенерация seo генераций url мета теги мета теги заполнение выдача в поиске продвижение opencart опенкарт сео опенкарт мета теги opencart seo мультиязык чпу мультиязык мультиязык сео чпу для статей генерация сео статьи производители url производиетли url url_alias url страниц чпу seo 232 відповіді 20 706 переглядів legioner26 6 січня 2022 Избавиться от дублей товаров Автор: kostya242, 15 вересня 2021 дубли 9 відповідей 623 перегляди chukcha 15 вересня 2021 Какое оптимальное решение проблемы дублей в OP 3 для наступающего 2021 Автор: smart_center, 31 грудня 2020 opencart 3 дубли (і ще %d) Теги: opencart 3 дубли дубли страниц seopro seo pro canonical 13 відповідей 1 316 переглядів pawana 1 січня 2021 Хлебные крошки или дубли Автор: Poxod86, 20 березня 2020 дубли хлебные крошки (і ще %d) Теги: дубли хлебные крошки ошибки 3 відповіді 806 переглядів Otvet 20 березня 2020 Товары копируются 2 раза Автор: ScartFM, 2 жовтня 2019 копирование товары (і ще %d) Теги: копирование товары дубли 4 відповіді 1 465 переглядів stickpro 2 жовтня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) дубли страниц, seoPro Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
KANU Опубліковано: 16 січня 2014 Share Опубліковано: 16 січня 2014 memcached никуда - удалили кеш - все нормально - уже хорошо. Копать? в сторону добавления/изменения в таблицу url_alias - удалили кеш Или сделать "пимпочку" - удаление seo кеш дело в том, что раньше все работало нормально и без ручного удаления кэша, хочу понять из за чего получился подобный глюк P.S. разворачивал из бекапа на localhost эффект такой же как и на боевом. P.P.S. изначально все кэшировалось не на диск, а в memcached. После того как заметил, что сео урлы не подтягиваются перевел весь кэш на диск (думал что проблема в memcached), но нет.... Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 16 січня 2014 Автор Share Опубліковано: 16 січня 2014 В модуле управления seo pro есть vQmod для авто-очистки кеша Надіслати Поділитися на інших сайтах More sharing options... vsuvorov Опубліковано: 17 січня 2014 Share Опубліковано: 17 січня 2014 Есть несколько идентичных категорий с подкатегориями, изначально появились при переходе на новую версию сайта. 1. Квадроциклы \ Запчасти для Yamaha 2. Запчасти в наличии \ для квадроциклов Yamaha Движок OcStore 1.5.5.1, настроен SeoPro и ЧПУ. Хочу сделать переадресацию с "Запчасти в наличии \ для квадроциклов Yamaha" на "Квадроциклы \ Запчасти для Yamaha" и в последствии убрать "Запчасти в наличии". В htaccess добавляю строку Redirect 301 /zapchasti-v-nalichii/dlya-kvadrociklov-brp/ http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/ В итоге перекидывает на страницу http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/?_route_=zapchasti-v-nalichii/dlya-kvadrociklov-brp/ и появляется Ошибка: На этой странице обнаружена циклическая переадресация Что делаю не так? Надіслати Поділитися на інших сайтах More sharing options... PVL Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 (змінено) Здравствуйте! Пользуюсь SeoPro. Все отлично работает, уже как год =) Окончание ЧПУ: html Сегодня начал разбираться с Метками в URL (http://help.yandex.ru/metrika/sources/tags.xml) добавляю к URL site.ru/catrgory/tovar.html?from=test_metok. При переходе по такой ссылки, моментально срабатывает редирект на site.ru/catrgory/tovar.html , естественно, метрика/аналитика не успевает взять инфу с метки. Но! На главной странице, страницах(статьях) и в категориях - все работает хорошо, редирект на срабатывает. Инфа появляется в статистике. site.ru/?from=test_metok site.ru/iphone?from=test_metok site.ru/about.html?from=test_metok А вот в товарах, с этим редиректом не работают метки. Сталкивался кто с таким? Избавиться от .html не могу. ---------- Спасибо zubovd! В seopro.php находим: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } Копируем, и вставляем ниже. Вместо tracking стаим свои теги. Например у меня получилось так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } if (isset($tmp['utm_source'])) { $data['utm_source'] = $tmp['utm_source']; } if (isset($tmp['utm_medium'])) { $data['utm_medium'] = $tmp['utm_medium']; } if (isset($tmp['utm_campaign'])) { $data['utm_campaign'] = $tmp['utm_campaign']; } if (isset($tmp['utm_content'])) { $data['utm_content'] = $tmp['utm_content']; } if (isset($tmp['from'])) { $data['from'] = $tmp['from']; } if (isset($tmp['utm_term'])) { $data['utm_term'] = $tmp['utm_term']; } zubovd советует в robots.txt закрыть эти теги, но я надеюсь что тег rel="canonical" не даст попасть дублям в поиск. Змінено 23 січня 2014 користувачем PVL Надіслати Поділитися на інших сайтах More sharing options... JaoDa Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Добрый день! Прошу помощи, сам не могу разобраться в чем проблема. ocStore 1.5.5.1.1 SeoPro встроен. сайт: terratex.ru ЧПУ вкл SeoPro выбран ЧПУ товаров с категориями: нет окончание .html В чем проблема: Все ссылки на товары, новости, контакты, производителя - идеальные, 1-в-1 как прописано в url_alias. К примеру: http://terratex.ru/7382e6g-server-ibm-system-x3300-m4-express.html А вот ссылки на любую категорию имеет страшный вид: http://terratex.ru/index.php?route=product/category&path=1664_1665_1666 Хотя в url_alias прописаны все чпу для категорий, пример: url_alias_id query keyword 8701 category_id=1610 catalog/computers/HP_7500_Elite Если включить вместо SeoPro режим "По умолчанию", пропадают чпу у производителей, у категорий они появляются, но по этим ссылкам выдается "Запрашиваемая страница не найдена". Что делать не знаю...попробовал уже по-моему все что можно. Помогите! Файл .htaccess Options +SymLinksIfOwnerMatchOptions -IndexesOrder deny,allowDeny from allRewriteEngine 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} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)RewriteRule ^([^?]*) index.php?_route_=$1 [QSA]RewriteCond %{HTTP_HOST} ^(www\.terratex\.ru)(:80)? [NC]RewriteRule ^(.*) http://terratex.ru/$1 [R=301,L]RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/RewriteRule ^index\.php$ http://terratex.ru/ [R=301,L]RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]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] Код файла seo_pro 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 classif ($this->config->get('config_seo_url')) {$this->url->addRewrite($this);} else {return;}// Decode URLif (!isset($this->request->get['_route_'])) {$this->validate();} else {$route_ = $route = $this->request->get['_route_'];unset($this->request->get['_route_']);$parts = explode('/', trim(utf8_strtolower($route), '/'));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];}}} 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/info';} elseif (isset($this->request->get['information_id'])) {$this->request->get['route'] = 'information/information';} elseif(isset($this->cache_data['queries'][$route_])) {header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');$this->response->redirect($this->cache_data['queries'][$route_]);} 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) {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) {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 (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {return;}if(empty($this->request->get['route'])) {$this->request->get['route'] = 'common/home';}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'))) {$config_ssl = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);$url = str_replace('&', '&', $config_ssl . ltrim($this->request->server['REQUEST_URI'], '/'));$seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));} else {$config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);$url = str_replace('&', '&', $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 strpos_offset($needle, $haystack, $occurrence) {// explode the haystack$arr = explode($needle, $haystack);// check the needle is not out of boundsswitch($occurrence) {case $occurrence == 0:return false;case $occurrence > max(array_keys($arr)):return false;default:return strlen(implode($needle, array_slice($arr, 0, $occurrence)));}}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))));}}?> Надіслати Поділитися на інших сайтах More sharing options... Ever Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Как подружить этот модуль с модулем quick-edit??? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 Нигде не нашел как вместо site.ru/category сделать site.ru/category.html ? Версия Opencart 1.5.1.3. SeoPro установлен. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 А смысл? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 хочу чтоб все страницы заканчивались на .html Сейчас некоторые с .html некоторые без. Возможно ли так сделать? Надіслати Поділитися на інших сайтах More sharing options... Назад 31 32 33 34 35 36 37 38 39 40 41 Вперед Сторінка 36 з 72 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 4 Перейти до списку тем Схожі публікації [Поддержка] SEO Генератор мета тегов (категории, товары, производители, статьи), SEO URL - Мультиязык 1 2 3 4 10 Автор: legioner26, 31 березня 2019 метатеги seo-h1 (і ще %d) Теги: метатеги seo-h1 title meta descritption keywords seo чпу url seopro автозаполнение seo автозаполнение seo url автоматическая генерация мета-тегов seo генератор url seo генератор чпу дубли урл дубли удаление дублей дубли категорий дубли товаров дубли статей дубли страниц индексация дубли страниц сео продвижение мета теги title настройка сео продвижение сайта топ 10 выдача сайта автоматическая генерация title и description автоматическая генерация мета-тегов title и description автозаполнение мета тегов сеоген seogen автогенерация seo генераций url мета теги мета теги заполнение выдача в поиске продвижение opencart опенкарт сео опенкарт мета теги opencart seo мультиязык чпу мультиязык мультиязык сео чпу для статей генерация сео статьи производители url производиетли url url_alias url страниц чпу seo 232 відповіді 20 706 переглядів legioner26 6 січня 2022 Избавиться от дублей товаров Автор: kostya242, 15 вересня 2021 дубли 9 відповідей 623 перегляди chukcha 15 вересня 2021 Какое оптимальное решение проблемы дублей в OP 3 для наступающего 2021 Автор: smart_center, 31 грудня 2020 opencart 3 дубли (і ще %d) Теги: opencart 3 дубли дубли страниц seopro seo pro canonical 13 відповідей 1 316 переглядів pawana 1 січня 2021 Хлебные крошки или дубли Автор: Poxod86, 20 березня 2020 дубли хлебные крошки (і ще %d) Теги: дубли хлебные крошки ошибки 3 відповіді 806 переглядів Otvet 20 березня 2020 Товары копируются 2 раза Автор: ScartFM, 2 жовтня 2019 копирование товары (і ще %d) Теги: копирование товары дубли 4 відповіді 1 465 переглядів stickpro 2 жовтня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Реклама і просування SEO-питання (оптимізація та просування магазину) дубли страниц, seoPro
vsuvorov Опубліковано: 17 січня 2014 Share Опубліковано: 17 січня 2014 Есть несколько идентичных категорий с подкатегориями, изначально появились при переходе на новую версию сайта. 1. Квадроциклы \ Запчасти для Yamaha 2. Запчасти в наличии \ для квадроциклов Yamaha Движок OcStore 1.5.5.1, настроен SeoPro и ЧПУ. Хочу сделать переадресацию с "Запчасти в наличии \ для квадроциклов Yamaha" на "Квадроциклы \ Запчасти для Yamaha" и в последствии убрать "Запчасти в наличии". В htaccess добавляю строку Redirect 301 /zapchasti-v-nalichii/dlya-kvadrociklov-brp/ http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/ В итоге перекидывает на страницу http://snegoatv.ru/kvadrocikly/zapchasti-dlya-brp-/?_route_=zapchasti-v-nalichii/dlya-kvadrociklov-brp/ и появляется Ошибка: На этой странице обнаружена циклическая переадресация Что делаю не так? Надіслати Поділитися на інших сайтах More sharing options... PVL Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 (змінено) Здравствуйте! Пользуюсь SeoPro. Все отлично работает, уже как год =) Окончание ЧПУ: html Сегодня начал разбираться с Метками в URL (http://help.yandex.ru/metrika/sources/tags.xml) добавляю к URL site.ru/catrgory/tovar.html?from=test_metok. При переходе по такой ссылки, моментально срабатывает редирект на site.ru/catrgory/tovar.html , естественно, метрика/аналитика не успевает взять инфу с метки. Но! На главной странице, страницах(статьях) и в категориях - все работает хорошо, редирект на срабатывает. Инфа появляется в статистике. site.ru/?from=test_metok site.ru/iphone?from=test_metok site.ru/about.html?from=test_metok А вот в товарах, с этим редиректом не работают метки. Сталкивался кто с таким? Избавиться от .html не могу. ---------- Спасибо zubovd! В seopro.php находим: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } Копируем, и вставляем ниже. Вместо tracking стаим свои теги. Например у меня получилось так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } if (isset($tmp['utm_source'])) { $data['utm_source'] = $tmp['utm_source']; } if (isset($tmp['utm_medium'])) { $data['utm_medium'] = $tmp['utm_medium']; } if (isset($tmp['utm_campaign'])) { $data['utm_campaign'] = $tmp['utm_campaign']; } if (isset($tmp['utm_content'])) { $data['utm_content'] = $tmp['utm_content']; } if (isset($tmp['from'])) { $data['from'] = $tmp['from']; } if (isset($tmp['utm_term'])) { $data['utm_term'] = $tmp['utm_term']; } zubovd советует в robots.txt закрыть эти теги, но я надеюсь что тег rel="canonical" не даст попасть дублям в поиск. Змінено 23 січня 2014 користувачем PVL Надіслати Поділитися на інших сайтах More sharing options... JaoDa Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Добрый день! Прошу помощи, сам не могу разобраться в чем проблема. ocStore 1.5.5.1.1 SeoPro встроен. сайт: terratex.ru ЧПУ вкл SeoPro выбран ЧПУ товаров с категориями: нет окончание .html В чем проблема: Все ссылки на товары, новости, контакты, производителя - идеальные, 1-в-1 как прописано в url_alias. К примеру: http://terratex.ru/7382e6g-server-ibm-system-x3300-m4-express.html А вот ссылки на любую категорию имеет страшный вид: http://terratex.ru/index.php?route=product/category&path=1664_1665_1666 Хотя в url_alias прописаны все чпу для категорий, пример: url_alias_id query keyword 8701 category_id=1610 catalog/computers/HP_7500_Elite Если включить вместо SeoPro режим "По умолчанию", пропадают чпу у производителей, у категорий они появляются, но по этим ссылкам выдается "Запрашиваемая страница не найдена". Что делать не знаю...попробовал уже по-моему все что можно. Помогите! Файл .htaccess Options +SymLinksIfOwnerMatchOptions -IndexesOrder deny,allowDeny from allRewriteEngine 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} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)RewriteRule ^([^?]*) index.php?_route_=$1 [QSA]RewriteCond %{HTTP_HOST} ^(www\.terratex\.ru)(:80)? [NC]RewriteRule ^(.*) http://terratex.ru/$1 [R=301,L]RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/RewriteRule ^index\.php$ http://terratex.ru/ [R=301,L]RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]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] Код файла seo_pro 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 classif ($this->config->get('config_seo_url')) {$this->url->addRewrite($this);} else {return;}// Decode URLif (!isset($this->request->get['_route_'])) {$this->validate();} else {$route_ = $route = $this->request->get['_route_'];unset($this->request->get['_route_']);$parts = explode('/', trim(utf8_strtolower($route), '/'));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];}}} 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/info';} elseif (isset($this->request->get['information_id'])) {$this->request->get['route'] = 'information/information';} elseif(isset($this->cache_data['queries'][$route_])) {header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');$this->response->redirect($this->cache_data['queries'][$route_]);} 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) {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) {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 (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {return;}if(empty($this->request->get['route'])) {$this->request->get['route'] = 'common/home';}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'))) {$config_ssl = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);$url = str_replace('&', '&', $config_ssl . ltrim($this->request->server['REQUEST_URI'], '/'));$seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));} else {$config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);$url = str_replace('&', '&', $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 strpos_offset($needle, $haystack, $occurrence) {// explode the haystack$arr = explode($needle, $haystack);// check the needle is not out of boundsswitch($occurrence) {case $occurrence == 0:return false;case $occurrence > max(array_keys($arr)):return false;default:return strlen(implode($needle, array_slice($arr, 0, $occurrence)));}}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))));}}?> Надіслати Поділитися на інших сайтах More sharing options... Ever Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Как подружить этот модуль с модулем quick-edit??? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 Нигде не нашел как вместо site.ru/category сделать site.ru/category.html ? Версия Opencart 1.5.1.3. SeoPro установлен. Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 А смысл? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 хочу чтоб все страницы заканчивались на .html Сейчас некоторые с .html некоторые без. Возможно ли так сделать? Надіслати Поділитися на інших сайтах More sharing options... Назад 31 32 33 34 35 36 37 38 39 40 41 Вперед Сторінка 36 з 72 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 4 Перейти до списку тем Схожі публікації [Поддержка] SEO Генератор мета тегов (категории, товары, производители, статьи), SEO URL - Мультиязык 1 2 3 4 10 Автор: legioner26, 31 березня 2019 метатеги seo-h1 (і ще %d) Теги: метатеги seo-h1 title meta descritption keywords seo чпу url seopro автозаполнение seo автозаполнение seo url автоматическая генерация мета-тегов seo генератор url seo генератор чпу дубли урл дубли удаление дублей дубли категорий дубли товаров дубли статей дубли страниц индексация дубли страниц сео продвижение мета теги title настройка сео продвижение сайта топ 10 выдача сайта автоматическая генерация title и description автоматическая генерация мета-тегов title и description автозаполнение мета тегов сеоген seogen автогенерация seo генераций url мета теги мета теги заполнение выдача в поиске продвижение opencart опенкарт сео опенкарт мета теги opencart seo мультиязык чпу мультиязык мультиязык сео чпу для статей генерация сео статьи производители url производиетли url url_alias url страниц чпу seo 232 відповіді 20 706 переглядів legioner26 6 січня 2022 Избавиться от дублей товаров Автор: kostya242, 15 вересня 2021 дубли 9 відповідей 623 перегляди chukcha 15 вересня 2021 Какое оптимальное решение проблемы дублей в OP 3 для наступающего 2021 Автор: smart_center, 31 грудня 2020 opencart 3 дубли (і ще %d) Теги: opencart 3 дубли дубли страниц seopro seo pro canonical 13 відповідей 1 316 переглядів pawana 1 січня 2021 Хлебные крошки или дубли Автор: Poxod86, 20 березня 2020 дубли хлебные крошки (і ще %d) Теги: дубли хлебные крошки ошибки 3 відповіді 806 переглядів Otvet 20 березня 2020 Товары копируются 2 раза Автор: ScartFM, 2 жовтня 2019 копирование товары (і ще %d) Теги: копирование товары дубли 4 відповіді 1 465 переглядів stickpro 2 жовтня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
PVL Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 (змінено) Здравствуйте! Пользуюсь SeoPro. Все отлично работает, уже как год =) Окончание ЧПУ: html Сегодня начал разбираться с Метками в URL (http://help.yandex.ru/metrika/sources/tags.xml) добавляю к URL site.ru/catrgory/tovar.html?from=test_metok. При переходе по такой ссылки, моментально срабатывает редирект на site.ru/catrgory/tovar.html , естественно, метрика/аналитика не успевает взять инфу с метки. Но! На главной странице, страницах(статьях) и в категориях - все работает хорошо, редирект на срабатывает. Инфа появляется в статистике. site.ru/?from=test_metok site.ru/iphone?from=test_metok site.ru/about.html?from=test_metok А вот в товарах, с этим редиректом не работают метки. Сталкивался кто с таким? Избавиться от .html не могу. ---------- Спасибо zubovd! В seopro.php находим: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } Копируем, и вставляем ниже. Вместо tracking стаим свои теги. Например у меня получилось так: if (isset($tmp['tracking'])) { $data['tracking'] = $tmp['tracking']; } if (isset($tmp['utm_source'])) { $data['utm_source'] = $tmp['utm_source']; } if (isset($tmp['utm_medium'])) { $data['utm_medium'] = $tmp['utm_medium']; } if (isset($tmp['utm_campaign'])) { $data['utm_campaign'] = $tmp['utm_campaign']; } if (isset($tmp['utm_content'])) { $data['utm_content'] = $tmp['utm_content']; } if (isset($tmp['from'])) { $data['from'] = $tmp['from']; } if (isset($tmp['utm_term'])) { $data['utm_term'] = $tmp['utm_term']; } zubovd советует в robots.txt закрыть эти теги, но я надеюсь что тег rel="canonical" не даст попасть дублям в поиск. Змінено 23 січня 2014 користувачем PVL Надіслати Поділитися на інших сайтах More sharing options...
JaoDa Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Добрый день! Прошу помощи, сам не могу разобраться в чем проблема. ocStore 1.5.5.1.1 SeoPro встроен. сайт: terratex.ru ЧПУ вкл SeoPro выбран ЧПУ товаров с категориями: нет окончание .html В чем проблема: Все ссылки на товары, новости, контакты, производителя - идеальные, 1-в-1 как прописано в url_alias. К примеру: http://terratex.ru/7382e6g-server-ibm-system-x3300-m4-express.html А вот ссылки на любую категорию имеет страшный вид: http://terratex.ru/index.php?route=product/category&path=1664_1665_1666 Хотя в url_alias прописаны все чпу для категорий, пример: url_alias_id query keyword 8701 category_id=1610 catalog/computers/HP_7500_Elite Если включить вместо SeoPro режим "По умолчанию", пропадают чпу у производителей, у категорий они появляются, но по этим ссылкам выдается "Запрашиваемая страница не найдена". Что делать не знаю...попробовал уже по-моему все что можно. Помогите! Файл .htaccess Options +SymLinksIfOwnerMatchOptions -IndexesOrder deny,allowDeny from allRewriteEngine 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} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)RewriteRule ^([^?]*) index.php?_route_=$1 [QSA]RewriteCond %{HTTP_HOST} ^(www\.terratex\.ru)(:80)? [NC]RewriteRule ^(.*) http://terratex.ru/$1 [R=301,L]RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/RewriteRule ^index\.php$ http://terratex.ru/ [R=301,L]RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]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] Код файла seo_pro 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 classif ($this->config->get('config_seo_url')) {$this->url->addRewrite($this);} else {return;}// Decode URLif (!isset($this->request->get['_route_'])) {$this->validate();} else {$route_ = $route = $this->request->get['_route_'];unset($this->request->get['_route_']);$parts = explode('/', trim(utf8_strtolower($route), '/'));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];}}} 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/info';} elseif (isset($this->request->get['information_id'])) {$this->request->get['route'] = 'information/information';} elseif(isset($this->cache_data['queries'][$route_])) {header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');$this->response->redirect($this->cache_data['queries'][$route_]);} 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) {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) {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 (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {return;}if(empty($this->request->get['route'])) {$this->request->get['route'] = 'common/home';}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'))) {$config_ssl = substr($this->config->get('config_ssl'), 0, $this->strpos_offset('/', $this->config->get('config_ssl'), 3) + 1);$url = str_replace('&', '&', $config_ssl . ltrim($this->request->server['REQUEST_URI'], '/'));$seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));} else {$config_url = substr($this->config->get('config_url'), 0, $this->strpos_offset('/', $this->config->get('config_url'), 3) + 1);$url = str_replace('&', '&', $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 strpos_offset($needle, $haystack, $occurrence) {// explode the haystack$arr = explode($needle, $haystack);// check the needle is not out of boundsswitch($occurrence) {case $occurrence == 0:return false;case $occurrence > max(array_keys($arr)):return false;default:return strlen(implode($needle, array_slice($arr, 0, $occurrence)));}}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))));}}?> Надіслати Поділитися на інших сайтах More sharing options...
Ever Опубліковано: 22 січня 2014 Share Опубліковано: 22 січня 2014 Как подружить этот модуль с модулем quick-edit??? Надіслати Поділитися на інших сайтах More sharing options...
fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 Нигде не нашел как вместо site.ru/category сделать site.ru/category.html ? Версия Opencart 1.5.1.3. SeoPro установлен. Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 А смысл? Надіслати Поділитися на інших сайтах More sharing options... fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 хочу чтоб все страницы заканчивались на .html Сейчас некоторые с .html некоторые без. Возможно ли так сделать? Надіслати Поділитися на інших сайтах More sharing options... Назад 31 32 33 34 35 36 37 38 39 40 41 Вперед Сторінка 36 з 72 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 4
fjeka Опубліковано: 25 січня 2014 Share Опубліковано: 25 січня 2014 хочу чтоб все страницы заканчивались на .html Сейчас некоторые с .html некоторые без. Возможно ли так сделать? Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts