Сделать сортировку правил в urlrewrite.php

Рейтинг: 3.4774  
На голосовании
Предложил Пользователь 11898 06.09.2012 11:29:32

Сделать сортировку правил в urlrewrite.php

Любое редактирование файлов через панель редактирования Битрикс в публичной части приводит к изменению расположения строк в файле urlrewrite.php при этом совершенно не обязательно менялось его содержимое. При работе с системой контроля версий приходится его постоянно перепроверять коммитить  (или откатывать) для переноса на продуктовый сервер. Если бы строки были отсортированы по какому-либо правилу, то лишнюю работу не пришлось бы делать в случае отсутствия изменений.
Рейтинг: -4.5015  
Ответил Жуков Евгений 06.09.2012 12:21:53
Строки в этом файле сортируются по правилу. Вводить ручную сортировку не планируется.

Рейтинг: -0.0805  
Пользователь 11898 14.09.2012 15:35:59
Правило видимо построено на генераторе случайных чисел.

Наверное целесообразней все новый правила всегда добавлять в конец файла!
Рейтинг: 0  
Пользователь 71426 16.10.2014 12:30:05
/bitrix/modules/main/classes/general/urlrewriter.php
... 
   function __RecordsCompare($a, $b)
   {
      $len_a = strlen($a["CONDITION"]);
      $len_b = strlen($b["CONDITION"]);
      if ($len_a < $len_b)
         return 1;
      elseif ($len_a > $len_b)
         return -1;
      else
         return 0;
   }
...
/bitrix/modules/main/lib/urlrewriter.php
... 
private static function recordsCompare($a, $b)
   {
      $sortA = isset($a["SORT"]) ? intval($a["SORT"]) : self::DEFAULT_SORT;
      $sortB = isset($b["SORT"]) ? intval($b["SORT"]) : self::DEFAULT_SORT;

      if ($sortA > $sortB)
         return 1;
      elseif ($sortA < $sortB)
         return -1;

      /*
      $isIdA = isset($a["ID"]) && ($a["ID"] != "");
      $isIdB = isset($b["ID"]) && ($b["ID"] != "");

      if ($isIdA && !$isIdB)
         return 1;
      if (!$isIdA && $isIdB)
         return -1;
      */

      $lenA = strlen($a["CONDITION"]);
      $lenB = strlen($b["CONDITION"]);
      if ($lenA < $lenB)
         return 1;
      elseif ($lenA > $lenB)
         return -1;
      else
         return 0;
   }   
...
это кажется есть, но используется старый класс :(
Рейтинг: 0  
Пользователь 46741 18.05.2016 12:05:12
Не заметили активности от Битрикса по этой идее и сделали решение сами http://marketplace.1c-bitrix.ru/solutions/cosmos.urlrewrite/ Нам будет приятно, если оно принесет пользу Битриксоидам.