- XF-Kompatibilität
- 2.3.x
- 2.2.x
- Kurzbeschreibung
- XenForo 2 SVG Template Add-on v1.12.0+: Erlaubt die Speicherung und Generierung von SVG-Dateien für eine einfache Bildverwaltung. Unterstützt URL-Rewriting für saubere URLs und Rendering zu PNG mittels CLI oder vorbereiteten Binärdateien wie php-imagick, resvg und Inkscape. Kompatibel mit dem XenForo 2 Routing-System über Nginx/Apache Rewritungsregeln.
ErfordertStandard Library By Xonv1.12.0+
Abhängig von der Konfiguration benötigt dieses Add-on die Unterstützung für URL-Rewrite auf dem Webserver!
Abhängig von der Konfiguration benötigt dieses Add-on die Unterstützung für URL-Rewrite auf dem Webserver!
Erlaubt SVG-Bilder (Scalable Vector Graphics) als Templates zu speichern. Dies erstellt ein neues svg.php-Datei im XF-Hauptverzeichnis.
Um einen Link zu einem SVG-Templat zu generieren (Der Template muss eine .svg am Ende haben!);
Rendering SVGs to PNGs benötigt externe Unterstützung und abhängig von der Betriebssystem kann dies zu ungleichen Einschränkungen oder schlechter Rendering führen.
Es istnicht empfohlen,Imagick zu verwenden, wenn es anders geht!https://launchpad.net/~ondrej/+archive/ubuntu/phpPPA); Code:
Notiz; einige Distro's benötigen libmagickcore-6.q16-3-extra installiert zu haben, um SVG Unterstützung zu aktivieren.
Ältere Versionen von Imagick haben schlechte SVG Unterstützung, auf dem Fuße gebunden von Imagicks schlechtem Sicherheitsbewertungssystem.
Dies ist ein generischer Ausfallschacht zum Einstecken einer beliebigen PNG-Konvertierung, indem man proc_open in PHP verwendet.
Konfiguriere Render mit der Option proc_open.
{sourceFile} ist der Quell-SVG als temporärer Datei {destFile} ist die Ziel-PNG-Datei als temporärer Datei
Alternativ können Eingabe/Ausgabe über Pipelines erfolgen
Hinweis: Template-Namen sind nur alphanumerische Strings, was durch Validierung vor der CLI-Option aufgefordert wird
Beispiel mit verwendenresvgkonfigurieren Sie CLI-Befehl mit;
Vorbereiteter Linux x86_64-Binär wurde bereitgestellthereKompiliert auf CentOS 7, funktioniert auf Ubuntu 18.04/20.04
Kompilieren kann an neue Versionen von glibc gebunden werden, was Portabilitätprobleme verursachen kann
Notiere; verwende Snap, sonst ist es wahrscheinlich zu alt!
Konfigurieren Sie CLI PIPE-Befehl mit;
Less:
Explizites Verwendung in Vorlagen;
und sollte ähnlich sein;
Zusätzliche Funktionen oder FehlerbehebungenBitte erstelle einen GitHub Pull Request über die "Weitere Informationen"-Link.
Abhängig von der Konfiguration benötigt dieses Add-on die Unterstützung für URL-Rewrite auf dem Webserver!
Abhängig von der Konfiguration benötigt dieses Add-on die Unterstützung für URL-Rewrite auf dem Webserver!
Erlaubt SVG-Bilder (Scalable Vector Graphics) als Templates zu speichern. Dies erstellt ein neues svg.php-Datei im XF-Hauptverzeichnis.
Um einen Link zu einem SVG-Templat zu generieren (Der Template muss eine .svg am Ende haben!);
Code:
{{ getSvgUrl('tempate.svg') }}
Under Board information, if "Use Full Friendly URLs" (useFriendlyUrls) is set the URL generated is:
Code:
/data/svg/<style_id>/<langauge_id>/<style_last_modified>/<templateName.svg>
Otherwise
Code:
svg.php?svg=<templateName>&s=<style_id>&l=<langauge_id>&d=<style_last_modified>
Es istnicht empfohlen,Imagick zu verwenden, wenn es anders geht!https://launchpad.net/~ondrej/+archive/ubuntu/phpPPA); Code:
Code:
sudo apt install php7.4-imagick libmagickcore-6.q16-3-extra
sudo systemctl restart php7.4-fpm
Ältere Versionen von Imagick haben schlechte SVG Unterstützung, auf dem Fuße gebunden von Imagicks schlechtem Sicherheitsbewertungssystem.
Dies ist ein generischer Ausfallschacht zum Einstecken einer beliebigen PNG-Konvertierung, indem man proc_open in PHP verwendet.
Konfiguriere Render mit der Option proc_open.
<CLI-binary> {destFile} {sourceFile}{sourceFile} ist der Quell-SVG als temporärer Datei {destFile} ist die Ziel-PNG-Datei als temporärer Datei
Alternativ können Eingabe/Ausgabe über Pipelines erfolgen
Hinweis: Template-Namen sind nur alphanumerische Strings, was durch Validierung vor der CLI-Option aufgefordert wird
Beispiel mit verwendenresvgkonfigurieren Sie CLI-Befehl mit;
Code:
/usr/local/bin/resvg --quiet {sourceFile} {destFile}
Kompilieren kann an neue Versionen von glibc gebunden werden, was Portabilitätprobleme verursachen kann
Code:
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
Code:
sudo snap install inkscape
Code:
inkscape --export-type=png -p
Bedingtes Rendering von SVG zu PNG (für CSS/LESS)
Ein Beispiel für bedingtes CSS, das den PNG über dem SVG für Mobilanwendungen verwendetLess:
Code:
.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>
}
}
Code:
<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 Routing Integration
Wähle Webserver-Rewrite-Spezifizierungen empfohlen, unterstützt dieses Add-On die Erweiterung des Routingsystems von XenForo zur Bereitstellung ohne Konfiguration für SVG-Templates.Nginx-URL-Rewrite-Konfiguration
Code:
location ^~ /data/svg/ {
access_log off;
rewrite ^/data/svg/([^/]+)/([^/]+)/([^/]+)/([^\.]+\..*)$ /svg.php?svg=$4&s=$1&l=$2&d=$3$args last;
return 403;
}
Apache URL-rewrite-Konfiguration
Add the rule before <?php;
Code:
RewriteRule ^data/svg/([^/]+)/([^/]+)/([^/]+)/([^\.]+\..*)$ svg.php?svg=$4&s=$1&l=$2&d=$3 [B,NC,L,QSA]
Code:
# 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
RewriteCond %{REQUEST_FILENAME} -l
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ -
RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) -
RewriteRule ^data/svg/([^/]+)/([^/]+)/([^/]+)/([^\.]+\..*)$ svg.php?svg=$4&s=$1&l=$2&d=$3 [B,NC,L,QSA]
RewriteRule ^.*$ index.php