Seite 1 von 1

Eingabe von Artikeln und vorbelegen von Feldern

Verfasst: Di 10. Aug 2004, 15:15
von darthbach
Hallo.

Ich möchte die Artikeleingabe im Backend etwas vereinfachen, sprich bei der Eingabe des "Titels" in der Konfiguration sollen automatisch der "Seitentitel" und die Überschrift des Artikels (CMS_HTMLHEAD[1]) ausgefüllt werden.

Der Seitentitel ist an sich kein Problem (Update des Eintrages in der MySQL-Datenbank).

Das Problem ist, dass für die Überschrift noch kein Eintrag in con_content existiert. (Abfrage über MySQL: idtype = 1 AND typeid = 1)

Wie komme ich an die Nummer des nächsten Eintrages in con_content?
Oder hat Contenido etwas dagegen, dass man direkt in die Datenbank schreibt?

Thanx,
darthbach

Verfasst: Di 10. Aug 2004, 15:17
von timo
nimm einfach den nächsten freien Schlüssel für die con_type (bekommst du über die DB_Contenido-Klasse zurück). Da es derzeit keine zentralen Objekte gibt, ist das relativ ungefährlich.

Wichtig ist es, daß du das über die DB-Klasse machst, damit sie die con_sequence updaten kann.

Verfasst: Mi 11. Aug 2004, 14:46
von Alex
Hallo darthbach,

das hört sich ja interessant an. Wenn du weitergekommen bist, wäre es klasse, wenn du deine Erfahrungen damit posten würdest... Hab nämlich schon länger dieselbe Idee...

Alex

Verfasst: Sa 14. Aug 2004, 15:55
von darthbach
Hallo.

Ich möchte ja (wie bereits geschrieben) das folgende drei Punkte automatisch gesetzt werden:
Ich gebe unter Eigenschaften im Feld Titel die eigentliche Überschrift an. Wenn man mit Enter (Button unten) den Artikel erstellt, werden
1.) der Seitentitel (= pagetitle) und
2.) die Überschrift (im Editor)
automatisch gesetzt.

Die folgende Erklärung ist sehr detailliert.
Bevor ich es noch vergesse: Ich arbeite mit der Contenido 4.5.2 ALPHA. Es kann also sein, dass sich die Zeilennummern geändert haben.

Folgende Zeilen müssen in der Datei %CONTENIDO_ROOT%/contenido/includes/functions.con.php ergänzt werden:
Direkt die erste Funktion conEditFirstTime muss geändert werden.

zu: 1.)
Diese Funktion ist unterteilt mit # Table 'con_xxxxxx'. Scrollt bis # Table 'con_art_lang' vor (bei mir ab Zeile 112).
Der Anfang sieht so aus (Leerzeichen gelöscht):

Code: Alles auswählen

# Table 'con_art_lang'
# One entry for every language
foreach ($a_languages as $tmp_lang) {
	$lastmodified = ( $lang == $tmp_lang ) ? $lastmodified : 0;
	$sql = "INSERT INTO ".$cfg["tab"]["art_lang"]." ( idartlang, idart, idlang, title, pagetitle, summary, artspec, created, lastmodified, author, online, redirect, redirect_url, external_redirect, artsort, timemgmt, datestart, dateend, status, time_move_cat, time_target_cat, time_online_move ) VALUES ( $db->nextid($cfg["tab"]["art_lang"]), '$new_idart', '$tmp_lang', '$title', '".addslashes([b]$page_title)."', '$summary', '$artspec', '$created', '$lastmodified', '".$auth->auth["uname"]."', '$online', '$redirect', '$redirect_url', '$external_redirect', '$artsort', '$usetimemgmt', '$datestart', '$dateend', '0', '$movetocat', '$time_target_cat', '$onlineaftermove')";
Ersetzt diesen Teil durch:

Code: Alles auswählen

# Table 'con_art_lang'
# One entry for every language
foreach ($a_languages as $tmp_lang) {
	$lastmodified = ( $lang == $tmp_lang ) ? $lastmodified : 0;
	$new_idartlang = $db->nextid($cfg["tab"]["art_lang"]);
	$sql = "INSERT INTO ".$cfg["tab"]["art_lang"]." ( idartlang, idart, idlang, title, pagetitle, summary, artspec, created, lastmodified, author, online, redirect, redirect_url, external_redirect, artsort, timemgmt, datestart, dateend, status, time_move_cat, time_target_cat, time_online_move ) VALUES ( '$new_idartlang', '$new_idart', '$tmp_lang', '$title', '".addslashes($title)."', '$summary', '$artspec', '$created', '$lastmodified', '".$auth->auth["uname"]."', '$online', '$redirect', '$redirect_url', '$external_redirect', '$artsort', '$usetimemgmt', '$datestart', '$dateend', '0', '$movetocat', '$time_target_cat', '$onlineaftermove')";
Weiter unten (Zeile 292) steht noch eine SQL-Anweisung:

Code: Alles auswählen

$sql = "UPDATE ".$cfg["tab"]["art_lang"]." SET title = '".$title."', pagetitle = '".$page_title."', summary = '".$summary."', artspec = '".$artspec."', created = '".$created."', lastmodified = '".$lastmodified."', modifiedby = '".$author."', online = '".$online."', datestart = '".$datestart."', dateend = '".$dateend."', redirect = '".$redirect."', external_redirect = '".$external_redirect."', redirect_url = '".$redirect_url."', artsort = '".$artsort."' WHERE idart = '".$new_idart."' AND idlang = '".$tmp_lang."'";
Ersetzt diese durch

Code: Alles auswählen

$sql = "UPDATE ".$cfg["tab"]["art_lang"]." SET title = '".$title."', pagetitle = '".$title."', summary = '".$summary."', artspec = '".$artspec."', created = '".$created."', lastmodified = '".$lastmodified."', modifiedby = '".$author."', online = '".$online."', datestart = '".$datestart."', dateend = '".$dateend."', redirect = '".$redirect."', external_redirect = '".$external_redirect."', redirect_url = '".$redirect_url."', artsort = '".$artsort."' WHERE idart = '".$new_idart."' AND idlang = '".$tmp_lang."'";
zu: 2.)
In Zeile 316 steht eine return-Anweisung.
Direkt vor dieser Anweisung fügt ihr folgende Zeile ein:

Code: Alles auswählen

conSaveContentEntry($new_idartlang, 'CMS_HTMLHEAD', '1', $title);
Diese Änderungen werden nur bei der Erstellung eines neuen Artikels gemacht. Sobald der Artikel erstellt wurde, greifen die Änderungen nicht mehr.

Ein schönes Wochenende noch,
darthbach