YaSe

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

Рекомендуемые сообщения

YaSe    23

Смысл в следующем:

При вводе поля "Название товара" введенное значение переводится в транслит и записывается в поле "Псевдоним".

То же самое для категорий, производителей и информационных статей.

Установка:

1. Скопировать файл translit.js в папку admin/view/javascript/jquery/

2. Добавить в файл admin/view/template/common/header.tpl после строки

строку

В самом translit.js в document.ready для каждого раздела подключается обработчик.

Пример подключения для страницы товаров:

setTranslit("product_description[1][name]", "keyword", false);
первый параметр - имя input с названием товара

второй параметр - имя input с псевдонимом ( куда будем писать )

третий параметр - перезаписывать ли псевдоним при изменении имени товара.

Если третий параметр false - псевдоним будет заполнен только если ранее это поле было пустым.

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

Вроде все.

PS. Тестировалось на OpenCart v1.4.6

Копеечный вариант под новые версии находится тут

translit.zip

Изменено пользователем YaSe
edit -> save

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Banditman    0

А у меня вылазит ошибка после создания псевдонима с функцией seo-url ! Что нужно сделать что бы её исправить!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Banditman    0

А не у кого не было-ли проблемы с базами данных, после добавления товара :) :) https://opencartforum.com/public/style_emoticons/default/icon_question.gif

У меня что то вылазит подобное

# SQL.q : INSERT INTO oc_product_tags SET product_id = '57', language_id = '1', tag = 'необычные подарки'

# MySQL.e : Duplicate entry '57-необычные подарки-1' for key 1

# MySQL.e.№ : 1062

# PHP.v : 5.2.13

# Data : 05.06.2010 13:18

# Script : /admin/index.php?route=catalog/product/insert

# Refer : http://suvenir-74.ru/admin/index.php?ro ... uct/insert

Если удалить фаил translit, то всё пропадает!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Shaman    1

Спасибо! Отличное решение для сотрудников магазина, особенно если много товаров.

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

product_description[1]
потому как у меня этот номер - двойка и скрипт пришлось подправить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ooZe    2

А не у кого не было-ли проблемы с базами данных, после добавления товара :) :) :) У меня что то вылазит подобное # SQL.q : INSERT INTO oc_product_tags SET product_id = '57', language_id = '1', tag = 'необычные подарки'# MySQL.e : Duplicate entry '57-необычные подарки-1' for key 1# MySQL.e.№ : 1062# PHP.v : 5.2.13# Data : 05.06.2010 13:18# Script : /admin/index.php?route=catalog/product/insert# Refer : http://suvenir-74.ru/admin/index.php?ro ... uct/insertЕсли удалить фаил translit, то всё пропадает!

у меня проблем небыло, ошибка: # MySQL.e : Duplicate entry '57-необычные подарки-1' for key 1т.е. уже есть такая строка в базе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Banditman    0

Я полностью переделал базу (удалил и создал новую) , переустановил Опен Карт, и каждый раз ошибка лезет при добавлении(сохранении) любого нового товара, которого раньше даже не было вообще, а если потом отредактировать тот же товар, то сохраняет всё нормально как и должно без модуля! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
cashfile    12

... В самом translit.js в document.ready для каждого раздела подключается обработчик.Пример подключения для страницы товаров:

setTranslit("product_description[1][name]", "keyword", false);
первый параметр - имя input с названием товаравторой параметр - имя input с псевдонимом ( куда будем писать )третий параметр - перезаписывать ли псевдоним при изменении имени товара.Если третий параметр false - псевдоним будет заполнен только если ранее это поле было пустым.Обратите внимание, что квадратные скобки в имени поля следует экранировать дважды.
На "первый" взгляд в 1.4.0 работает.Это описание работы или ещё нужно вручную что-то добавлять ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
YaSe    23

Shaman

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

потому как у меня этот номер - двойка и скрипт пришлось подправить.

Это language_id - код вашего языка.

Banditman

Причем тут таблица oc_product_tags, если

а. модуль вообще в базу ничего не пишет. он заполняет определенное поле и все.

б. то поле, с которым работает модуль, записывается в таблицу oc_url_alias

Видимо дело в чем-то другом.

cashfile

Больше вручную ничего добавлять не нужно.

У скрипта нет мультиязычности, он работает только с одним, указанным ранее языком.

Мне это не нужно было, возможно кто-то и допишет.

P.S. Только что поставил на 1.4.7 - отлично работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Banditman    0

У меня всё теперь нормально, с базой фигня какаето была! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
artem9009    0

Всем доброго времени суток!

У меня в адресной строке выходит

(http://sitename.ru/811-------------------------/81106---------------------------300----------)

заместо - (дефиса) должны быть русские буквы! кто знает как устранить проблему???!! буду рад слышать =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 095

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
artem9009    0

Я там и смотрел. Опять же моя невнимательность =) благодарствую, нашел ответ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
unic    0

Добрый день, уважаемые.

Подскажите пожалуйста новичку как быть, если я установил и Auto SEO и seo.php, но ничего не изменилось с урлами категорий и товаров.

Порывшись в админке движка увидел в "Система-Настройки-Сервер" такой пунктик как "Использование SEO-url" он был в положении "Нет".

Я перевёл его в положение "Да" и при загразке сайта получил ошибку "404 Not found. Not Found. The requested URL /about_us was not found on this server." Хотя главная страница грузится, а все остальные нет, выдаёт на всех остальных ошибку.

Но при этом урлы страниц уже нормальные, какими и хотелось их получить...

Если возвращаю опять в положение "Нет" (как на рисунке) всё снова работает, но урлы ужасные...

Прочёл уже вроде бы все ветки форума, ответа не нашёл для своего случая :( Подскажите, как исправить это?

post-7233-0-64369100-1301867358_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

Добрый день, уважаемые.

Подскажите пожалуйста новичку как быть, если я установил и Auto SEO и seo.php, но ничего не изменилось с урлами категорий и товаров.

Порывшись в админке движка увидел в "Система-Настройки-Сервер" такой пунктик как "Использование SEO-url" он был в положении "Нет".

Я перевёл его в положение "Да" и при загразке сайта получил ошибку "404 Not found. Not Found. The requested URL /about_us was not found on this server." Хотя главная страница грузится, а все остальные нет, выдаёт на всех остальных ошибку.

Но при этом урлы страниц уже нормальные, какими и хотелось их получить...

Прочёл уже вроде бы все ветки форума, ответа не нашёл для своего случая :( Подскажите, как исправить это?

для начала переименовать htaccess.txt в .htaccess

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
unic    0

т.е. без расширения оставить файл?

Всё заработало! :) Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Surfer7    4

Скрипт супер! Дополнительно перенес поле SEO и картинки на первую страницу, теперь можно сразу контролировать и изменять поле по необходимости. И еще, сделал так, чтобы SEO генерировалось только строчными буквами. Изображение

появился вопрос, кто силен в javascript: как сделать автоматическое копирование поля "название" в поля "title" плюс дописать категорию, чтобы было типа [title]-[category] и в другие поля также

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Surfer7    4

я так понял, скрипт использует jquery и var(), дополните этот скрипт автогенератором МЕТА, ключевых слов и т.д. кто разбирается

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Smallbear    79

кто нибудь тестировал скрипт на ocstore_v0.1.7 он в этой версии вообще должен работать?

Поставил его а ничего не происходит,его просто нужно в папку с джаваскрипт добавить,и прописать к нему путь в хедере?Или нужно еще сам файл translit как-то настраивать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Surfer7    4

настраивать не нужно, seo-alias генерируется только если поле seo пустое (при setTranslit("product_description[1][name]", "keyword", false); ) и если поле название товара изменилось (можно добавить пробел в конце и удалить). если оставить true, то должно перезаписывать при каждом изменении поля "название". Скрипт классный, но доработать для полей "описание" и "ключевые слова" никто не хочет почему-то

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Mona    0

Скажите, поставила сео транслит и теперь в сео-псевдониме вместо пробела стоит нижнее подчеркивание, хотя системой оно отключено. Как поменять на дефис?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ychetka    0

у меня проблем небыло, ошибка: # MySQL.e : Duplicate entry '57-необычные подарки-1' for key 1

т.е. уже есть такая строка в базе

Вот пример SQl запроса на запись тегов, в котором решена твоя проблема (обрати внимание на вторую часть запроса)

$this->db->query("INSERT INTO " . DB_PREFIX . "product_tags SET product_id ='" . (int)$product['product_id'] . "', tag = '" . $this->db->escape($ptag_ind) . "', language_id = '" . (int)$product['language_id'] . "' ON DUPLICATE KEY UPDATE tag = VALUES(tag), product_id=VALUES(product_id), language_id=VALUES(language_id)");

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
luka29    1

на 1.5.1.3 работает

А у меня ничего не происходит. Можно для непонятливых, попроще объяснить эту часть установки, пожалуйста.

В самом translit.js в document.ready для каждого раздела подключается обработчик.

Пример подключения для страницы товаров:

setTranslit("product_description[1][name]", "keyword", false);

первый параметр - имя input с названием товара

второй параметр - имя input с псевдонимом ( куда будем писать )

третий параметр - перезаписывать ли псевдоним при изменении имени товара.

Если третий параметр false - псевдоним будет заполнен только если ранее это поле было пустым.

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

Там стоят слеши, их нужно убрать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу