Вывести SVG-картинку как код <svg>...</svg>
Добрый день!
Кто знает, каким образом можно вывести MIGX поле с типом image как текст?
Необходимо SVG картинки выводить на сайте не через тэг img, а как код ...…
Кто знает, каким образом можно вывести MIGX поле с типом image как текст?
Необходимо SVG картинки выводить на сайте не через тэг img, а как код ...…
Комментарии: 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;
});
Спасибо, сделал с помощью 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');
});
});
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.