]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/tips/convert_mediawiki_to_ikiwiki.mdwn
releasing version 3.20091023
[git.ikiwiki.info.git] / doc / tips / convert_mediawiki_to_ikiwiki.mdwn
index ce0c684e7615e17784e9f6e1d34b666028e464db..1e5b912a93d7f345b20b2b3b00ac3ebebd771967 100644 (file)
@@ -42,6 +42,16 @@ to adjust this script too:
 Also, if you have pages with titles that need to be encoded to be represented
 in HTML, you may need to add further processing to the last line.
 
+Note that by default, `Special:Allpages` will only list pages in the main
+namespace. You need to add a `&namespace=XX` argument to get pages in a
+different namespace. The following numbers correspond to common namespaces:
+
+ * 10 - templates (`Template:foo`)
+ * 14 - categories (`Category:bar`)
+
+Note that the page names obtained this way will not include any namespace
+specific prefix: e.g. `Category:` will be stripped off.
+
 ### Querying the database
 
 If you have access to the relational database in which your mediawiki data is
@@ -53,7 +63,7 @@ Once you have a list of page names, you can fetch the data for each page.
 
 ### Method 1: via HTTP and `action=raw`
 
-You need to create two derived strings from the page titles already: the
+You need to create two derived strings from the page titles: the
 destination path for the page and the source URL. Assuming `$pagename` 
 contains a pagename obtained above, and `$wiki` contains the URL to your
 mediawiki's `index.php` file:
@@ -64,6 +74,15 @@ mediawiki's `index.php` file:
     mkdir -p `dirname "$dest"`
     wget -q "$wiki?title=$src&action=raw" -O "$dest"
 
+You may need to add more conversions here depending on the precise page titles
+used in your wiki.
+
+If you are trying to fetch pages from a different namespace to the default,
+you will need to prefix the page title with the relevant prefix, e.g.
+`Category:` for category pages. You probably don't want to prefix it to the
+output page, but you may want to vary the destination path (i.e. insert an
+extra directory component corresponding to your ikiwiki's `tagbase`).
+
 ### Method 2: via HTTP and `Special:Export`
 
 Mediawiki also has a special page `Special:Export` which can be used to obtain
@@ -81,12 +100,15 @@ the result.
 It is possible to extract the page data from the database with some
 well-crafted queries.
 
-## Step 2: format conversion
+## Step 3: format conversion
+
+The next step is to convert Mediawiki conventions into Ikiwiki ones.
 
-The next step is to convert Mediawiki conventions into Ikiwiki ones. These
-include
+### categories
 
- * convert Categories into tags
+Mediawiki uses a special page name prefix to define "Categories", which
+otherwise behave like ikiwiki tags. You can convert every Mediawiki category
+into an ikiwiki tag name using a script such as
 
     import sys, re
     pattern =  r'\[\[Category:([^\]]+)\]\]'
@@ -100,7 +122,7 @@ include
                     sys.stdout.write(re.sub(pattern, manglecat, line))
             else: sys.stdout.write(line)
 
-## Step 3: Mediawiki plugin
+## Step 4: Mediawiki plugin
 
 The [[plugins/contrib/mediawiki]] plugin can be used by ikiwiki to interpret
 most of the Mediawiki syntax.