Продолжая статьи по совершенствованию движка магазина Симпла делаем транслитерацию ЧПУ, т.к. разработчик к сожалению не увидел в этом необходимости (судя по ответу в Реформале на запрос). А сделать данную полезную вещь достаточно просто. Читаем далее…Итак, править нам надо будет шаблоны панели администратора. Для этого надо зайти в папку [ваш_сайт]/admin/templates. Необходимо будет править файлы

  • product.tpl
  • article.tpl
  • brand.tpl
  • category.tpl
  • news_item.tpl
  • section.tpl

Находим в каждом из этих файлов JavaScript-функцию generate_url() и заменяем ее содержимое на следующее (на примере шаблона для products.tpl)

// generating meta_title
function generate_url(category, brand, name)
{
    var ru_str = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    var 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'];
 
    url = name;
    if(brand != '') url = brand+' '+url;
    if(category != '') url = category+' '+url;
 
    url = url.replace(/[\s]+/gi, '_');
    url = url.replace(/[^0-9a-zа-я_]+/gi, '');
 
    var tmp_str = "";
    for(var i = 0, l = url.length; i < l; i++) {
        var s = url.charAt(i), n = ru_str.indexOf(s);
        if(n >= 0) { tmp_str += en_str[n]; }
        else { tmp_str += s; }
     }
    return tmp_str;
}

Это самая «сложная» из функций. Сложность заключается в передаваемых в функцию параметрах. В функцию в products.tpl передается наибольшее количество параметров. Та же функция для section.tpl будет выглядеть следующим образом

// generating meta_title
function generate_url(url)
{
    var ru_str = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    var 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'];
 
    url = url.replace(/[\s]+/gi, '_');
    url = url.replace(/[^0-9a-zа-я_]+/gi, '');
 
    var tmp_str = "";
    for(var i = 0, l = url.length; i < l; i++) {
        var s = url.charAt(i), n = ru_str.indexOf(s);
        if(n >= 0) { tmp_str += en_str[n]; }
        else { tmp_str += s; }
     }
    return tmp_str;
}

Т.е. в данном шаблоне передается только заголовок, так что формировать строку (как это делается в шаблоне продукта из категории, бренда и товара не надо делать).

В остальных шаблонах по аналогии вышеприведенного кода заменяем функции формирования транслитерированного адреса.

Всем Удачи!

Опубликовать в Яндекс
Опубликовать в Facebook
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в LiveJournal
Опубликовать в Google Plus
Опубликовать в Google Buzz