транслитерация для поля alias при автоматическом создании документа

Всем добрый день,
погулил и потестил но в эво так и не нашел как сделать транслитерацию для поля alias при автоматическом создании документа сниппетом.
То есть модх умеет из названия докмента делать нормальный ЧПУ и мне тоже надо в сниппете вызвать этот метод или создать доп функцию и вызвать чтоб любой из вариантов для города Абакан например вернул близкое к Abakan.

Плюсовать буду нещадно за помощь!

8 комментариев

avatar
Как вы создаёте документ? Начнём с этого.
  • 1px
  • 0
avatar
Попробуйте это для своего скрипта
function transliterate( $s ) {
    $translation = array(
        " " => "_", ">" => "", "<" => "", "&" => "", "'" => "",
        "\"" => "", "А" => "A", "Б" => "B", "В" => "V", "Г" => "G",
        "Д" => "D", "Е" => "E", "Ё" => "E", "Ж" => "Zh", "З" => "Z",
        "И" => "I", "Й" => "I", "К" => "K", "Л" => "L", "М" => "M",
        "Н" => "N", "О" => "O", "П" => "P", "Р" => "R", "С" => "S",
        "Т" => "T", "У" => "U", "Ф" => "F", "Х" => "H", "Ц" => "C",
        "Ч" => "Ch", "Ш" => "Sh", "Щ" => "Sch", "Ъ" => "", "Ы" => "Y",
        "Ь" => "", "Э" => "E", "Ю" => "Yu", "Я" => "Ya", "а" => "a",
        "б" => "b", "в" => "v", "г" => "g", "д" => "d", "е" => "e",
        "ё" => "e", "ж" => "zh", "з" => "z", "и" => "i", "й" => "i",
        "к" => "k", "л" => "l", "м" => "m", "н" => "n", "о" => "o",
        "п" => "p", "р" => "r", "с" => "s", "т" => "t", "у" => "u",
        "ф" => "f", "х" => "h", "ц" => "c", "ч" => "ch", "ш" => "sh",
        "щ" => "sch", "ъ" => "", "ы" => "y", "ь" => "", "э" => "e",
        "ю" => "yu", "я" => "ya" );
    $s = strtr( $s, $translation );
    return $s;
}
  • om1
  • +1
avatar
ОК, то что надо.

echo transliterate('Абакан — Санкт Петербург');
Abakan_-_Sankt_Peterburg
avatar
проверьте что плагин трансалиас включен и в настройках тип генерации russian
avatar
зачем?
avatar
туплю… ну собственно если сниппетом, то дёргать как-то так

require_once $modx->config['base_path'].'assets/plugins/transalias/transalias.class.php';
$trans = new TransAlias($modx);
$output = $trans->stripAlias($alias,'russian','dash');
avatar
спасибо, я это пробовал но не работает, может от того что нет нужных соответствий: var $_tables = array ('named' => array (
'quot' => '"','amp' => '&','lt' => '<','gt' => '>','OElig' => 'Œ','oelig' => 'œ','Scaron' => 'Š','scaron' => 'š',
'Yuml' => 'Ÿ','circ' => 'ˆ','tilde' => '˜','ensp' => ' ','emsp' => ' ','thinsp' => ' ','zwnj' => '‌','zwj' => '‍',
'lrm' => '‎','rlm' => '‏','ndash' => '–','mdash' => '—','lsquo' => '‘','rsquo' => '’','sbquo' => '‚','ldquo' => '“',
'rdquo' => '”','bdquo' => '„','dagger' => '†','Dagger' => '‡','permil' => '‰','lsaquo' => '‹','rsaquo' => '›','euro' => '€',
'fnof' => 'ƒ','Alpha' => 'Α','Beta' => 'Β','Gamma' => 'Γ','Delta' => 'Δ','Epsilon' => 'Ε','Zeta' => 'Ζ','Eta' => 'Η',
'Theta' => 'Θ','Iota' => 'Ι','Kappa' => 'Κ','Lambda' => 'Λ','Mu' => 'Μ','Nu' => 'Ν','Xi' => 'Ξ','Omicron' => 'Ο',
'Pi' => 'Π','Rho' => 'Ρ','Sigma' => 'Σ','Tau' => 'Τ','Upsilon' => 'Υ','Phi' => 'Φ','Chi' => 'Χ','Psi' => 'Ψ',
'Omega' => 'Ω','alpha' => 'α','beta' => 'β','gamma' => 'γ','delta' => 'δ','epsilon' => 'ε','zeta' => 'ζ','eta' => 'η',
'theta' => 'θ','iota' => 'ι','kappa' => 'κ','lambda' => 'λ','mu' => 'μ','nu' => 'ν','xi' => 'ξ','omicron' => 'ο',
'pi' => 'π','rho' => 'ρ','sigmaf' => 'ς','sigma' => 'σ','tau' => 'τ','upsilon' => 'υ','phi' => 'φ','chi' => 'χ',
'psi' => 'ψ','omega' => 'ω','thetasym' => 'ϑ','upsih' => 'ϒ','piv' => 'ϖ','bull' => '•','hellip' => '…','prime' => '′',
'Prime' => '″','oline' => '‾','frasl' => '⁄','weierp' => '℘','image' => 'ℑ','real' => 'ℜ','trade' => '™','alefsym' => 'ℵ',
'larr' => '←','uarr' => '↑','rarr' => '→','darr' => '↓','harr' => '↔','crarr' => '↵','lArr' => '⇐','uArr' => '⇑',
'rArr' => '⇒','dArr' => '⇓','hArr' => '⇔','forall' => '∀','part' => '∂','exist' => '∃','empty' => '∅','nabla' => '∇',
'isin' => '∈','notin' => '∉','ni' => '∋','prod' => '∏','sum' => '∑','minus' => '−','lowast' => '∗','radic' => '√',
'prop' => '∝','infin' => '∞','ang' => '∠','and' => '∧','or' => '∨','cap' => '∩','cup' => '∪','int' => '∫',
'there4' => '∴','sim' => '∼','cong' => '≅','asymp' => '≈','ne' => '≠','equiv' => '≡','le' => '≤','ge' => '≥',
'sub' => '⊂','sup' => '⊃','nsub' => '⊄','sube' => '⊆','supe' => '⊇','oplus' => '⊕','otimes' => '⊗','perp' => '⊥',
'sdot' => '⋅','lceil' => '⌈','rceil' => '⌉','lfloor' => '⌊','rfloor' => '⌋','lang' => '〈','rang' => '〉','loz' => '◊',
'spades' => '♠','clubs' => '♣','hearts' => '♥','diams' => '♦','nbsp' => ' ','iexcl' => '¡','cent' => '¢','pound' => '£',
'curren' => '¤','yen' => '¥','brvbar' => '¦','sect' => '§','uml' => '¨','copy' => '©','ordf' => 'ª','laquo' => '«',
'not' => '¬','shy' => '­','reg' => '®','macr' => '¯','deg' => '°','plusmn' => '±','sup2' => '²','sup3' => '³',
'acute' => '´','micro' => 'µ','para' => '¶','middot' => '·','cedil' => '¸','sup1' => '¹','ordm' => 'º','raquo' => '»',
'frac14' => '¼','frac12' => '½','frac34' => '¾','iquest' => '¿','Agrave' => 'À','Aacute' => 'Á','Acirc' => 'Â','Atilde' => 'Ã',
'Auml' => 'Ä','Aring' => 'Å','AElig' => 'Æ','Ccedil' => 'Ç','Egrave' => 'È','Eacute' => 'É','Ecirc' => 'Ê','Euml' => 'Ë',
'Igrave' => 'Ì','Iacute' => 'Í','Icirc' => 'Î','Iuml' => 'Ï','ETH' => 'Ð','Ntilde' => 'Ñ','Ograve' => 'Ò','Oacute' => 'Ó',
'Ocirc' => 'Ô','Otilde' => 'Õ','Ouml' => 'Ö','times' => '×','Oslash' => 'Ø','Ugrave' => 'Ù','Uacute' => 'Ú','Ucirc' => 'Û',
'Uuml' => 'Ü','Yacute' => 'Ý','THORN' => 'Þ','szlig' => 'ß','agrave' => 'à','aacute' => 'á','acirc' => 'â','atilde' => 'ã',
'auml' => 'ä','aring' => 'å','aelig' => 'æ','ccedil' => 'ç','egrave' => 'è','eacute' => 'é','ecirc' => 'ê','euml' => 'ë',
'igrave' => 'ì','iacute' => 'í','icirc' => 'î','iuml' => 'ï','eth' => 'ð','ntilde' => 'ñ','ograve' => 'ò','oacute' => 'ó',
'ocirc' => 'ô','otilde' => 'õ','ouml' => 'ö','divide' => '÷','oslash' => 'ø','ugrave' => 'ù','uacute' => 'ú','ucirc' => 'û',
'uuml' => 'ü','yacute' => 'ý','thorn' => 'þ','yuml' => 'ÿ'
));
avatar
Я всё понимаю, хочется своими руками и т.д., но есть же АПИ, где всё делается в четыре строчки.

include_once(MODX_BASE_PATH."assets/lib/MODxAPI/modResource.php");
$doc = new modResource($modx);
$doc->create(array(
    'pagetitle' => 'example',
    'template' => 10,
    'parent' => 1
));
$id = $doc->save(true, false);
  • 1px
  • +3
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.