====== Sticky "do=export_html" ====== ===== Concept ===== You can append "do=export_html" or "do=export_xhtml" to a DokuWiki URL to view just the HTML for the page, without the DokuWiki buttons and whatnot. The problem is that if you click a link in the HTML page, it doesn't include the "do=export_html", so the linked page isn't plain HTML. With these changes, once you've specified "do=export_html" to any page, clicking the links on that page will keep the "export_html" action. My original inspiration was to allow extraction of DokuWiki contents as HTML for conversion to PDF, CHM or whatever. ===== Instructions ===== In Version 2006-03-09b ==== Change #1 ==== In **inc/parser/xhtml.php**, internallink function, around line 530, insert this code before the "output formatted" comment near the end of the function: global $ACT; if ($ACT == 'export_xhtml') { if (strpos($link['url'],'?')) $link['action']='&do='.$ACT; else $link['action']='?do='.$ACT; } else { $link['action']=''; } That change adds the "export_xhtml" action to the link "action" field if that was the action by which the current page was loaded. You don't need to handle "export_html" separately, because it gets translated to "export_xhtml" somewhere else. And this runs for different actions: if ($ACT == 'export_html' || $ACT == 'export_xhtml' || $ACT == 'export_xhtmlbody') { ==== Change #2 ==== Further down in xhtml.php, function _formatLink, around line 870, insert the following code just before the "remove double encodings in titles" comment: $link['url'] = $link['url'].$link['action']; That change appends the action to every internal link, making it "sticky". ==== Change #3 ==== In **inc/parserutils.php**, p_cached_xhtml function, around line 130, change: $cache = getCacheName($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.xhtml'); to: global $ACT; $cache = getCacheName($file.$ACT.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.xhtml'); or in **inc/cache.php** change to: if ($mode == 'html' || $mode == 'xhtml' || $mode == 'xhtmlbody') { parent::cache($file.$mode.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.'.$mode); } else { parent::cache($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.'.$mode); } The idea is to use a different cache file for "export_html" vs. not. Without this change I found that once you'd loaded a page with "export_html", subsequent attempts to load the page normally would result in the HTML-only version.