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

Recommended Posts

Может я плохо искал, но не нашел такого модуля. Реализовал сам - работает (это главное).

Код предназначен для автогенерации seo-url товара, чтобы его не пришлось заполнять вручную. Хотите себе такое? Тогда читайте ниже:

------------------------------

Обновлено (для тех кто иногда хочет и руками вводить)

1) Открываем в блокноте файл admin/controller/catalog/product.php

2) Находим строку if (isset($this->request->post['keyword'])) { (у меня она 783)

3) перед ней вставляем код

function translitIt($str)
{
	$tr = array(
		"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",
		"Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i",
		"Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
		"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
		"У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch",
		"Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
		"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
		"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
		"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
		"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
		"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
		"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
		"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
		" "=> "-", "."=> "", "/"=> "-", "'"=> "",
	);
	return strtr($str,$tr);
}

4) Находим строку $this->data['keyword'] = $product_info['keyword']; (на пару строк ниже чем код который мы вставили)

5) Заменяем блок

if (isset($this->request->post['keyword'])) {
   $this->data['keyword'] = $this->request->post['keyword'];
  } elseif (!empty($product_info)) {
   $this->data['keyword'] = $product_info['keyword'];
  } else {
   $this->data['keyword'] = '';
  }

на

if (isset($this->request->post['keyword'])) {
   $this->data['keyword'] = $this->request->post['keyword'];
  } elseif (!empty($product_info['keyword'])) {
   $this->data['keyword'] = $product_info['keyword'];
  }
  else {
   $this->data['keyword'] = translitIt($product_info['name']);
  }
6) Теперь при добавлении товара, можно не заполнять seo-url. Он будет автоматически взят и транслитирован из названия товара. Но так же можно и вручную прописать.

--------------------------------

Для тех у кого стоит VqMod:

https://opencartforum.com/files/file/458-avtogeneraciya-seo-url-dlya-tovara/

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


Замените на красивое решение

replacedLetters = array( 'ё' => 'e', 'й' => 'y', 'ц' => 'c', 'у' => 'u', 'к' => 'k', 'е' => 'e', 'н' => 'n', 'г' => 'g', 'ш' => 'sh', 'щ' => 'sch', 'з' => 'z',
	    'х' => 'h', 'ъ' => '', 'ф' => 'f', 'ы' => 'y', 'в' => 'v', 'а' => 'a', 'п' => 'p', 'р' => 'r', 'о' => 'o', 'л' => 'l', 'д' => 'd', 'ж' => 'zh', 'э' => 'e', 'я' =>
	    'ya', 'ч' => 'ch', 'с' => 's', 'м' => 'm', 'и' => 'i', 'т' => 't', 'ь' => '', 'б' => 'b', 'ю' => 'yu', 'є' => 'e', 'ї' => 'yi', 'і' => 'i', 'ґ' => 'g' ) ; //Таблица транслитерации
    $string = utf8_strtolower( $string ) ;//ВОЗМОЖНО функцию нужно изменить

	    $string = strtr( $string, $replacedLetters ) ;

    $string = preg_replace( '/[^p{L}p{Nd}/0-9]+/u', '-', $string ) ; //http://habrahabr.ru/blogs/php/45910/
    $string = preg_replace( '/-//u', '/', $string ) ;
    $string = preg_replace( '//-/u', '/', $string ) ;
    $string = trim( $string, '-' ) ;
    return $string ;
}
Надіслати
Поділитися на інших сайтах

  • 1 year later...

Я у себя переписал СЕО-ПРО так что для каждого языка своя ссылка. В итоге 1 магазин - 1 язык.

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

Приветствую, за решение спасибо.

 

А кто нибудь делал что бы SEO URL автоматически заполнялся product_id из базы данных ( только для товаров ) ? Есть готовое решение? 

 

Просто пока не сильно владею и нет возможности переписать модель и контроллер для этих дел но нужно быстрое решение?

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


ну так тут ничего сложного

было

		if ($data['keyword']) {
			$this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'");
		}
Стало

		if ($data['keyword']) {
			$this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'");
		} else {
			$this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $product_id  . "'");

}
зы. Ничего что в чужой теме?
  • +1 2
Надіслати
Поділитися на інших сайтах

Спасибо, да уже и сам догадался что в модели.

 

Блин но проблема что не работает. При создании или сохранении товара в таблицу ничего не пишется. При вводе чего нибудь ( к примеру aaa) в SEO URL то запись добавляется в таблицу url_alias, но если оставить пустым то ничего не происходит.

 

Пробывал распечатать переменную var_dump($product_id) // но это идея явна глупая.

 

Подскажи куда копать ? или я что-то не понимаю ?

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


Должно писаться при создании

 

для изменения

        $this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id. "'");
        
        if ($data['keyword']) {
            $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'");
        } else {
            $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $product_id . "'");

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

  • 1 year later...

Спасибо за статью, но перед добавление товара. Вверху ошибка. Помогите решить.

 

 

Notice: Undefined variable: product_info in /var/www/  /data/www/  /admin/controller/catalog/product.php on line 1110

 

post-688146-0-15466600-1431068055_thumb.png

 

1110

            $this->data['keyword'] = translitIt($product_info['name']);

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


  • 10 months later...

Может я плохо искал, но не нашел такого модуля. Реализовал сам - работает (это главное).

Код предназначен для автогенерации seo-url товара, чтобы его не пришлось заполнять вручную. Хотите себе такое? Тогда читайте ниже:

------------------------------

Обновлено (для тех кто иногда хочет и руками вводить)

1) Открываем в блокноте файл admin/controller/catalog/product.php

2) Находим строку if (isset($this->request->post['keyword'])) { (у меня она 783)

3) перед ней вставляем код

function translitIt($str)
{
	$tr = array(
		"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",
		"Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i",
		"Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
		"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
		"У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch",
		"Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
		"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
		"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
		"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
		"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
		"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
		"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
		"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
		" "=> "-", "."=> "", "/"=> "-", "'"=> "",
	);
	return strtr($str,$tr);
}
4) Находим строку $this->data['keyword'] = $product_info['keyword']; (на пару строк ниже чем код который мы вставили)

5) Заменяем блок

if (isset($this->request->post['keyword'])) {
   $this->data['keyword'] = $this->request->post['keyword'];
  } elseif (!empty($product_info)) {
   $this->data['keyword'] = $product_info['keyword'];
  } else {
   $this->data['keyword'] = '';
  }
на
if (isset($this->request->post['keyword'])) {
   $this->data['keyword'] = $this->request->post['keyword'];
  } elseif (!empty($product_info['keyword'])) {
   $this->data['keyword'] = $product_info['keyword'];
  }
  else {
   $this->data['keyword'] = translitIt($product_info['name']);
  }
6) Теперь при добавлении товара, можно не заполнять seo-url. Он будет автоматически взят и транслитирован из названия товара. Но так же можно и вручную прописать.

--------------------------------

Для тех у кого стоит VqMod:

 

 

 

А как-то можно добавить возможность подстановки ID товара в начале или в конце seo url? Это было бы очень актуально в случае одинаковых названий товара.

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


А как-то можно добавить возможность подстановки ID товара в начале или в конце seo url? Это было бы очень актуально в случае одинаковых названий товара.

 

"в случае одинаковых названий товара." - это дубли, не советую их делать.

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


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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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