Как обновить все url

Раньше на сайте не использовалось чпу. После включения, все url отображаются на русском. Также в типах содержимого удалил .html, но url все равно такие /reebok-дерзкий-бренд.html
Если ресурс обновить, то все нормально становится.

Ресурсов на сайте несколько тысяч, в ручную не вариант.
Пробовал так community.modx-cms.ru/blog/tips_and_tricks/10322.html — ничего не вышло.

Собственно, как обновить все url? Может сниппет есть какой?
Rootiys
28 декабря 2014, 07:19
modx.pro
4
1 852
0

Комментарии: 8

Володя
28 декабря 2014, 10:38
0
недавно пришлось обновлять url, ресурсов было что то около 6тыщ. Я сделал просто — скачал customUrls.
и запустил из под консоли $customUrls->generateCustomUrl();
возможно можно как то иначе обновить, но этот способ точно рабочий.
    Rootiys
    28 декабря 2014, 10:54
    0
    Можно подробнее?
      Володя
      28 декабря 2014, 10:59
      0
      <?php
       
      define('MODX_API_MODE', true);
      require dirname(dirname(__FILE__)) . '/index.php';
      $modx->getService('error','error.modError');
      $modx->setLogLevel(modX::LOG_LEVEL_INFO);
      $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
       
      // Load CustomUrls service
      $corePath =  $modx->getOption('customurls.core_path',null,$modx->getOption('core_path').'components/customurls/');
      $customUrls = $modx->getService('customurls','CustomUrls',$corePath.'model/customurls/');
      if (!($customUrls instanceof CustomUrls)) return '';
       
      // parent
      $parent = 0;
      $pids = array_merge(array($parent), $modx->getChildIds($parent));
      $ids = array();
       
      $q = $modx->newQuery('msProduct');
      $q->where(array('class_key' => 'msProduct','parent:IN' => $pids,'published' => 1,'deleted' => 0));
      $q->select('`msProduct`.`id`');
      if ($q->prepare() && $q->stmt->execute()) {
      	$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
      }
      
      $resourceIds = $ids;
       
      foreach($resourceIds as $resourceId)
      {
          // Select resource
          $resource = $modx->getObject('modResource', array('id' => $resourceId));
       
          if(is_object($resource))
          {
               // Select the proper URL pattern of the current resource
              $customUrl = $customUrls->getCustomUrl($resource);
              // Generate resource URL
              if(!empty($customUrl))
              {
                  //print_r(' генерируем - ' . $resourceId);
                  $customUrl->set('override', true);
                  $customUrls->generateCustomUrl($resource, $customUrl);
              }
          }
          
      }
       
      return $modx->error->success();
        Rootiys
        28 декабря 2014, 11:07
        0
        Запускаю этот код в console, но ничего не происходит.
          Володя
          28 декабря 2014, 11:12
          0
          а… пардон забыл еще. там проверка есть…
            Володя
            28 декабря 2014, 11:14
            0
            в
            core/components/customurls/model/customurls/customurls.class.php
            60 строка
            $c->innerJoin('modUserGroupMember', 'modUserGroupMember', '`member` = '.$this->modx->user->get('id').' AND (usergroup = 0 OR usergroup IS NULL OR usergroup = user_group)');
            замени на
            $c->innerJoin('modUserGroupMember', 'modUserGroupMember', '`member` = 1 AND (usergroup = 0 OR usergroup IS NULL OR usergroup = user_group)');
              Rootiys
              28 декабря 2014, 11:36
              0
              Заменил строки. Но опять ничего не происходит в консоли(
                Володя
                28 декабря 2014, 14:50
                +1
                ну значит не судьба
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    8