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
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.

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:
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
und ersetze es mit
(zweimal)
Suche in include.con_edit_form.php nach
und ersetze es mit
(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
