Аддон XF 2.x.x SVG Template by Xon [2.4.9]

Иконка ресурса
Краткое описание:
Позволяет сохранять изображения SVG в виде шаблона
7
878
  • Лайк 0
Реакции:4 пользователей

Последние обновления

2.4.9

Исправление Валидация шаблона SVG была нарушена, что могло привести к тому, что добавление языка...
Смотреть еще...
Для версий
  1. 2.1
  2. 2.2

Описание SVG Template by Xon:​

В зависимости от настроек, аддон может требовать от web-сервера поддержки правил rewrite

Позволяет сохранять изображения SVG (масштабируемая векторная графика) в качестве шаблонов. Это создает новый файл svg.php в корневом каталоге XF.

Чтобы сгенерировать ссылку на шаблон SVG (в конце имени шаблона должен быть .svg!);

{{ getSvgUrl('tempate.svg') }}
В разделе «Информация о форуме», если установлен параметр «Использовать дружественные URL-адреса» (useFriendlyUrls), создается следующий URL:

/data/svg/<style_id>/<langauge_id>/<style_last_modified>/<templateName.svg>

иначе

svg.php?svg=<templateName>&s=<style_id>&l=<langauge_id>&d=<style_last_modified>

Рендеринг в PNG​


Для рендеринга SVG в PNG требуется внешняя поддержка, и в зависимости от ОС это может привести к странным ограничениям или плохому рендерингу.

Поддержка php-imagick​


Не рекомендуется использовать Imagick, если это может помочь!

Ubuntu (using https://launchpad.net/~ondrej/+archive/ubuntu/php PPA);
Код:
sudo apt install php7.4-imagick libmagickcore-6.q16-3-extra
sudo systemctl restart php7.4-fpm
Примечание; некоторые дистрибутивы требуют установки libmagickcore-6.q16-3-extra для включения поддержки SVG.

Более старые версии Imagick имеют плохую поддержку SVG, помимо плохой репутации Imagick в области безопасности.

Поддержка CLI​


Это общий аварийный выход для подключения произвольного преобразования в png с использованием proc_open в php.

Настройте рендеринг с помощью опции proc_open с;
<CLI-binary> {destFile} {sourceFile}

{sourceFile} - это исходный SVG, записанный как временный файл. {destFile} - это целевой PNG-файл как временный файл.

В качестве альтернативы ввод / вывод может осуществляться через pipes.

Примечание; имена шаблонов представляют собой только буквенно-цифровые строки, которые принудительно проверяются перед вызовом параметра CLI.

Поддержка resvg CLI

Пример использования resvg, настройте команду CLI с помощью;

/usr/local/bin/resvg --quiet {sourceFile} {destFile}

Предварительно скомпилированный двоичный файл​


Предварительно скомпилированный двоичный файл linux x86_64 доступен здесь. Скомпилирован на CentOS 7, работает на Ubuntu 18.04 / 20.04

Компиляция​

Компиляция может привязываться к более новым версиям glibc, что может вызвать проблемы с зависимостью.
Код:
curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
cargo install resvg
cp ~/.cargo/bin/resvg /usr/local/bin/resvg
chmod +x /usr/local/bin/resvg

Поддержка Inkscape CLI​

Примечание; используйте snap, иначе у вас может быть слишком старый экземпляр!

sudo snap install inkscape

Настройте команду CLI PIPE с помощью;

inkscape --export-type=png -p

Особенности​

Условный рендеринг SVG в PNG (для CSS/LESS)​

Пример условного CSS для использования png поверх svg для мобильных клиентов​

Less:
.mod_interrupt--svg.mod_interrupt
{
    &--stop
    {
        &:before
        {
          content: url({{ getSvgUrl('sv_bbcode_modinterrupt_stop.svg') }}) !important;
        }
        <xf:if is="$xf.svg.as.png">
        .is-tablet &:before,
        .is-mobile &:before
        {
          content: url({{ getSvgUrlAs('sv_bbcode_modinterrupt_stop.svg', 'png') }}) !important;
        }
        </xf:if>
    }
}

Явное использование в шаблонах;​

XML:
<xf:if is="$xf.svg.enabled">
    <xf:if is="$xf.svg.as.png and $xf.mobileDetect and $xf.mobileDetect.isMobile()">
        <img src="{{ getSvgUrlAs('example.svg', 'png') }}"/>
    <xf:else />
        <img src="{{ getSvgUrlAs('example.svg', 'svg') }}"/>
    </xf:if>
<xf:else />
    <i class="fa fa-stop" />
</xf:if>

Интеграция маршрутизации XenForo 2​


Хотя правила rewrite рекомендуются, это дополнение поддерживает расширение системы маршрутизации XenForo для обеспечения поддержки нулевой конфигурации для шаблонов SVG.

Конфигурация rewrite URL Nginx​

Код:
location ^~ /data/svg/ {
   access_log off;
   rewrite ^/data/svg/([^/]+)/([^/]+)/([^/]+)/([^\.]+\..*)$ /svg.php?svg=$4&s=$1&l=$2&d=$3$args last;
   return 403;
}

Конфигурация rewrite URL-адресов Apache​


Добавьте правило перед финалом index.php;

RewriteRule ^data/svg/([^/]+)/([^/]+)/([^/]+)/([^\.]+\..*)$ svg.php?svg=$4&s=$1&l=$2&d=$3 [B,NC,L,QSA]

т.е. должно выглядеть примерно так:
Код:
#    If you are having problems with the rewrite rules, remove the "#" from the
    #    line that begins "RewriteBase" below. You will also have to change the path
    #    of the rewrite to reflect the path to your XenForo installation.
    #RewriteBase /xenforo


    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
    RewriteRule ^data/svg/([^/]+)/([^/]+)/([^/]+)/([^\.]+\..*)$ svg.php?svg=$4&s=$1&l=$2&d=$3 [B,NC,L,QSA]
    RewriteRule ^.*$ index.php [NC,L]

Для работы требуется дополнение Browser Detection

Автор

Black_Dragon

Еще ресурсы от Black_Dragon

[MMO] External Accounts
[MMO] External Accounts
Возможность зарегистрироваться и войти на форум через популярные социальные сети.
Report Improvements by Xon
Report Improvements by Xon
Расширенный функционал системы жалоб и модерирования для Xenforo 2.x.x
Share via QR Code
Share via QR Code
Показывает QR-кнопку в качестве опции обмена информацией.
JetsAntiAFKPro
JetsAntiAFKPro
Продвинутый плагин для обнаружения AFK с настраиваемыми действиями!
s9e Media Sites
s9e Media Sites
Дополнительные медиа сервисы для Xenforo
[DigitalPoint] App for Cloudflare®
[DigitalPoint] App for Cloudflare®
Плагин для управления CloudFlare на Xenforo
Warning Improvements by Xon
Warning Improvements by Xon
Усовершенствование системы предупреждения для XF 2
[DigitalPoint] Better Google Analytics
[DigitalPoint] Better Google Analytics
Подробная Аналитика гугл на вашем сайте с CMS Xenforo
[OzzModz] Gamer Profiles
[OzzModz] Gamer Profiles
Аддон для игровых ников с поддержкой SSL.
Change Content Owner or Date
Change Content Owner or Date
Это дополнение позволяет вам изменить владельца контента или временную метку контента.
[cv6] Notice Countdown
[cv6] Notice Countdown
Добавляет возможность добавить обратный отсчет дня в объявление
[Andrew] Moderator Panel
[Andrew] Moderator Panel
Полноценная панель модератора для xenforo 2
ВерхНиз