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

SEO ЧПУ для товаров


Recommended Posts

ocStore Version 0.0.7

Поставил это https://opencartforum.com/files/download/75-%D1%83%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D1%83%D0%B1%D0%BB%D0%B5%D0%B9-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B9/

вторая ссылка

Категории работают, дубли устранились, но товары по прежнему вида index.php?route=product/product&path=126&product_id=1099

Как бы все это модифицировать, чтобы товары доже получили "дружелюбные" ссылки? Нужна только латиница.

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

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


а псевдонимы хоть товарам не забыли прописать?

Еще возможно проблема в этом:

предыдущий программист накрутил кучу костылей по мелочам

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


а псевдонимы хоть товарам не забыли прописать?

Еще возможно проблема в этом:

хм, точно! псевдоним не везде есть! Спасибо))

Такой вопрос. Псевдоним вбивать одной строкой латиницей или движок сам разберет, что псевдоним "Akrilovaya vanna" должен быть "akrilovaya_vanna"?

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


хм, точно! псевдоним не везде есть! Спасибо))

Такой вопрос. Псевдоним вбивать одной строкой латиницей или движок сам разберет, что псевдоним "Akrilovaya vanna" должен быть "akrilovaya_vanna"?

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

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


Написал скрипт, который заполняет url_alias. С каталогом все Ок. Категории, производители и товары получают нужный URL, но раздел Новости генерит старый url. Хотя админка говорит, что они все снабжены псевдонимами, как я прописывал. Кэш в папке system чистил.

Что еще допилить, чтобы новости тоже имели дружелюбный вид?

Змінено користувачем ratso
Надіслати
Поділитися на інших сайтах


для оЧПУшивания новостей необходимо внести соответствующие изменения (описать новости) в файлы seo_url, отвечающие за работу ЧПУ ссылок.

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

для оЧПУшивания новостей необходимо внести соответствующие изменения (описать новости) в файлы seo_url, отвечающие за работу ЧПУ ссылок.

Подскажи, пжлст, какие именно файлы нужно смотреть. Видел, как минимум, два файла с seo что-то там.
Надіслати
Поділитися на інших сайтах


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

А вот что за скрипт Вы написали интересно было посмотреть.Не поделитесь с общественностью?

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


А вот что за скрипт Вы написали интересно было посмотреть.Не поделитесь с общественностью?

Поделюсь)

<?php
define('DS', DIRECTORY_SEPARATOR);
define('APP_PATH', realpath(dirname(__FILE__)).DS);

require_once APP_PATH.'config.php';

try {
	$db = new PDO("mysql:host=".DB_HOSTNAME.";dbname=".DB_DATABASE, DB_USERNAME, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch (Exception $e) {
	echo $e->getMessage();
}

$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$exceptions = array();
foreach ($db->query('SELECT query from url_alias') as $row) {
	$path = $row['query'];
	preg_match("/^(.*)_id=(\d+$)/iU",$path,$matches);
	if ($matches[1] == 'category')
	$exceptions['category'][] = $matches[2];
	elseif($matches[1] == 'vendor') $exceptions['vendor'][] = $matches[2];
	else $exceptions[$matches[1]][] = $matches[2];
}


//Результаты
$insert = array();

//Обход производителей
foreach ($db->query('SELECT manufacturer_id as id,name from manufacturer') as $row) {
	if (!in_array($row['id'],$exceptions['vendor']))
	$insert[] = array(
	'query'=>'manufacturer_id='.$row['id'],
	'keyword'=>slug($row['name'])
	);
}

//Обход категорий
foreach ($db->query('SELECT category_id as id,name from category_description') as $row) {
	if (!in_array($row['id'],$exceptions['category']))
	$insert[] = array(
	'query'=>'category_id='.$row['id'],
	'keyword'=>$row['id'].'-'.slug($row['name'])
	);
}

//Обход продуктов
foreach ($db->query('SELECT product_id as id,model from product') as $row) {
	$insert[] = array(
	'query'=>'product_id='.$row['id'],
	'keyword'=>(strlen($row['model'])>0)?$row['id'].'-'.slug($row['model']):$row['id']
	);
}

//Обход новостей
foreach ($db->query('SELECT news_id as id,title from news_description') as $row) {
	if (!in_array($row['id'],$exceptions['news']))
	$insert[] = array(
	'query'=>'news_id='.$row['id'],
	'keyword'=>$row['id'].'-'.slug($row['title'])
	);
}

//Обход инфо-страниц
foreach ($db->query('SELECT information_id as id,title from information_description') as $row) {
	if (!in_array($row['id'],$exceptions['information']))
	$insert[] = array(
	'query'=>'info_id='.$row['id'],
	'keyword'=>$row['id'].'-'.slug($row['title'])
	);
}

$fields = array('query'=>PDO::PARAM_STR, 'keyword'=>PDO::PARAM_STR);

foreach ($insert as $r) {
	echo "INSERT INTO `url_alias` (`query`,`keyword`) VALUES('{$r['query']}','{$r['keyword']}');<br />";
}

//Slugify
function slug($title) {
	$gost = array(
     "Є"=>"EH","І"=>"I","і"=>"i","№"=>"#","є"=>"eh",
     "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
     "Е"=>"E","Ё"=>"JO","Ж"=>"ZH",
     "З"=>"Z","И"=>"I","Й"=>"JJ","К"=>"K","Л"=>"L",
     "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
     "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"KH",
     "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
     "Ы"=>"Y","Ь"=>"","Э"=>"EH","Ю"=>"YU","Я"=>"YA",
     "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
     "е"=>"e","ё"=>"jo","ж"=>"zh",
     "з"=>"z","и"=>"i","й"=>"jj","к"=>"k","л"=>"l",
     "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
     "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
     "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
     "ы"=>"y","ь"=>"","э"=>"eh","ю"=>"yu","я"=>"ya","«"=>"","»"=>"","—"=>"-"," "=>"-",
	")"=>"-","("=>"-","*"=>"-","&"=>"-","/"=>"-"
	);
	$return = trim(strtr($title, $gost), '-');
	$return = strtolower($return);
	$return = str_replace("--","-",$return);
	$return = preg_replace("![^\w\d\s-]*!iU","",$return);
	return $return;	
}
  • +1 1
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

Вхід

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

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

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

Important Information

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