Вывести SVG-картинку как код <svg>...</svg>

Добрый день!
Кто знает, каким образом можно вывести MIGX поле с типом image как текст?
Необходимо SVG картинки выводить на сайте не через тэг img, а как код ...…
Victor
31 мая 2018, 08:21
modx.pro
1 287
0

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

Aleksandr Huz
31 мая 2018, 17:11
+2
Вам нужно написать модификатор, например вот:
$fenom->addModifier('svg', function ($input) use ($modx) {
    if( file_exists($input) ) {
        $info = new SplFileInfo($input);
        if( $info->getExtension() == 'svg' ) {
            $input = file_get_contents('./'.$input, FILE_USE_INCLUDE_PATH);
        }
    }
    return $input;
});
    Victor
    31 мая 2018, 20:59
    +1
    Спасибо, сделал с помощью Js

    //SVG img как текст
      $(function(){
          jQuery('img.svg').each(function(){
              var $img = jQuery(this);
              var imgID = $img.attr('id');
              var imgClass = $img.attr('class');
              var imgURL = $img.attr('src');
          
              jQuery.get(imgURL, function(data) {
                  //Ищем img с классом svg
                  var $svg = jQuery(data).find('svg');
          
                  // Вытаскиваем ID, если есть
                  if(typeof imgID !== 'undefined') {
                      $svg = $svg.attr('id', imgID);
                  }
                  // Добавляем класс line-icon новому SVG
                  if(typeof imgClass !== 'undefined') {
                      $svg = $svg.attr('class', imgClass+' line-icon');
                  }
          
                  // http://validator.w3.org
                  $svg = $svg.removeAttr('xmlns:a');
                  
                  // Смотрим viewport, если нету, пробуем поставить.
                  if(!$svg.attr('viewBox') && $svg.attr('height') && $svg.attr('width')) {
                      $svg.attr('viewBox', '0 0 ' + $svg.attr('height') + ' ' + $svg.attr('width'))
                  }
          
                  // Удаляем img SVG картинку
                  $img.replaceWith($svg);
          
              }, 'xml');
          
          });
      });
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2