WebsiteBaker Support (2.8.x) > Diskussion über WB (closed)
RSS: Einheitliche PageIDs
evaki:
Anscheinend gibt es bei Anwendern das Problem, daß beim Löschen einer News-Page in der Folge mit dem Neuanlegen der RSS-Feed nicht mehr stimmt, da eine neue PageID vergeben wird. Die Folgen sind mehr als ärgerlich. Man kam hier bei uns auf die Idee PageIDs zu reservieren, für News z.B. 1000-1010 01-10, Banner xx-xx usw.
Was ist nötig (Script) um im laufenden Betrieb (News vorhanden) die PageIDs entsprechend zu ändern, also ohne daß die Nachrichten verloren gehen und die Funktion gestört wird?
MfG. Evaki
Nachdem ich selbst ein wenig gespielt habe, stellt sich mir eine weitere Frage. Wo ist die zuletzt generierte PageID (und wie) gespeichert, also auch wenn die Seite längst geloscht ist?
BlackBird:
Die Vergabe der IDs erfolgt über Mechanismen der Datenbank. Da hat WB nichts mit zu tun. Dementsprechend wird die zuletzt vergebene ID auch nicht irgendwo vermerkt.
Das Problem mit dem Feed verstehe ich nicht, der wird doch auf Basis der aktuellen Daten erzeugt?
evaki:
Hallo
>die zuletzt vergebene ID auch nicht irgendwo vermerkt.
Was ich nicht verstehe wo die Infornation der zuletzt erzeugten PiD herkommt (deren Seite schon gelöscht ist), wenn eine neue Seite angelegt wird, also Seite 55 angelegt, gelöscht und neue Seite erhält 56.
Bei meiner Spielerei hatte ich einer Seite per phpmyadmin eine höhere PiD gegeben (die Seite dann gelöscht), ab der dann beim Anlegen einer neuen Seite folgerichtig hochgezählt wurde.
>Problem mit dem Feed verstehe ich nicht
Wenn der Fee abonniert ist, passiert beim Wechsel nichts mehr. So zumindest wurde es mir erklärt. Das erschien mir einleuchtend. Habe ich etwas verwechselt oder nicht bzw. falsch verstanden?
MfG. Evaki
BlackBird:
--- Quote ---Was ich nicht verstehe wo die Infornation der zuletzt erzeugten PiD herkommt
--- End quote ---
Das macht die Datenbank. Dort ist definiert, daß es sich um ein sogenanntes auto_increment Feld handelt. Die Datenbank vergibt dann automatisch eine fortlaufende ID. Die zuletzt vergebene - bzw. nächste freie - ID ist ebenfalls in der Datenbank selbst hinterlegt. WB hat damit nichts zu tun, das macht mySQL selbst.
BlackBird:
Hier mal beispielhaft der CREATE TABLE aus meiner lokalen WB 2.8.3 Testinstallation. Wie Du siehst, ist page_id als AUTO_INCREMENT Feld deklariert. Unten steht die aktuelle - das heißt nächste zu vergebende - AUTO_INCREMENT ID.
--- Code: ---CREATE TABLE `wb_pages` (
`page_id` INT(11) NOT NULL AUTO_INCREMENT,
`parent` INT(11) NOT NULL DEFAULT '0',
`root_parent` INT(11) NOT NULL DEFAULT '0',
`level` INT(11) NOT NULL DEFAULT '0',
`link` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`target` VARCHAR(7) NOT NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
`page_title` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
`menu_title` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
`description` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`keywords` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`page_trail` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`template` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
`visibility` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
`position` INT(11) NOT NULL DEFAULT '0',
`menu` INT(11) NOT NULL DEFAULT '0',
`language` VARCHAR(5) NOT NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
`searching` INT(11) NOT NULL DEFAULT '0',
`admin_groups` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`admin_users` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`viewing_groups` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`viewing_users` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
`modified_when` INT(11) NOT NULL DEFAULT '0',
`modified_by` INT(11) NOT NULL DEFAULT '0',
`page_code` INT(11) NOT NULL,
PRIMARY KEY (`page_id`)
)
COLLATE='utf8_unicode_ci'
ENGINE=MyISAM
AUTO_INCREMENT=15;
--- End code ---
Wichtig ist auch, zu verstehen, daß sich die ID nicht dadurch ändert, daß zwischendrin IDs rausgenommen werden. mySQL vergibt immer die nächsthöhere ID, egal ob davor welche frei sind oder nicht. Das heißt, wenn ich mit obigem Statement eine leere Tabelle erzeuge, wird die allererste Seite, die ich mit WB anlege, die ID 15 bekommen - obwohl die 14 IDs davor gar nicht belegt sind.
Wenn Du mySQL durch manuelle Vergabe einer nächsthöheren ID - z.B. 25 - zwingst, die nächste AUTO_INCREMENT ID zu ändern, wirst Du ab diesem Zeitpunkt entsprechend höhere IDs bekommen. Du könntest z. B. erzwingen, daß Deine Seiten-IDs mit 1001 statt 1 anfangen.
Navigation
[0] Message Index
[#] Next page
Go to full version