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

[Доработка] Автоматический транслит псевдонима для SEO-url


Гість

Recommended Posts

посмотрите мой файлик но я заполняю таким образом только для продуктов и только там где не заполнено тоесть ссылки не перезаписываются

translit.zip

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

посмотрите мой файлик но я заполняю таким образом только для продуктов и только там где не заполнено тоесть ссылки не перезаписываются

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


а Вы в хидер подключили это скрипт ? вот это добавили ?

<script type="text/javascript" src="view/javascript/jquery/translit.js"></script>

Да, но может в другое место надо поставить. вот мой хидер:
<head>
<title><?php echo $title; ?></title>
<base href="<?php echo $base; ?>" />
<?php if ($description) { ?>
<meta name="description" content="<?php echo $description; ?>" />
<?php } ?>
<?php if ($keywords) { ?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<?php } ?>
<?php foreach ($links as $link) { ?>
<link href="<?php echo $link['href']; ?>" rel="<?php echo $link['rel']; ?>" />
<?php } ?>
<link rel="stylesheet" type="text/css" href="view/stylesheet/stylesheet.css" />
<?php foreach ($styles as $style) { ?>
<link rel="<?php echo $style['rel']; ?>" type="text/css" href="<?php echo $style['href']; ?>" media="<?php echo $style['media']; ?>" />
<?php } ?>
<script type="text/javascript" src="view/javascript/jquery/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="view/javascript/jquery/ui/jquery-ui-1.8.16.custom.min.js"></script>
<link rel="stylesheet" type="text/css" href="view/javascript/jquery/ui/themes/ui-lightness/jquery-ui-1.8.16.custom.css" />
<script type="text/javascript" src="view/javascript/jquery/ui/external/jquery.bgiframe-2.1.2.js"></script>
<script type="text/javascript" src="view/javascript/jquery/translit.js"></script>
<script type="text/javascript" src="view/javascript/jquery/tabs.js"></script>
<script type="text/javascript" src="view/javascript/jquery/superfish/js/superfish.js"></script>
<?php foreach ($scripts as $script) { ?>
<script type="text/javascript" src="<?php echo $script; ?>"></script>
<?php } ?>
<script type="text/javascript">
Надіслати
Поділитися на інших сайтах


Эти ссылки автоматически должны появиться, если seo урлы не прописаны?

Нет, у существующих товаров/категорий/статей/производителей автоматически ничего не появится.

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

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

Нет, у существующих товаров/категорий/статей/производителей автоматически ничего не появится.

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

а слона то в вопросе я и не увидел :-)
Надіслати
Поділитися на інших сайтах

  • 4 weeks later...

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

ну тут только автогенерация в урл чего то типа 2321321 поможет
Надіслати
Поділитися на інших сайтах

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

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


Ооу, эта простенькая доработка еще актуальна? { где тут в смайликах ::facepalm:: ? }

отличная штука пользуемся и радуемся :-) косяков почти нет никаких разве что спецсимвол и / не получается заменять который бывает встречается в названиях но все обучены как это исправить руками :-)
Надіслати
Поділитися на інших сайтах

Проблему с дублями можно так :

идем в admin/model/cotolog/product.php

ищем if ($data['keyword']) и правим sql запрос вот так:

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

в итоге получаем всегда уникальные ссылки вида domen.ru/idproducta_name_product

НЕПРАВИЛЬНЫЙ ЗАПРОС! После каждого обнавления товара добавляеться id товара (

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


  • 1 month later...

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

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


думаю лучше натравить модуль deadcow

чем лучше ?

точнее это два разных модуля имеющие разный функционал и первый и второй имеет право на жизнь

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

деадков имеет смысл использовать если товары к примеру заливались через импорт экспорт и у них нет чпу ссылок тогда имеет смысл ис сгенерировать но это стоит делать только 1н раз потому как деадков их перезаписывает и ему глубоко фиолетово заполнено поле или нет и в случае изменения названия товара ссылка изменится и по старому адресу мы получим 404

поэтому сказать что тот или иной вариант лучше нельзя нужно определяться с задачей и условиями "окружающей среды" после чего уже принимать решение

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

деадков имеет смысл использовать если товары к примеру заливались через импорт экспорт и у них нет чпу ссылок тогда имеет смысл ис сгенерировать но это стоит делать только 1н раз потому как деадков их перезаписывает и ему глубоко фиолетово заполнено поле или нет и в случае изменения названия товара ссылка изменится и по старому адресу мы получим 404

грамотно натравить. перед каждым сохранением объекта, без перезаписи.

>чем лучше?

надежнее, imho

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

можно чуть подробнее про грамотно натравить :-) может я чего то не понимаю

а насчет надежности то с авто заполнением накладок у меня еще не было хотя и работает он на 10ке магазинов

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

можно чуть подробнее про грамотно натравить :-) может я чего то не понимаю

делал месяц назад где-то заказчику. посмотрю остались ли исходники

а насчет надежности то с авто заполнением накладок у меня еще не было хотя и работает он на 10ке магазинов

c одной стороны js, с другой php+sql
  • +1 1
Надіслати
Поділитися на інших сайтах

Господа, помогите.

Версия 1.5.1.3

Сделал все как написано в этой ветке. Переделал url в категориях и товарах, но страницы не находит. Если url оставить пустым, то все работает, но с нечитабельными url.

Знаю, что я не первый с таким вопросом, но перерыл весь форум, а ответ не нашел

Как поправить?

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


  • 2 weeks later...

скрипт нужный автору спасибо но!!!

было обнаружено пару неудобств

1. выводил знак вместо пробела знак "_" хотелось "-"

2. не удалял лишние пробелы

3.оставлял верхний регистр букв(а ето тотальная ошибка- такие алиасы не открываются)

т.е.

Cлово1, слоВо2,		  слОво3
получалось

Slovo1__sloVo2__________slOvo3_

вот доработанный код файла translit.js исправляющий это

теперь :

slovo1-slovo2-slovo3


var ru2en = {
  ru_str : 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя,.; "',
  en_str : ['A','B','V','G','D','E','JO','ZH','Z','I','J','K','L','M','N','O','P','R','S','T',
	'U','F','H','C','CH','SH','SHH','','I','','JE','JU',
	'JA','a','b','v','g','d','e','jo','zh','z','i','j','k','l','m','n','o','p','r','s','t','u','f',
	'h','c','ch','sh','shh','','i','','je','ju','ja','-','-','-','-','-'],
  translit : function(org_str) {
	var tmp_str = "";
	var org_str= trimm(org_str);
	for(var i = 0, l = org_str.length; i < l; i++) {
	  var s = org_str.charAt(i), n = this.ru_str.indexOf(s);
	  if(n >= 0) { tmp_str += this.en_str[n]; }
	  else { tmp_str += s; }
	}
	return trimn(tmp_str);
  }
}

function setTranslit(source, dest, rewrite) {
	var name = $("input[name='"+source+"']").val();
	if (name != undefined) {
		$("input[name='"+source+"']").change(function(){
			var name = $("input[name='"+source+"']").val();
			var key = $("input[name='"+dest+"']").val();
			if ((key == '')||(rewrite))
				$("input[name='"+dest+"']").val(ru2en.translit(name));
		});
	}
}

function trimn(str)
{
var VRegExp = new RegExp(/-{2,}/g);
var VResult = str.replace(VRegExp, '-');
return VResult.toLowerCase();
}

function trimm(org_str) {
var l=org_str.length;
var t='',c,c0=' ';
for (var i=0; i<l; i++) {
  c=org_str.substring(i,i+1);
  if (c==' ') {
   if (c0==' ') continue;
  }
  c0=c;
  t+=c;
}
l=t.length;
if (t.substring(l-1,l)==' ') t=t.substring(0,l-1);
return t;
}

$(document).ready(function(){
	// Products
	setTranslit("product_description[1][name]", "keyword", false);
	// Info Articles
	setTranslit("information_description[1][title]", "keyword", false);
	// Categories
	setTranslit("category_description[1][name]", "keyword", false);
	// Manufacturer
	setTranslit("name", "keyword", true);
});


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

  • 5 months later...

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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