Meta-Tags mit . in der Bezeichnung nicht möglich
Meta-Tags mit . in der Bezeichnung nicht möglich
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
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
-
- Beiträge: 184
- Registriert: Fr 17. Aug 2007, 12:15
- Kontaktdaten:
Guck mal in includes/functions.con.php in Zeile 206 und 555, da steht was von
Das könntest Du z.B. in
ändern, dadurch werden die Übermittelten Daten richtig verarbeitet.
Gruß,
delinquent
BTW: Die Frage einmal zu posten reicht völlig.
Code: Alles auswählen
$_POST['META'.$value["name"]]);
Code: Alles auswählen
$_POST['META'.preg_replace('/[\s\.]/', '_', $value["name"])]);
Gruß,
delinquent
BTW: Die Frage einmal zu posten reicht völlig.

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:
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"])];
-
- Beiträge: 184
- Registriert: Fr 17. Aug 2007, 12:15
- Kontaktdaten:
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 nachund ersetze es mit(zweimal)
Suche in include.con_edit_form.php nachund ersetze es mit(zweimal)
Werde im Bug-Forum mal einen Verweis hierher setzen.
Ich habe es mal ausprobiert und es scheint zu funktionieren:
Suche in functions.con.php nach
Code: Alles auswählen
$_POST['META'.$value["name"]]
Code: Alles auswählen
$_POST['META'.$key]
Suche in include.con_edit_form.php nach
Code: Alles auswählen
name="META'.$value["name"].'"
Code: Alles auswählen
name="META'.$key.'"
Werde im Bug-Forum mal einen Verweis hierher setzen.
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
Vielen Dank!
Hallo,
ich hab es jetzt über die functions.con.php gelöst und funktioniert einwandfrei.
Hier nochmal der ganze Aufruf der Funktion:
Vielen Dank
Leo
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"])]);
Leo
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?
Gern.
HerrB
GrußLösung über den Datensatzschlüssel
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
-
- Beiträge: 184
- Registriert: Fr 17. Aug 2007, 12:15
- Kontaktdaten: