Seite 1 von 1

Meta-Tags mit . in der Bezeichnung nicht möglich

Verfasst: Fr 21. Sep 2007, 11:26
von blueface
Hallo,

ich habe den Table meta_type geändert und ein Eintrag mit DC.title angelegt. Somit wird das Feld in der Artikeleigenschaft angezeigt. Sobald ich in der Artikeleigenschaft in diesem Feld was eingebe wird es nicht gespeichert. Alle anderen Felder funktionieren wunderbar. Liegt wahrscheinlich am Punkt vom "DC.title".

Welche Dateien muss ich mir ansehen wo das Insert bzw Update gemacht wird oder woran könnte es sonst liegen?

Vielen Dank im Voraus
Leo

Verfasst: Fr 21. Sep 2007, 11:45
von calvini
Nach meinen bisherigen Recherchen wird der Punkt in einen Unterstrich umgesetzt (sehr schön zu sehen, wenn du noch ein META-Feld "DC_title" hinzufügst, dort steht dann drin, was du bei "DC.title" eingegeben hast). Ich such mal danach und melde mich nochmal.

Verfasst: Fr 21. Sep 2007, 11:59
von delinquent
Guck mal in includes/functions.con.php in Zeile 206 und 555, da steht was von

Code: Alles auswählen

$_POST['META'.$value["name"]]);
Das könntest Du z.B. in

Code: Alles auswählen

$_POST['META'.preg_replace('/[\s\.]/', '_', $value["name"])]);
ändern, dadurch werden die Übermittelten Daten richtig verarbeitet.


Gruß,
delinquent

BTW: Die Frage einmal zu posten reicht völlig. :wink:

Verfasst: Fr 21. Sep 2007, 12:10
von calvini
Sorry, aber das wirst du wohl auf absehbare Zeit (zumindest so) nicht umgesetzt bekommen.

Für die Entwickler: In functions.con.php, Zeile 540, wird der Wert der Variablen aus $_POST ausgelesen: $_POST['META'.$value["name"]]. Wenn nun aber der Variablenname einen Punkt enthält, wandelt PHP diesen automatisch in einen Unterstrich um (Quelle). Da nun der Name des META-Tags auch als Variablenname verwendet wird, kommt es zu einer Konvertierung und der Wert wird nicht mehr dem richtigen Namen zugeordnet.

Mögliche Lösung: Statt des Namens den eindeutigen Schlüssel aus der Tabelle [con_]meta_type als Variablennamen verwenden (include.con_edit_form.php, Zeile 577, weitere Seiteneffekte habe ich nicht geprüft).

@blueface: Wenn du dich damit auskennst, kannst du die von delinquent vorgeschlagene Lösung verwenden, allerdings würde ich dir folgenden Code empfehlen:

Code: Alles auswählen

$_POST['META'.str_replace('.','_',$value["name"])];

Verfasst: Fr 21. Sep 2007, 12:23
von delinquent
calvini hat geschrieben:Mögliche Lösung: Statt des Namens den eindeutigen Schlüssel aus der Tabelle [con_]meta_type als Variablennamen verwenden.
Wär vielleicht ne Idee für ein Feature Request für spätere Versionen...

Verfasst: Fr 21. Sep 2007, 12:37
von calvini
Naja, für mich wäre das eher ein Bug. Und es scheint tatsächlich nur an vier Stellen im Code aufzutauchen, von daher müsste es relativ einfach umzusetzen sein.

Ich habe es mal ausprobiert und es scheint zu funktionieren:

Suche in functions.con.php nach

Code: Alles auswählen

$_POST['META'.$value["name"]]
und ersetze es mit

Code: Alles auswählen

$_POST['META'.$key]
(zweimal)

Suche in include.con_edit_form.php nach

Code: Alles auswählen

name="META'.$value["name"].'"
und ersetze es mit

Code: Alles auswählen

name="META'.$key.'"
(zweimal)

Werde im Bug-Forum mal einen Verweis hierher setzen.

Verfasst: Fr 21. Sep 2007, 12:39
von calvini
Geht nicht :?.

Da es allerdings wie vorgeschrieben bereits hier diskutiert wurde, hoffe ich mal, dass irgendwann ein Mod hierdrüber stolpert.

Verfasst: So 23. Sep 2007, 11:52
von Halchteranerin
Ich hab's erstmal verschoben.

Vielen Dank!

Verfasst: Mo 24. Sep 2007, 17:37
von blueface
Hallo,

ich hab es jetzt über die functions.con.php gelöst und funktioniert einwandfrei.

Hier nochmal der ganze Aufruf der Funktion:

Code: Alles auswählen

//ACHTUNG-Einstellung geht verloren bei UPDATE, da im Orginalcode str_replace nicht enthalten!!!
conSetMetaValue($idartlang,$key,$_POST['META'.str_replace('.','_',$value["name"])]);
Vielen Dank
Leo

Verfasst: Di 25. Sep 2007, 08:35
von calvini
Du solltest aber trotzdem beide Aufrufe ändern (also auch den in conEditFirstTime()). Wobei ich die Lösung über den Datensatzschlüssel präferieren würde, da diese das Problem behebt und nicht verlagert (mit der aktuellen Lösung sind jetzt keine META-Tags mit Unterstrich im Namen möglich). Wäre ja schön, wenn sich mal jemand aus dem Entwicklerteam dazu äußern würde?

Verfasst: Di 25. Sep 2007, 19:17
von HerrB
Gern.
Lösung über den Datensatzschlüssel
Gruß
HerrB

Verfasst: So 20. Apr 2008, 11:36
von delinquent
Der Fehler ist in Version 4.8 immernoch enthalten :-(