Jump to content

Alle bestaande pagina's en topics in een topicbase plaatsen

From NusaATK

Wanneer een CMS omgeving gebruikt gaat worden om meerdere sites daarin te hosten, is het nodig om een topicbase toe te voegen.

Door de volgende stappen uit te voeren heb je in een paar minuten tijd je complete site in een topicbase mapje geplaatst. In mijn geval heet de topicbase 'pam', maar dit kan uiteraard vervangen worden door iedere andere naam.

Stap 1: database tabellen aanpassen

Voer de volgende twee SQL queries uit op je database om alle pagina's en topics naar 1 mapje hoger te verplaatsen:

UPDATE `content_page` SET location = CONCAT( "/pam", location );
UPDATE `content_topic` SET location = CONCAT( "/pam", location ) ;

Stap 2: het aanmaken van de topicbase

Je zult nu in de beheeromgeving niets meer zien (omdat het topic 'pam' niet bestaat). De oplossing hiervoor is simpel: maak een topic 'pam' aan in je siteroot. Nadat je het topic heb aangemaakt zul je zien dat alle bestanden in het mapje staan!

Stap 3: licences

Stel vervolgens de licences en hosts enzo in zoals je gewend bent van 'normale' M6 installaties.

Stap 4: afbeeldingen

Afbeeldingen hebben nu ook geen juist pad meer. Deze moet je

1. fysiek verplaatsen: In de topics dir heb je nu als het goed is een topicbase dir, bijvoorbeeld /topics/pam Move alle root directories naar de /pam dir.

2. in de database aanpassen: Voer de volgende SQL query uit om de location aan te passen:

UPDATE files_files SET location = CONCAT("/pam", location) WHERE SUBSTR(location,0,4) != '/pam' ;

Hierbij plak je /pam voor de location, WAAR location records niet beginnen met /pam, want deze zijn waarschijnlijk wel goed geupload. Let op substr 0,4 -> 4 is het aantal karakters van de topicbasenaam + /


PHP Code

Met de volgende functie is het mogelijk om bovengenoemde stappen te automatiseren.


 function topicbasify()
 {
   $target_db = &atkGetDb();
   $m6_wanted_topicbase = 'pam';
// verplaats topics en pages naar topicbase $target_db->query("UPDATE `content_page` SET location = CONCAT( '/$m6_wanted_topicbase', location )"); $target_db->query("UPDATE `content_topic` SET location = CONCAT( '/$m6_wanted_topicbase', location )");
$len = strlen("/".$m6_wanted_topicbase); $target_db->query("UPDATE files_files SET location = CONCAT("/$m6_wanted_topicbase", location) WHERE SUBSTR(location,0,$len) != '/$m6_wanted_topicbase'"); }