kafelby Posted May 26, 2013 Share Posted May 26, 2013 (edited) Всем привет! 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 May 27, 2013 by kafelby (see edit history) Link to comment Share on other sites More sharing options...
kafelby Posted May 26, 2013 Author Share Posted May 26, 2013 ? Link to comment Share on other sites More sharing options...
absent Posted May 26, 2013 Share Posted May 26, 2013 в 1.5 думаю дополнительно придётся смотреть класс который за урлы отвечает Link to comment Share on other sites More sharing options...
kafelby Posted May 27, 2013 Author Share Posted May 27, 2013 в 1.5 думаю дополнительно придётся смотреть класс который за урлы отвечает Подскажи, пожалуйста, какой конкретно файл нужно еще копать? Link to comment Share on other sites More sharing options...
kafelby Posted May 27, 2013 Author Share Posted May 27, 2013 (edited) Вроде как все прописывается в classes/Tools.php Edited May 27, 2013 by kafelby (see edit history) Link to comment Share on other sites More sharing options...
kafelby Posted May 27, 2013 Author Share Posted May 27, 2013 Для наглядности: http://www.kafel.by Нижний блок производителей. Те производители, чье имя задано латинскими символами - грузятся отлично. Если перейти, например, по логотипу УралКерамика, то выдает сообщение, что страница не найдена. Ребят, есть у кого-нибудь идеи, как решить проблему? Link to comment Share on other sites More sharing options...
kafelby Posted May 27, 2013 Author Share Posted May 27, 2013 Есть идеи? Link to comment Share on other sites More sharing options...
absent Posted May 27, 2013 Share Posted May 27, 2013 у меня 1.5.4 норм работает Link to comment Share on other sites More sharing options...
kafelby Posted May 27, 2013 Author Share Posted May 27, 2013 у меня 1.5.4 норм работает Конкретно нижний блок ведет себя странно - ссылки вроде как имеют приятный вид, но при открытии выдает 404 Link to comment Share on other sites More sharing options...
absent Posted May 27, 2013 Share Posted May 27, 2013 решается только в 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); Всё готово! 2 Link to comment Share on other sites More sharing options...
absent Posted May 27, 2013 Share Posted May 27, 2013 теперь русский чпу будет транслитом для производителей Link to comment Share on other sites More sharing options...
nextfriday Posted June 2, 2013 Share Posted June 2, 2013 (edited) Так, если кто-нибудь понял что делать с буквами которые написал абсент, то расскажите мне чутка подробнее, как совсем тупому =) Это просто волшебство! Теперь вообще все на свете транслитируется и артибуты в урл и фильры многоуровневой навигации! я миллиарды букв на десятках форумов прочитал до этого и все ни о чем, а тут раз и все проблемы решились. Респект тебе огромный, Абсент! Крутой мужик!!! Edited June 2, 2013 by nextfriday (see edit history) 1 Link to comment Share on other sites More sharing options...
absent Posted June 2, 2013 Share Posted June 2, 2013 Благодарю вас за отзыв) Link to comment Share on other sites More sharing options...
Oleksa5 Posted June 2, 2013 Share Posted June 2, 2013 Благодарю вас за отзыв) А как тогда победить ошибку 404 при переходе на производителя с уже транситным урлом? Link to comment Share on other sites More sharing options...
absent Posted June 2, 2013 Share Posted June 2, 2013 в контроллере производителей. Link to comment Share on other sites More sharing options...
absent Posted June 2, 2013 Share Posted June 2, 2013 если чпу без id то немного по другому делается Link to comment Share on other sites More sharing options...
Oleksa5 Posted June 2, 2013 Share Posted June 2, 2013 если чпу без id то немного по другому делается ЧПУ как раз без id. Подскажите решение) Link to comment Share on other sites More sharing options...
absent Posted June 2, 2013 Share Posted June 2, 2013 я заменял выво для чпу. тоесть чпу у меня было не имя а мета тайтл.правил контроллер и модуль. итого у меня русский произв. а чпу латинское)) либо делать отдельное поле чпу. Link to comment Share on other sites More sharing options...
Medness Posted June 5, 2013 Share Posted June 5, 2013 решается только в 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 сняв при этом галку с ВОМ Link to comment Share on other sites More sharing options...
absent Posted June 5, 2013 Share Posted June 5, 2013 для чпу без id нужна доработка данного способа Link to comment Share on other sites More sharing options...
absent Posted June 5, 2013 Share Posted June 5, 2013 либо link_rewrite производителя выводить в админке дополнительно и скриптом транслит делать.и делать поле в бд Link to comment Share on other sites More sharing options...
Gaydar Posted July 11, 2013 Share Posted July 11, 2013 я заменял выво для чпу. тоесть чпу у меня было не имя а мета тайтл.правил контроллер и модуль. итого у меня русский произв. а чпу латинское)) либо делать отдельное поле чпу. Уважаемый absent, напишите, пожалуйста как это сделать с именем файла и заменой/вставкой нового кода, так , как вы описали добавление транслита ЧПУ. Link to comment Share on other sites More sharing options...
Oleg2013 Posted July 22, 2013 Share Posted July 22, 2013 А кто знает как решить проблему с длиной строки в названии категорий и ЧПУ? Число символов, которое туда можно написать ограниченно 64 символами. Для моего сайта это очень мало, так как названия категорий длиннее. Уже лазил в базу MySQL, нашел там таблицу ps_shop_url, в ней строки physical_uri и virtual_uri, а в них полня Длина/значения поменял на 180, вместь 64. Но все это не помогает. Но парадокс вот в чем, сайт я мигрировал с Virtuemart, и при миграции все длинные названия категорий и ЧПУ были успешно добавлены и хорошо отображаются. Но когда я захожу в категорию и пытаюсь в ней что-то поменять (например добавить описание) и нажимаю сохранить категорию, то выдет вот такую ошибку: Поле имя (Russian) слишком длинное (максимум 64 символа, включая html символы). Поле ЧПУ (Russian) слишком длинное (максимум 64 символа, включая html символы). Сам уже не могу найти где и что нужно поменять, уже все перекопал. Остались надежды только на вас, Буду признателен за помощь. СПАСИБО! Link to comment Share on other sites More sharing options...
sors Posted July 23, 2013 Share Posted July 23, 2013 В classes\Category.php найдите строку 'link_rewrite' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 64), и замените 64 на число побольше. Либо при редактировании категории в поле ЧПУ сократите ссылку до 64 символов Link to comment Share on other sites More sharing options...
Oleg2013 Posted July 23, 2013 Share Posted July 23, 2013 ... Либо при редактировании категории в поле ЧПУ сократите ссылку до 64 символов Спасибо! Работает !!! Link to comment Share on other sites More sharing options...
zandes Posted July 31, 2013 Share Posted July 31, 2013 (edited) для чпу без id нужна доработка данного способа Подскажите, как реализовать? Ссылки стали нормально генерироваться, но при переходе по ним - Страница не найдена. Edited August 1, 2013 by zandes (see edit history) Link to comment Share on other sites More sharing options...
absent Posted August 2, 2013 Share Posted August 2, 2013 Опишите точнее проблему Link to comment Share on other sites More sharing options...
zandes Posted August 2, 2013 Share Posted August 2, 2013 Применил ваш способ: решается только в 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. Link to comment Share on other sites More sharing options...
absent Posted August 3, 2013 Share Posted August 3, 2013 как вариант я использовал поле meta title для чпу, тоесть название и чпу разные поля как в товаре) либо обратный транслит в контроллере 1 Link to comment Share on other sites More sharing options...
se007 Posted August 15, 2013 Share Posted August 15, 2013 Ребят помогите решить проблемку, Преста 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 (так и не ответили как локализатор поставить...а сам я только учусь...) Link to comment Share on other sites More sharing options...
websprint Posted November 9, 2013 Share Posted November 9, 2013 (edited) Метод от Absent на 100% работает! (presta 1.5.6) Чтоб ссылки не были битыми и не было 404 ошибки - надо после дописки в tools.php зайти в настройку модуля многоуровневой навигации и переиндексить всё и будет всем счастье! Ура, заработало!!! Edited November 9, 2013 by websprint (see edit history) Link to comment Share on other sites More sharing options...
Chisla Posted September 22, 2014 Share Posted September 22, 2014 (edited) Отличное решение. Presta 1.5.4.1 производители с ID отлично генерит ссылку. Спасибо absent. Edited September 22, 2014 by Alien461 (see edit history) Link to comment Share on other sites More sharing options...
mr_smiley Posted July 21, 2015 Share Posted July 21, 2015 как вариант я использовал поле meta title для чпу, тоесть название и чпу разные поля как в товаре) либо обратный транслит в контроллере А поточнее не подскажешь как сделать минимальными изминениями? У меня страницы не 404, у меня тупо обновляется страница и все. Английские названия ходит без проблем. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now