We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 54360
    • 6 Posts
    Добрый день.
    Созданы каталоги с пробелами в названиях каталога. Ссылки на эти каталоги работают, но необходимо удалить пробелы в каталогах и соответственно исправить все пути ссылок на эти каталоги. Каталогов 50+ и на каждый из них минимум 15 ссылок. Как можно массово исправить ссылки на эти каталоги?

    версия MODX Revolution 2.6.5-pl

    Благоадрю за помощь.
      • 54199
      • 108 Posts
      А каким образом вы вообще умудрились сохранить ресурсы с пробелами в алиасе?

      Для начала убедитесь в том что при сохранении ресурса алиас генерируется корректно, происходит замена пробелов на допустимые символы (по умолчению: -).


      Используйте дополнение CONSOLE, выполните простейший скрипт:

      $template = 1; // Заменить на id шаблона документов для пересохранения
      
      $resources = $modx->getCollection('modResource',array('template' => $template));
      foreach ($resources as $res) {
          $res->save();
      }
        • 54360
        • 6 Posts
        Пробел не в алиасе. Там корректно заменяется на тире.
        Ниже пример адреса, ссылка на папку с картинками. Папки во вкладке файлы сохранили с пробелами.
        assets/images/Elektromobili/Tundra JJ2255/dsc06125.jpg

        Пробелы удалили вручную. Ваш скрипт сохранил, может еще понадобится.

        Спасибо

        Quote from: argonaut2k at Oct 08, 2018, 12:49 PM
        А каким образом вы вообще умудрились сохранить ресурсы с пробелами в алиасе?

        Для начала убедитесь в том что при сохранении ресурса алиас генерируется корректно, происходит замена пробелов на допустимые символы (по умолчению: -).


        Используйте дополнение CONSOLE, выполните простейший скрипт:

        $template = 1; // Заменить на id шаблона документов для пересохранения
        
        $resources = $modx->getCollection('modResource',array('template' => $template));
        foreach ($resources as $res) {
            $res->save();
        }
          • 54199
          • 108 Posts
          Quote from: kyreelt at Oct 08, 2018, 03:43 PM
          Пробел не в алиасе. Там корректно заменяется на тире.
          Ниже пример адреса, ссылка на папку с картинками. Папки во вкладке файлы сохранили с пробелами.
          assets/images/Elektromobili/Tundra JJ2255/dsc06125.jpg

          Пробелы удалили вручную. Ваш скрипт сохранил, может еще понадобится.

          Спасибо

          Quote from: argonaut2k at Oct 08, 2018, 12:49 PM
          А каким образом вы вообще умудрились сохранить ресурсы с пробелами в алиасе?

          Для начала убедитесь в том что при сохранении ресурса алиас генерируется корректно, происходит замена пробелов на допустимые символы (по умолчению: -).


          Используйте дополнение CONSOLE, выполните простейший скрипт:

          $template = 1; // Заменить на id шаблона документов для пересохранения
          
          $resources = $modx->getCollection('modResource',array('template' => $template));
          foreach ($resources as $res) {
              $res->save();
          }

          Тогда это же не вопрос "ссылок" а имен директорий. Тут есть несколько решений, самое очевидное:

          1. Переименовать все категории (папки) вручную или с помощью функции rename() https://www.w3schools.com/php/func_filesystem_rename.asp.
          2. Изменить у ресурсов значение TV с ссылкой с учетом нового пути

          $template = 1; // Заменить на id шаблона документов для пересохранения
          $resources = $modx->getCollection('modResource', array(
          	'template' => $template
          ));
          
          foreach($resources as $res) {
          	$tv = $res->getTVValue('idTV'); // idTV - id TV параметра
          	$tv = str_replace(' ', '-', $tv);
          	$res->setTVValue('idTV', $tv);
          	$res->save();
          }
          


          Не тестировал, но суть думаю ясна.