We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
  • Практично е този процес да е автоматичен т.е. alias да се генерира на базата на заглавието на документа - разбира се не само от прегледност, а и от гледна точка на SEO.

    За целта имаме този плъгин:
    // Get the relevant dates
    $published = $_POST['pub_date'];
    $created = $_POST['createdon'];
    $edited = time();
    
    
    // Set which date value to use
    if ($published != '') {
       $date = $published;
    } elseif ($created != '') {
       $date = $created;
    } else {
       $date = $edited;
    }
    
    // Set the date formatting
    $dateFormatString = '%Y-%m-%d';
    $date = strftime($dateFormatString, $date);
    
    // Get the ID of the document, if you want to use it in your alias
    $id = $modx->event->params['id'];
    
    // *****************************************************************
    // EDIT HERE:
    // *****************************************************************
    $alias_new = $_POST['pagetitle'];
     if ($_POST['alias'] == ''){$alias_new = $_POST['pagetitle'];}  else{$alias_new=$_POST['alias'] ;}
    //$alias_new = $date . '.' . $id;
    
    
    
    // *****************************************************************
    // YOU CAN STOP EDITING HERE.
    // *****************************************************************
    
    
    // The cleansing and setting of the alias.
    $e = &$modx->Event;
    
    
    // Only on this event
    if ($e->name == 'OnDocFormSave')
    {
    
      // Check if the alias is empty
     
       // Convert accented characters to their non-accented counterparts.
       $replace_array = array(
          // Punctuation and special characters
          ' ' => '-',
          ',' => '-',
          '?' => '-',
          '"' => '-',
          '\'' => '-',
          ',' => '-',
          ':' => '-',
          '/' => '-',
          '\\' => '-',
          //'.' => '-',
          '!' => '-',
          '@' => '-',
          '#' => '-',
          '$' => '-',
          '%' => '-',
          '^' => '-',
          '&' => 'and',
          '*' => '-',
          '(' => '-',
          ')' => '-',
          '[' => '-',
          ']' => '-',
          '=' => '-',
          '”' => '-',
          '„' => '-',
    
    		// Letters
    		'À' => 'A',
    		'À' => 'A',
    		'Á' => 'A',
    		'Á' => 'A',
    		'Â' => 'A',
    		'Â' => 'A',
    		'Ã' => 'A',
    		'Ã' => 'A',
    		'Ä' => 'e',
    		'Ä' => 'A',
    		'Å' => 'A',
    		'Å' => 'A',
    		'Æ' => 'e',
    		'Æ' => 'E',
    		'Ā' => 'A',
    		'Ą' => 'A',
    		'Ă' => 'A',
    		'Ç' => 'C',
    		'Ç' => 'C',
    		'Ć' => 'C',
    		'Č' => 'C',
    		'Ĉ' => 'C',
    		'Ċ' => 'C',
    		'Ď' => 'D',
    		'Đ' => 'D',
    		'È' => 'E',
    		'È' => 'E',
    		'É' => 'E',
    		'É' => 'E',
    		'Ê' => 'E',
    		'Ê' => 'E',
    		'Ë' => 'E',
    		'Ë' => 'E',
    		'Ē' => 'E',
    		'Ę' => 'E',
    		'Ě' => 'E',
    		'Ĕ' => 'E',
    		'Ė' => 'E',
    		'Ĝ' => 'G',
    		'Ğ' => 'G',
    		'Ġ' => 'G',
    		'Ģ' => 'G',
    		'Ĥ' => 'H',
    		'Ħ' => 'H',
    		'Ì' => 'I',
    		'Ì' => 'I',
    		'Í' => 'I',
    		'Í' => 'I',
    		'Î' => 'I',
    		'Î' => 'I',
    		'Ï' => 'I',
    		'Ï' => 'I',
    		'Ī' => 'I',
    		'Ĩ' => 'I',
    		'Ĭ' => 'I',
    		'Į' => 'I',
    		'İ' => 'I',
    		'IJ' => 'J',
    		'Ĵ' => 'J',
    		'Ķ' => 'K',
    		'Ľ' => 'K',
    		'Ĺ' => 'K',
    		'Ļ' => 'K',
    		'Ŀ' => 'K',
    		'Ñ' => 'N',
    		'Ñ' => 'N',
    		'Ń' => 'N',
    		'Ň' => 'N',
    		'Ņ' => 'N',
    		'Ŋ' => 'N',
    		'Ò' => 'O',
    		'Ò' => 'O',
    		'Ó' => 'O',
    		'Ó' => 'O',
    		'Ô' => 'O',
    		'Ô' => 'O',
    		'Õ' => 'O',
    		'Õ' => 'O',
    		'Ö' => 'e',
    		'Ö' => 'e',
    		'Ø' => 'O',
    		'Ø' => 'O',
    		'Ō' => 'O',
    		'Ő' => 'O',
    		'Ŏ' => 'O',
    		'Œ' => 'E',
    		'Ŕ' => 'R',
    		'Ř' => 'R',
    		'Ŗ' => 'R',
    		'Ś' => 'S',
    		'Ş' => 'S',
    		'Ŝ' => 'S',
    		'Ș' => 'S',
    		'Ť' => 'T',
    		'Ţ' => 'T',
    		'Ŧ' => 'T',
    		'Ț' => 'T',
    		'Ù' => 'U',
    		'Ù' => 'U',
    		'Ú' => 'U',
    		'Ú' => 'U',
    		'Û' => 'U',
    		'Û' => 'U',
    		'Ü' => 'e',
    		'Ū' => 'U',
    		'Ü' => 'e',
    		'Ů' => 'U',
    		'Ű' => 'U',
    		'Ŭ' => 'U',
    		'Ũ' => 'U',
    		'Ų' => 'U',
    		'Ŵ' => 'W',
    		'Ŷ' => 'Y',
    		'Ÿ' => 'Y',
    		'Ź' => 'Z',
    		'Ż' => 'Z',
    		'à' => 'a',
    		'á' => 'a',
    		'â' => 'a',
    		'ã' => 'a',
    		'ä' => 'e',
    		'ä' => 'e',
    		'å' => 'a',
    		'ā' => 'a',
    		'ą' => 'a',
    		'ă' => 'a',
    		'å' => 'a',
    		'æ' => 'e',
    		'ç' => 'c',
    		'ć' => 'c',
    		'č' => 'c',
    		'ĉ' => 'c',
    		'ċ' => 'c',
    		'ď' => 'd',
    		'đ' => 'd',
    		'è' => 'e',
    		'é' => 'e',
    		'ê' => 'e',
    		'ë' => 'e',
    		'ē' => 'e',
    		'ę' => 'e',
    		'ě' => 'e',
    		'ĕ' => 'e',
    		'ė' => 'e',
    		'ƒ' => 'f',
    		'ĝ' => 'g',
    		'ğ' => 'g',
    		'ġ' => 'g',
    		'ģ' => 'g',
    		'ĥ' => 'h',
    		'ħ' => 'h',
    		'ì' => 'i',
    		'í' => 'i',
    		'î' => 'i',
    		'ï' => 'i',
    		'ī' => 'i',
    		'ĩ' => 'i',
    		'ĭ' => 'i',
    		'į' => 'i',
    		'ı' => 'i',
    		'ij' => 'j',
    		'ĵ' => 'j',
    		'ķ' => 'k',
    		'ĸ' => 'k',
    		'ł' => 'l',
    		'ľ' => 'l',
    		'ĺ' => 'l',
    		'ļ' => 'l',
    		'ŀ' => 'l',
    		'ñ' => 'n',
    		'ń' => 'n',
    		'ň' => 'n',
    		'ņ' => 'n',
    		'ʼn' => 'n',
    		'ŋ' => 'n',
    		'ò' => 'o',
    		'ó' => 'o',
    		'ô' => 'o',
    		'õ' => 'o',
    		'ö' => 'e',
    		'ö' => 'e',
    		'ø' => 'o',
    		'ō' => 'o',
    		'ő' => 'o',
    		'ŏ' => 'o',
    		'œ' => 'e',
    		'ŕ' => 'r',
    		'ř' => 'r',
    		'ŗ' => 'r',
    		'ù' => 'u',
    		'ú' => 'u',
    		'û' => 'u',
    		'ü' => 'e',
    		'ū' => 'u',
    		'ü' => 'e',
    		'ů' => 'u',
    		'ű' => 'u',
    		'ŭ' => 'u',
    		'ũ' => 'u',
    		'ų' => 'u',
    		'ŵ' => 'w',
    		'ÿ' => 'y',
    		'ŷ' => 'y',
    		'ż' => 'z',
    		'ź' => 'z',
    		'ß' => 's',
    		'ſ' => 's',
    		'Α' => 'A',
    		'Ά' => 'A',
    		'Β' => 'B',
    		'Γ' => 'G',
    		'Δ' => 'D',
    		'Ε' => 'E',
    		'Έ' => 'E',
    		'Ζ' => 'Z',
    		'Η' => 'I',
    		'Ή' => 'I',
    		'Θ' => 'TH',
    		'Ι' => 'I',
    		'Ί' => 'I',
    		'Ϊ' => 'I',
    		'Κ' => 'K',
    		'Λ' => 'L',
    		'Μ' => 'M',
    		'Ν' => 'N',
    		'Ξ' => 'KS',
    		'Ο' => 'O',
    		'Ό' => 'O',
    		'Π' => 'P',
    		'Ρ' => 'R',
    		'Σ' => 'S',
    		'Τ' => 'T',
    		'Υ' => 'Y',
    		'Ύ' => 'Y',
    		'Ϋ' => 'Y',
    		'Φ' => 'F',
    		'Χ' => 'X',
    		'Ψ' => 'PS',
    		'Ω' => 'O',
    		'Ώ' => 'O',
    		'α' => 'a',
    		'ά' => 'a',
    		'β' => 'b',
    		'γ' => 'g',
    		'δ' => 'd',
    		'ε' => 'e',
    		'έ' => 'e',
    		'ζ' => 'z',
    		'η' => 'i',
    		'ή' => 'i',
    		'θ' => 'th',
    		'ι' => 'i',
    		'ί' => 'i',
    		'ϊ' => 'i',
    		'ΐ' => 'i',
    		'κ' => 'k',
    		'λ' => 'l',
    		'μ' => 'm',
    		'ν' => 'n',
    		'ξ' => 'ks',
    		'ο' => 'o',
    		'ό' => 'o',
    		'π' => 'p',
    		'ρ' => 'r',
    		'σ' => 's',
    		'τ' => 't',
    		'υ' => 'y',
    		'ύ' => 'y',
    		'ϋ' => 'y',
    		'ΰ' => 'y',
    		'φ' => 'f',
    		'χ' => 'x',
    		'ψ' => 'ps',
    		'ω' => 'o',
    		'ώ' => 'o',
    		'а' => 'a',
    		'б' => 'b',
    		'в' => 'v',
    		'г' => 'g',
    		'д' => 'd',
    		'е' => 'e',
    		'ж' => 'zh',
    		'з' => 'z',
    		'и' => 'i',
    		'й' => 'y',
    		'к' => 'k',
    		'л' => 'l',
    		'м' => 'm',
    		'н' => 'n',
    		'о' => 'o',
    		'п' => 'p',
    		'р' => 'r',
    		'с' => 's',
    		'т' => 't',
    		'у' => 'u',
    		'ф' => 'f',
    		'х' => 'h',
    		'ц' => 'ts',
    		'ч' => 'ch',
    		'ш' => 'sh',
    		'щ' => 'sht',
    		'ъ' => 'a',
    		'ь' => 'y',
    		'ю' => 'yu',
    		'я' => 'ya',
    		'А' => 'A',
    		'Б' => 'B',
    		'В' => 'V',
    		'Г' => 'G',
    		'Д' => 'D',
    		'Е' => 'E',
    		'Ж' => 'Zh',
    		'З' => 'Z',
    		'И' => 'I',
    		'Й' => 'Y',
    		'К' => 'K',
    		'Л' => 'L',
    		'М' => 'M',
    		'Н' => 'N',
    		'О' => 'O',
    		'П' => 'P',
    		'Р' => 'R',
    		'С' => 'S',
    		'Т' => 'T',
    		'У' => 'U',
    		'Ф' => 'F',
    		'Х' => 'H',
    		'Ц' => 'Ts',
    		'Ч' => 'Ch',
    		'Ш' => 'Sh',
    		'Щ' => 'Sht',
    		'Ъ' => 'A',
    		'Ь' => 'Y',
    		'Ю' => 'Yu',
    		'Я' => 'Ya'
    	);
    
    	 $alias_new = strtr($alias_new, $replace_array);
       $alias_new = strtr($alias_new,
            "¿?/ ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ",
            "----SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
       $alias_new = str_replace('--',"-",$alias_new);
       $alias_new = str_replace('--',"-",$alias_new);
       $alias_new = str_replace('--',"-",$alias_new);
       $alias_new = strtolower($alias_new);
         
       $fields = array('alias' => $alias_new);
       $table = $modx->getFullTableName('site_content');
     
       // Update the database
       $rows_affected = $modx->db->update(
         $fields,
         $table,
         "id = {$e->params['id']}"
       );
       //flush_cache();
    
       // Generate an error if the DB was not updated
       if(!$rows_affected)
       {
         $modx->event->alert("CustomAlias: An error occurred when saving the alias.");
       }
    
    }
    
    $e->output('hello'.$parentID);
    


    обръщам внимание на модифицираната част:
    'а' => 'a',
    		'б' => 'b',
    		'в' => 'v',
    		'г' => 'g',
    		'д' => 'd',
    		'е' => 'e',
    		'ж' => 'zh',
    		'з' => 'z',
    		'и' => 'i',
    		'й' => 'y',
    		'к' => 'k',
    		'л' => 'l',
    		'м' => 'm',
    		'н' => 'n',
    		'о' => 'o',
    		'п' => 'p',
    		'р' => 'r',
    		'с' => 's',
    		'т' => 't',
    		'у' => 'u',
    		'ф' => 'f',
    		'х' => 'h',
    		'ц' => 'ts',
    		'ч' => 'ch',
    		'ш' => 'sh',
    		'щ' => 'sht',
    		'ъ' => 'a',
    		'ь' => 'y',
    		'ю' => 'yu',
    		'я' => 'ya',
    		'А' => 'A',
    		'Б' => 'B',
    		'В' => 'V',
    		'Г' => 'G',
    		'Д' => 'D',
    		'Е' => 'E',
    		'Ж' => 'Zh',
    		'З' => 'Z',
    		'И' => 'I',
    		'Й' => 'Y',
    		'К' => 'K',
    		'Л' => 'L',
    		'М' => 'M',
    		'Н' => 'N',
    		'О' => 'O',
    		'П' => 'P',
    		'Р' => 'R',
    		'С' => 'S',
    		'Т' => 'T',
    		'У' => 'U',
    		'Ф' => 'F',
    		'Х' => 'H',
    		'Ц' => 'Ts',
    		'Ч' => 'Ch',
    		'Ш' => 'Sh',
    		'Щ' => 'Sht',
    		'Ъ' => 'A',
    		'Ь' => 'Y',
    		'Ю' => 'Yu',
    		'Я' => 'Ya'
    

    това е според съвременната транслитерация, ако желаете можете да направите промяна, както и да добавите нови такива.

    За да работи коректно плъгина е необходимо да:
    1. създадете нов плъгин с име CustomAlias
    2. поставите кода по-горе
    3. от System Events изберете OnDocFormSave

    Кода би могъл да се модифицира така, че да добавя освен заглавието в alias + createdon (датата на създаване на документа)
    (наблюдавам в някои новинарски сайтове тази тенденция - вероятно от гледна точка на архив)
      palma non sine pulvere