Xoops菜单

来自站长百科
跳转至: 导航、​ 搜索

导航: 上一页 | 首页 | DedeCMS | 帝国CMS | Drupal | PHPCMS | PHP168 | Joomla | PowerEasy | SupeSite

导航菜单[ ]

Xoops中的导航菜单是整合在内核里的,所以不能随意更改它。所有的模块都会在导航菜单里添加一个模块首页(通常叫"index page")的链接,这些链接都以模块名作为链接名。但是你通过一点小技巧可以在导航菜单里添加一些新的链接。

如何改变导航菜单中模块链接的名字[ ]

要改变导航菜单中模块链接的名字你必须改变模块的名字 。在 系统设置-> 模块管理 中找到你要改名的模块然后更改表单中的模块名,点击更新,导航菜单中的模块链接名将会变成新的名字。

如何改变导航菜单中的排序[ ]

要改变导航菜单中的排序在 系统设置 -> 模块管理 中找到“排序 (0 = 不在导航菜单中出现)“ 栏。数字由低到高代表了链接出现在导航菜单中的顺序。 为每个模块设置相应的数字然后点提交。为了以后添加更多模块的方便在设置数字时你可以设置不连续的数字,例如4、6、8等等。

如何在导航菜单中隐藏已安装模块的链接[ ]

要在导航菜单中隐藏已安装的模块链接在 系统设置 -> 模块管理 中找到想隐藏的模块的“排序 (0 = 不在导航菜单中出现)“ 栏,把“1“改为“0“ 。 虽然模块还是启动状态,但链接不在导航菜单中出现。

如何添加自己的链接到导航菜单中[ ]

你必须首先编辑 系统设置->模板管理->系统-> system_block_mainmenu.html 文件。

要编辑这个文件你必须要修改 template 模版文件。而 default template (XOOPS 默认模板)不能被编辑。如果你正在使用XOOPS 默认模板你需要点"复制"然后在 一般设置 中把复制的模版设为默认模版。你可以任意命名这个复制的模版。如果你没有做任何命名,Xoops将为其添加一个默认名字。

如果你使用的是其他的布景,那也通常是使用了default template(XOOPS 默认模板),如果不是,你下载的布景文件应该含有一个扩展名为"tar.gz"的压缩文件。(上传后将为布景创建一个新的模版)

有些模块需要你点击"生成"来创建一个可以编辑的文件。这些需要编辑的文件被红色标注。 你在 一般设置 中设置好默认模版风格后,继续到 系统设置-> 模板管理 --你的默认模版后面会有一个勾。然后找到"系统设置" 点 "列出"

在这里你将找到 system_block_mainmenu.html 文件

点"编辑"

这个文件应该看起来像这样:

<table cellspacing="0">
<tr>
<td id="mainmenu">
<a class="menuTop" href="<{$xoops_url}>/"><{$block.lang_home}></a>
<!-- start module menu loop -->
<{foreach item=module from=$block.modules}>
<a class="menuMain" href="<{$xoops_url}>/modules/<{$module.directory}>/"><{$module.name}></a>
<{foreach item=sublink from=$module.sublinks}>
<a class="menuSub" href="<{$sublink.url}>"><{$sublink.name}></a>
<{/foreach}>
<{/foreach}>
<!-- end module menu loop -->
<a class="menuMain" href="<{$xoops_url}>/aboutbournemouth.html">Bournemouth</a>
<a class="menuMain" href="http://www.xoops.org">Xoops CMS</a>
</td>
</tr>
</table>

注意在后我加了几行,如

<a class="menuMain" href="<{$xoops_url}>/aboutbournemouth.html">Bournemouth</a>
<a class="menuMain" href="http://www.xoops.org">Xoops CMS</a>

第一行提供了一个本站内的链接

第二行提供了一个到其他站点的链接,如果你需要在新的窗口打开链接请加上 target="_blank" 如

<a class="menuMain" href="http://www.xoops.org" target="_blank">Xoops CMS</a>

(记住使用和你现在使用的模版一样的"class",这些class在你使用的布景的文件家里的style.css中被定义)

这些HTML代码需要加在"module menu loop"之外,你也可以加在""之前,这样这些链接就出现在导航菜单的顶部。

如何对未注册用户隐藏子菜单

每个模块都在该模块文件根目录中的 xooops_version.php文件中定义了相关的子菜单。

例如想要在新闻模块中对游客隐藏发布新闻子菜单,找到如下代码:

// Menu
$modversion['hasMain'] = 1;
global $xoopsUser;
if(!empty($xoopsUser)) {
$group = $xoopsUser->getGroups();

if (in_array(2, $group)) { //or other group-IDs
$modversion['sub'][1]['name'] = _MI_NEWS_SMNAME1;
$modversion['sub'][1]['url'] = "submit.php";
}
}
$modversion['sub'][2]['name'] = _MI_NEWS_SMNAME2;
$modversion['sub'][2]['url'] = "archive.php";

用这段代码游客就只能看到按月归档子菜单了

注意这一行

if (in_array(2, $group)) { //or other group-IDs

group 2 = 注册用户

group 1 = 网站管理员

在写这个的时候我得知下个版本的新闻模块将包含这个功能。

如何在自定义区块中加入子菜单[ ]

这节需要对HTML有一些了解。.

我一直在找一个能够通过自定义区块创建一个包含菜单和子菜单的 HTML 区块,也有人在看过这个网站(这里)后问我它是怎么做的。

我想他们应该是在一个位置使用了很多不同的区块。

因为 Xoops 有灵活的区块安排能力,要做到这样并不困难。

首先,为你首页创建一个自定义区块。首页是你为 Xoops 设置的默认页面,例如"新闻"或"无"(如果你不想一开始就载入模块)。

为了加入你想要的链接,在 系统管理 -> 区块管理 中新建一个自定义区块,插入和下面类似的 HTML 代码。你需要在找到 系统设置-> 模板管理 中找到 系统 ,点击“列表”,再点击 system_block_mainmenu.html 右边的“编辑”,找到你正在使用的样式表的"类"。

这里可看到你正在使用的模版类,如果你希望和网站的其他导航区块协调一致,这些类将非常有用。这些子菜单类还将包含子菜单缩进的定义,我的 x2t 模版使用 "menuMain"和"menuSub"。 这些类和你的风格主题文件夹中的样式表有关。(style.css)

在 系统管理->区块管理 中创建一个自定义区块,为它命名并让他显示在首页,然后用类似下面的HTML代码插入你自己的路径和链接。

<div class="blockContent">
<table cellspacing="0" width="100%">
<tr>
<td id="mainmenu">
<a class="menuTop" href="http://www.macambridge.com/">Home</a>
<a class="menuMain" href="http://www.macambridge.com/modules/mypage/">My Home Town</a>
</td>
</tr>
</table></div>

起初设置这个区块仅显示在首页,稍后如果需要,你可以选择其他的页面或者模块。

"modules/mypage" 链接的是一个我自制的单页面模块,用来在 Xoops 中装载一个 HTML 页面。自制一个单页面的HTML模块非常容易,你可以按自己愿望任意为它们命名。我已经作了一个带使用说明的下载,只要改变其中两行就可以得到任何数量的拷贝。

http://www.macambridge.com/mypage.zip

使用这些模块的好处是你可以在 Xoops 区块系统中选择它们在哪些页面中可见,因为模块是否显示是可选的。当然如果你愿意,可以创建另一个相同名字的区块,链接到一个已存在模块。

现在我们来为目标页面创建一个展开的子菜单。

用相同的名字在相同的位置创建另一个区块,并设置在目标页面可见.例如"My Home Town"

注意:如果你想要让区块在多个模块内可见,则在创建区块的时候按住 CTRL 来选择多个模块,也可以编辑一个已有的区块重新选择在哪些模块中显示。

用类似下面的代码插入你的链接:

<div class="blockContent">
<table cellspacing="0" width="100%">
<tr>
<td id="mainmenu">
<a class="menuTop" href="http://www.macambridge.com/">Home</a>
<a class="menuMain" href="http://www.macambridge.com/modules/mypage/">My Home Town</a>
<a class="menuSub" href="http://www.macambridge.com/modules/mypage/../../ modules/wfsection/article.php?articleid=3">Dorset</a>
<a class="menuSub" href="http://www.xoops.org" target="_"blank">Xoops</a>
</td>
</tr>
</table></div>

注意这里包含了一个外部链接,我也可以加入任何其他模块,文章或者页面的链接。

还要注意这行的格式,你可能需要这样的格式来链接其他模块文件夹里的内容。 (本例包含两级下拉菜单)

<a class="menuSub" href="http://www.macambridge.com/modules/ mypage/../../modules/wfsection/article.php?articleid=3"> Dorset</a>

下一步,我为每个需要显示子菜单的页面或者模块创建各自不同的子菜单区块,并以相同的名字命名,安排在相同的位置。而让没有子菜单的区块同时显示在多个页面(在区块管理中点击最右边的“编辑”)。

记住用同一个名字为这些区块命名,把它们放在同一位置(由XOOPS 分配的ID号不同),并为群组设置适当的权限。

这个方法实际只是在欺骗眼睛,你创建了许多不同的区块,其中的一些区块有比初始区块有更多的链接。