I've found, that both plugins are a bit sloppy regarding the detection of member pages. For Register_XH it's enough to have an arbitrary CMSimple Script on the page and the bare text "access(" to cause hiding the page (if hide_pages is set to 'true'). In Memberpages_XH 2.x that's basically the same. For Memberpages_XH 3.0-concept it's even enough to have the bare text "member(...)" on the page to make it a member page.
I suggest to check, if the member function is written as CMSimple scripting or plugin call. This might be done for Memberpages_XH 3 in the following way:
Code: Select all
//hide memberpages unless a member is logged in or it is edit or adm mode
if(!($edit && $adm))
{
// if($plugin_cf['memberpages']['hide_pages'])
// {
for($i = 0; $i < $cl; $i++)
{
if(strpos($c[$i],'member('))
{
if (preg_match('!(?:#CMSimple |{{{PLUGIN:)member\((.*?)\);(?:#|}}})!i',$c[$i],$matches))
{
if(trim($matches[1],"\"'")) {
$access_level = trim($matches[1],"\"'");
unset($_SESSION['page']);
if($plugin_cf['memberpages']['exactmode']) {
if(!isset($_SESSION['accesslevel'])
|| $_SESSION['accesslevel'] != $access_level)
{
$c[$i] = '#CMSimple hide#';
}
} else {
if(!isset($_SESSION['accesslevel'])
|| $_SESSION['accesslevel'] < $access_level)
{
$c[$i] = '#CMSimple hide#';
}
}
} else {
if(!isset($_SESSION['accesslevel']))
{
$c[$i] = '#CMSimple hide#';
}
}
}
}
}
// }
}
IMHO it would be even better to set the access groups resp. level via a page tab, but that might not be the best idea as long as content.htm and pagedata.php are prone to desynchronization.
Christoph