Jump to content

Проблема с ЧПУ Manufacturer


Recommended Posts

Всем привет!

 

Prestashop 1.5.4.1

 

Есть проблема с ЧПУ для производителей, имена которых вбиты в базу русскими символами. Вместо русских символов либо нет ничего, или же только дефис. Если включить в настройках SEO пункт "Специальные символы в URL", то в URL отображаются русские символы, что не устраивает.

 

Что уже предпринял:

1. В /js/admin.js произвел модификацию, согласно инструкции http://www.prestasho...пу-и-кириллица/

 

2. В /classes/Tools.php произвел модификацию, согласно инструкции http://prestadev.ru/.../tema-6401.html

 

Что получил на выходе:

1. При добавлении товара - ЧПУ товара стали автоматически генерироваться с транслитерацией.

2. Все ссылки, кроме ссылок производителей, работают корректно.

ЧПУ генерирует правдоподобные урлы для производителей, но при переходе по ним выдает сообщение о том, что данная страница не существует.

 

Помогите пожалуйста разрешить этот вопрос! Буду очень признателен.

Edited by kafelby (see edit history)

Share this post


Link to post
Share on other sites

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

 

Подскажи, пожалуйста, какой конкретно файл нужно еще копать?

Share this post


Link to post
Share on other sites

Для наглядности: http://www.kafel.by

 

Нижний блок производителей. Те производители, чье имя задано латинскими символами - грузятся отлично. Если перейти, например, по логотипу УралКерамика, то выдает сообщение, что страница не найдена.

 

Ребят, есть у кого-нибудь идеи, как решить проблему?

Share this post


Link to post
Share on other sites

у меня 1.5.4 норм работает

 

Конкретно нижний блок ведет себя странно - ссылки вроде как имеют приятный вид, но при открытии выдает 404

Share this post


Link to post
Share on other sites

решается только в tools.php

Ищем

public static function str2url($str)

Перед вставляем

 

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);
}

далее ищем

 

 $str = trim($str);

перед вставляем

 

 $str = Tools::translitIt($str);

Всё готово!

  • Like 2

Share this post


Link to post
Share on other sites

Так, если кто-нибудь понял что делать с буквами которые написал абсент, то расскажите мне чутка подробнее, как совсем тупому =)

 

Это просто волшебство! Теперь вообще все на свете транслитируется и артибуты в урл и фильры многоуровневой навигации! я миллиарды букв на десятках форумов прочитал до этого и все ни о чем, а тут раз и все проблемы решились.

 

Респект тебе огромный, Абсент! Крутой мужик!!!

Edited by nextfriday (see edit history)
  • Like 1

Share this post


Link to post
Share on other sites

Благодарю вас за отзыв)

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

Share this post


Link to post
Share on other sites

я заменял выво для чпу.

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

итого у меня русский произв. а чпу латинское))

либо делать отдельное поле чпу.

Share this post


Link to post
Share on other sites

решается только в tools.php

Ищем

public static function str2url($str)

Перед вставляем

 

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);
}

далее ищем

 

 $str = trim($str);

перед вставляем

 

 $str = Tools::translitIt($str);

Всё готово!

Дополню для таких как я:) Сделал все, как Вы сказали, но ссылки у меня стали http://сайт/3_rrr-rrrsrr

Чтобы это исправить, надо после редактирования файла, сохранить его в UT8 сняв при этом галку с ВОМ

Share this post


Link to post
Share on other sites

либо link_rewrite производителя выводить в админке дополнительно и скриптом транслит делать.и делать поле в бд

Share this post


Link to post
Share on other sites

  • 1 month later...

я заменял выво для чпу.

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

итого у меня русский произв. а чпу латинское))

либо делать отдельное поле чпу.

 

Уважаемый absent, напишите, пожалуйста как это сделать с именем файла и заменой/вставкой нового кода, так , как вы описали добавление транслита ЧПУ.

Share this post


Link to post
Share on other sites

  • 2 weeks later...

А кто знает как решить проблему с длиной строки в названии категорий и ЧПУ?

Число символов, которое туда можно написать ограниченно 64 символами.

Для моего сайта это очень мало, так как названия категорий длиннее.

Уже лазил в базу MySQL, нашел там таблицу ps_shop_url, в ней строки physical_uri и virtual_uri, а в них полня Длина/значения поменял на 180, вместь 64.

Но все это не помогает.

Но парадокс вот в чем, сайт я мигрировал с Virtuemart, и при миграции все длинные названия категорий и ЧПУ были успешно добавлены и хорошо отображаются.

Но когда я захожу в категорию и пытаюсь в ней что-то поменять (например добавить описание) и нажимаю сохранить категорию, то выдет вот такую ошибку:

 

Поле имя (Russian) слишком длинное (максимум 64 символа, включая html символы).

Поле ЧПУ (Russian) слишком длинное (максимум 64 символа, включая html символы).

 

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

СПАСИБО!

Share this post


Link to post
Share on other sites

В classes\Category.php найдите строку

'link_rewrite' =>   array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 64),

и замените 64 на число побольше.

Либо при редактировании категории в поле ЧПУ сократите ссылку до 64 символов

Share this post


Link to post
Share on other sites

  • 2 weeks later...

для чпу без id нужна доработка данного способа

Подскажите, как реализовать? Ссылки стали нормально генерироваться, но при переходе по ним - Страница не найдена. Edited by zandes (see edit history)

Share this post


Link to post
Share on other sites

Применил ваш способ:

решается только в tools.php

Ищем

public static function str2url($str)

Перед вставляем

 

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);
}

далее ищем

 

 $str = trim($str);

перед вставляем

 

 $str = Tools::translitIt($str);

Всё готово!

Теперь ссылки на производителей генерируются нормально на транслите, но при переходе по ссылке - Страница не найдена. Использую ссылки без id.

Share this post


Link to post
Share on other sites

как вариант я использовал поле meta title для чпу, тоесть название и чпу разные поля как в товаре)

либо обратный транслит в контроллере

  • Like 1

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Ребят помогите решить проблемку, Преста 1,5,4,1 с ЧПУ пишет кирилицей, перепробовал несколько способов

описаних здесь:

способ постом выше тоже не помогло...

http://www.prestashop.com/forums/topic/238615-%D1%87%D0%BF%D1%83-%D0%B8-%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0/

http://prestadev.ru/forum/tema-6401-10.html (так и не ответили как локализатор поставить...а сам я только учусь...)

Share this post


Link to post
Share on other sites

  • 2 months later...

Метод от Absent на 100% работает! (presta 1.5.6) Чтоб ссылки не были битыми и не было 404 ошибки - надо после дописки в tools.php зайти в настройку модуля многоуровневой навигации и переиндексить всё и будет всем счастье! Ура, заработало!!! :)

Edited by websprint (see edit history)

Share this post


Link to post
Share on other sites

  • 10 months later...
  • 9 months later...

как вариант я использовал поле meta title для чпу, тоесть название и чпу разные поля как в товаре)

либо обратный транслит в контроллере

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More