28
Авг

Apostrophe CMS – изменение стандартной слугофикации (slugify)

Posted by Jeka under Новости

В Apostrophe CMS при сохранении страницы или других элементов автоматически преобразует их названия к виду пригодному для отображения в url, но к сожалению для кириллических строк оно работает не так как хочется. Мне например, необходимо чтобы кириллические символы транслировались в аналоги латинского алфавита.

К счастью такое поведение CMS легко исправить без ковыряния в исходниках Apostrophe, для этого надо:

  • Скопировать файл "/plugins/apostrophePlugin/lib/aTools.class.php" куда-нибудь в каталог "/lib" например "/lib/aTools.class.php". В этом случае будет использовать наш класс, а не класс из построфа.
  • Переопределить статический метод slugify()

Пример:

<?php
// /lib/aTools.class.php
class aTools extends BaseaTools
{
  public static function slugify($path, $allowSlashes = false)
  {
    $path = hsTextUtils::translit($path);
    return parent::slugify($path, $allowSlashes);
  }
}

В данном примере hsTextUtils::translit() – это мой метод с помощью которого я делаю трансляцию кириллических символов в латинские, вам следует здесь использовать свой.

Reader's Comments

  1. Tom Boutell |

    It’s good that this solution is working for you. However our usual code attempts to use UTF8 characters directly in URLs. It works, at least for French and Greek. I am not sure why you are having difficulty with it in Russian.

  2. Jeka |

    Hello Tom!
    Russian symbols from url will be transformed to %XX sequences, for example: «абц» to «%D0%B0%D0%B1%D1%86″ ,
    but I would like that there was a string – «abc».

Оставьте комментарий