Well it doesn't flash in my IE (6.0) nor in my Mozilla (1.6), but I believe you'll notice "flashing" in any browser when the page loads slowly: the whole page is downloaded for each link you click.
I've found an easy way to split your XOOPS site in frames, but I didn't have the time to solve some small problems and this will make a site very hard to navigate without the menu frame being loaded.
Anyway, here's what I got so far:
1st- Clone your default template and give the new one a cool name (like "framed").
2nd- Edit system_block_user.html, system_block_mainmenu.html, system_block_themes.html and add
target="content"
to any <a> or <form> tag in them (and to any other system block template).
So far, no harm done. From now on, be very carefull and
never do this to a production site until we discuss this method a lot.
3rd- Go to your blocks admin and choose what you'll display in the menu frame as left blocks, to be displayed in Top Page only (edit each of these items individually).
3rd and a halfth- I didn't try this with any righ blocks on, so be warned that they might spoil everything.
No block should be visible on all pages4th- System admin->Preferences: set default template to "framed" (or whatever you named it) and "update theme files" to "yes".
5th- Copy the Default theme to a new folder under /themes, something like /framed. Copy this stuff below and sabe as /framed/theme.html (overwriting your original theme.html file
inside /framed/ )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<{$xoops_langcode}>" lang="<{$xoops_langcode}>">
<head>
<meta http-equiv="content-type" content="text/html; charset=<{$xoops_charset}>" />
<meta http-equiv="content-language" content="<{$xoops_langcode}>" />
<meta name="robots" content="<{$xoops_meta_robots}>" />
<meta name="keywords" content="<{$xoops_meta_keywords}>" />
<meta name="description" content="<{$xoops_meta_description}>" />
<meta name="rating" content="<{$xoops_meta_rating}>" />
<meta name="author" content="<{$xoops_meta_author}>" />
<meta name="copyright" content="<{$xoops_meta_copyright}>" />
<meta name="generator" content="XOOPS" />
<title><{$xoops_sitename}> - <{$xoops_pagetitle}></title>
<link href="<{$xoops_url}>/favicon.ico" rel="SHORTCUT ICON" />
<link rel="stylesheet" type="text/css" media="screen" href="<{$xoops_url}>/xoops.css" />
<link rel="stylesheet" type="text/css" media="screen" href="<{$xoops_themecss}>" />
<!-- RMV: added module header -->
<script type="text/javascript">
<!--
<{$xoops_js}>
//-->
</script>
</head>
<body>
<table cellspacing="0">
<tr>
<{if $xoops_lblocks != ""}>
<td id="leftcolumn">
<!-- Start left blocks loop -->
<{foreach item=block from=$xoops_lblocks}>
<{include file="default/theme_blockleft.html"}>
<{/foreach}>
<!-- End left blocks loop -->
</td>
<{/if}>
<{if $xoops_ccblocks != "" || $xoops_clblocks != ""}>
<td id="centercolumn">
<{$xoops_ccblocks}> <{$xoops_clblocks}> <{$crblocks}>
<!-- Display center blocks if any -->
<{if $xoops_showcblock == 1}>
<table cellspacing="0">
<tr>
<td id="centerCcolumn" colspan="2">
<!-- Start center-center blocks loop -->
<{foreach item=block from=$xoops_ccblocks}>
<{include file="default/theme_blockcenter_c.html"}>
<{/foreach}>
<!-- End center-center blocks loop -->
</td>
</tr>
<tr>
<td id="centerLcolumn">
<!-- Start center-left blocks loop -->
<{foreach item=block from=$xoops_clblocks}>
<{include file="default/theme_blockcenter_l.html"}>
<{/foreach}>
<!-- End center-left blocks loop -->
</td><td id="centerRcolumn">
<!-- Start center-right blocks loop -->
<{foreach item=block from=$xoops_crblocks}>
<{include file="default/theme_blockcenter_r.html"}>
<{/foreach}>
<!-- End center-right blocks loop -->
</td>
</tr>
</table>
<{/if}>
<!-- End display center blocks -->
</td>
<{/if}>
<td>
<div id="content">
<{$xoops_contents}>
</div>
</td>
<{if $xoops_showrblock == 1}>
<td id="rightcolumn">
<!-- Start right blocks loop -->
<{foreach item=block from=$xoops_rblocks}>
<{include file="default/theme_blockright.html"}>
<{/foreach}>
<!-- End right blocks loop -->
</td>
<{/if}>
</tr>
</table>
</body>
</html>
Now... if your test site still works, you have to create a frameset page, say main.html, with the following:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<head>
<title>Testing XOOPS Framed</title>
</head>
<frameset cols="20%, 80%" frameborder="no" border="0" framespacing="0">
<frame src="http://whateveryourxoopsrootis.any/index.php" id="lefty" scrolling="yes" noresize="noresize" />
<frame src="http://whateveryourxoopsrootis.any/aanythingbutuser.php" id="content" name="content" scrolling="no" noresize="noresize" />
</frameset>
<noframes><body>
No frames? Too bad.
</body></noframes>
</html>
If you log to your site after doing everything above, it'll look pretty bad. If you're already logged, it should look ok.
Make sure that the
id and
name values for your content frame is the same as what you have as target in your new templates.
What needs to be done:
make login work
find a nice way to include header/footer outside of the contents frame (pretty easy to put them in there as it is)
figure out how to update menus (e.g. add submenu items, show "for registered users only" items, etc., perhaps same problem as login)