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

Gesperrt
blueface
Beiträge: 25
Registriert: Mo 23. Sep 2002, 16:00
Kontaktdaten:

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

Beitrag 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
calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

Beitrag 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.
delinquent
Beiträge: 184
Registriert: Fr 17. Aug 2007, 12:15
Kontaktdaten:

Beitrag 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:
calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

Beitrag 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"])];
delinquent
Beiträge: 184
Registriert: Fr 17. Aug 2007, 12:15
Kontaktdaten:

Beitrag 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...
calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

Beitrag 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.
calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

Beitrag von calvini »

Geht nicht :?.

Da es allerdings wie vorgeschrieben bereits hier diskutiert wurde, hoffe ich mal, dass irgendwann ein Mod hierdrüber stolpert.
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Ich hab's erstmal verschoben.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!
blueface
Beiträge: 25
Registriert: Mo 23. Sep 2002, 16:00
Kontaktdaten:

Vielen Dank!

Beitrag 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
calvini
Beiträge: 95
Registriert: Mo 21. Feb 2005, 12:06
Kontaktdaten:

Beitrag 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?
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Gern.
Lösung über den Datensatzschlüssel
Gruß
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
delinquent
Beiträge: 184
Registriert: Fr 17. Aug 2007, 12:15
Kontaktdaten:

Beitrag von delinquent »

Der Fehler ist in Version 4.8 immernoch enthalten :-(
Gesperrt