Иконка ресурса

Плагин SVG Template by Xon v2.6.0

Позволяет сохранять изображения SVG в виде шаблона
Совместимость с XenForo
  1. XF 2.2
  2. XF 2.3
Доп. требования
PHP 7.0+
Standard Library v1.11.1+ by Xon
Подробнее
https://xenforo.com/community/resources/svg-template-by-xon.6647/
Связанные ресурсы
В зависимости от конфигурации для этого дополнения требуется поддержка перезаписи URL-адресов веб-сервера!

SVG Template​

В зависимости от конфигурации для этого дополнения требуется поддержка перезаписи URL-адресов веб-сервера!

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

Чтобы создать ссылку на шаблон SVG (Шаблон должен иметь .svg в конце имени!);
PHP:
{{ getSvgUrl('tempate.svg') }}
В разделе «Информация о доске», если установлено «Использовать полные дружественные URL-адреса» (useFriendlyUrls), генерируемый URL-адрес будет следующим:
PHP:
/data/svg/<style_id>/<langauge_id>/<style_last_modified>/<templateName.svg>
В противном случае
PHP:
svg.php?svg=<templateName>&s=<style_id>&l=<langauge_id>&d=<style_last_modified>

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

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

поддержка PHP-imagick​

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

Ubuntu (с использованием PPA);
PHP:
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 в области безопасности.

Поддержка интерфейса командной строки​

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

Настройте рендеринг, используя опцию proc_open с помощью;
PHP:
<CLI-binary> {destFile} {sourceFile}
{sourceFile} — исходный SVG, записанный в виде временного файла. {destFile} — целевой PNG-файл в виде временного файла.

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

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

поддержка resvg CLI​

Пример использования , настройте команду CLI с помощью;
PHP:
/usr/local/bin/resvg --quiet {sourceFile} {destFile}

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

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

Компиляция​

Компиляция может быть привязана к более новым версиям glibc, что может вызвать проблемы с переносимостью.
PHP:
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​

Примечание; используйте Snap, иначе экземпляр может оказаться слишком старым!
PHP:
sudo snap install inkscape
Настройте команду CLI PIPE с помощью;
PHP:
inkscape --export-type=png -p

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

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

Пример условного CSS для использования PNG вместо SVG для мобильных клиентов
CSS:
.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>
    }
}
Явное использование в шаблонах;
HTML:
<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​

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

Конфигурация перезаписи 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;
}

Конфигурация перезаписи 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]

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

  1. SVG Template by Xon v2.6.0

    Требуется StandardLib версии v1.19.0+ Если установлен, требуется кэш Redis 2.17.0+ Обновление...
  2. SVG Template by Xon v2.5.2

    Fix "[E_DEPRECATED] strlen(): Passing null to parameter #1 ($string) of type string is...
  3. SVG Template by Xon v2.5.1

    Исправлена ошибка внутреннего сервера, генерируемая вместо 404 при запросе недопустимого svg
Сверху Снизу