Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Sprachvariable im vordefiniertem DIV
#1
Hallo,

aktuell wird vom PlugIn ein HTML-Code (damit ihn der Admin selbst abändern kann), wie z.B. nachstehend, in die Datenbank geschrieben.
Zitat:<div align="right" style="margin: 1% 1%; position: relative; z-index: 9999;"><a href="./ziel/" title="Bezeichnung" style="text-decoration: none;"><span style="font-size: 18px; color: #fff; background-color: #008600; border-radius: 100px; padding: 1px 3px;">Link zu</span></a></div>

Ich habe versucht, Bezeichnung mit einer Sprachvariable  so: {$lang->name_sprachvariable} (was ja im Template selbst funktioniert) bzw. so: {\$lang->name_sprachvariable} zu ersetzen. Leider ohne Erfolg. Wäre hat wegen der gegebenen Mehrsprachigkeit sehr willkommen

Verständnisfrage:
Funktioniert der Aufruf einer Sprachvariablen aus der Datenbank im Inhalt des definierten DIV (wie vorstehend) nicht oder gibt es da eine andere Vorgensweise beachtet werden?

Wenn nicht, kann ich mir den weiteren Zeitaufwand zum Testen ersparen.

Vorab Danke für Tipps und Hinweise.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an!  ...ich bitte jedoch nicht darum helfen zu dürfen!
MyBB: 1.8.37 | PHP: 8.2.9 | SQL: 10.6.12 ≙ MariaDB
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#2
Dein eigener HTML-Code (Template) muss durch ein obligatorisches eval() gejagt werden, damit auch Variablen darin 'verarbeitet' und durch Inhalt ersetzt werden.

Beispiele dafür sind überall in *.php- Dateien von MyBB zu finden:
eval("\$VAR = \"".$templates->get("TEMPLATE_TITLE")."\";");

[ExiTuS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
#3
@Gerti

Am besten auf Inline-Styles verzichten und CSS ID/Klassen verwenden und dazu ein entsprechenden Plugin Stylesheet hinzufügen. So lässt sich die Anzeige an Themendesigns besser anpassen.

Normalerweise sollten Admins da auch keine Schwierigkeiten bei gewünschten Änderungen haben.
Zitieren
#4
(17.01.2024, 12:58)[ExiTuS] schrieb: Dein eigener HTML-Code (Template) muss durch ein obligatorisches eval() gejagt werden, damit auch Variablen darin 'verarbeitet' und durch Inhalt ersetzt werden.

Beispiele dafür sind überall in *.php- Dateien von MyBB zu finden:
eval("\$VAR = \"".$templates->get("TEMPLATE_TITLE")."\";");

[ExiTuS]
Danke für Dein Engagement.

Ich entnehme daraus, das ich für den Datenbankentrag die Variable $db_eintrag für den Header mit
Code:
eval("\$db_eintrag = \"".$templates->get("header")."\";");
einbinden müsste.  Wenn ja, funktioniert dies nicht. Habe es gerade so getestet. Aktuell ruft es mit der vorstehenden Lösung das Template zweimal auf.

Die Variable soll jedoch in das bestehende Template eingebunden werden.

Habe ich etwas falsch gemacht oder ist die angedachte Lösung unzutreffend?

(17.01.2024, 13:52)SvePu schrieb: Am besten auf Inline-Styles verzichten und CSS ID/Klassen verwenden und dazu ein entsprechenden Plugin Stylesheet hinzufügen. So lässt sich die Anzeige an Themendesigns besser anpassen.

Normalerweise sollten Admins da auch keine Schwierigkeiten bei gewünschten Änderungen haben.
Danke für den Hinweis. Das Styleshett kann ich gerne im PlugIn definieren und bei Aktivierung des PlugIns das Stylesheet in das Default-Theme schreiben.  Das wäre kein großes Problem. Noch arbeite ich an der Lösungsfindung bzgl. Sprachvariable.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an!  ...ich bitte jedoch nicht darum helfen zu dürfen!
MyBB: 1.8.37 | PHP: 8.2.9 | SQL: 10.6.12 ≙ MariaDB
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#5
Also dein HTML-Code-Schnipsel liegt als eigenes Template in der Tabelle 'mybb_templates', mit eigenem Namen im Feld 'title', z.b.'gerti_button'.

eval("\$VARIABLE = \"".$templates->get("gerti_button")."\";");

Die $VARIABLE schreibst du an gewünschter Stelle in das 'header'-Template.

(Ich bin mir nicht sicher, ob auch der Name 'gerti_button' mit in $templatelist aufgeführt werden muss.)

[ETS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
#6
ein "muss" nicht, aber die Variable hat sicherlich ihren Sinn
Vorsicht Mogelpackungen! Nicht überall, wo "Admin" dran steht, ist auch "Admin" drin
Zitieren
#7
@ExiTuS
Das mit dem Einbinden eines Templates ahbe ich erfolgreich umsetzen können. Danke für den Hinweis.



(17.01.2024, 14:15)[ExiTuS] schrieb: Ich bin mir nicht sicher, ob auch der Name 'gerti_button' mit in $templatelist aufgeführt werden muss.
(17.01.2024, 16:16)bv64 schrieb: ein "muss" nicht, aber die Variable hat sicherlich ihren Sinn
Wie was wo? Das bzgl. $templatelist lese ich zum ersten mal. Kann mir das jemand nachvollziehbar erklären warum, wieso, weshalb und wie man es, wenn  es denn Sinn macht, umsetzt?
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an!  ...ich bitte jedoch nicht darum helfen zu dürfen!
MyBB: 1.8.37 | PHP: 8.2.9 | SQL: 10.6.12 ≙ MariaDB
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#8
(19.01.2024, 15:15)Gerti schrieb: Wie was wo? Das bzgl. $templatelist lese ich zum ersten mal. Kann mir das jemand nachvollziehbar erklären warum, wieso, weshalb und wie man es, wenn  es denn Sinn macht, umsetzt?
Ich wiederhole mich ungern, aber du solltest dir das Beispiel-Plugin hello.php anschauen. Dort findet sich auch hierzu zumindest eine kurze Erklärung einschließlich längerem Code-Beispiel:
PHP-Code:
// cache templates - this is important when it comes to performance
// THIS_SCRIPT is defined by some of the MyBB scripts, including index.php
if(defined('THIS_SCRIPT'))
{
    global 
$templatelist;

    if(isset(
$templatelist))
    {
        
$templatelist .= ',';
    }

    if(
THIS_SCRIPT== 'index.php')
    {
        
$templatelist .= 'hello_index, hello_message';
    }
    elseif(
THIS_SCRIPT== 'showthread.php')
    {
        
$templatelist .= 'hello_post, hello_message';
    }


Die längere Erklärung ist, dass Templates, die nicht der Liste sind, nicht ein einem Rutsch in den Cache geladen werden. Dies führt dazu, dass jedes neue Templates einzeln aus der Datenbank geladen werden muss. Dies ist vergleichsweise ineffizient und verlangsamt das Forum. Bei einem Template mag das vernachlässigbar sein, bei vielen kann es sich aber bemerkbar machen.
Dies lässt sich über die MyBB Debug Information im Footer nachvollziehen. Die zusätzliche Abfragen tauchen dort auf und werden unten bei "Templates Requiring Additional Calls (Not Cached at Startup)" angezeigt.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#9
Jetzt weiß ich wenigstens was $templatelist auch inhaltlich bedeutet.

Besten Dank für Dein Engagement es nachvollziehbar zu erläutern.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an!  ...ich bitte jedoch nicht darum helfen zu dürfen!
MyBB: 1.8.37 | PHP: 8.2.9 | SQL: 10.6.12 ≙ MariaDB
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren