本帖最后由 阿喀琉斯 于 2009-4-19 22:48 编辑
想要做一个自己风格的HOME页,怎样与论坛程序无缝嵌合呢?要是用作网站首页(论坛在子目录下,非根目录)又该如何调整呢?可不可以再网站首页直接实现ajax的登录和注册,短消息的提示?
我的论坛在bbs子目录下,而非网站根目录。自从升级到7.0,用UCH取代了Supesite之后,网站首页基本上就闲置了,没有了内容(因为升级做奶爸了,非常忙非常累,一直没空改动,导致PR直接从3降至1),想要调用论坛的诸如新帖、精华等数据,又觉得js调用不尽人意。
看到《BBS不在根目录,Home页放到网站根目录做首页的方法》这篇帖子,深受启发,感谢一下作者weiDezh 先。
我的思路很简单,直接套用论坛程序的一些功能,放到网站默认首页,从而在首页就可以实现登录、注册、找回密码、注销、导航、短消息预览提示等基本功能,以及根据自己需要调用一些论坛数据,如新帖、热帖、会员排行等。
由于不懂php编程,所以我自己写不了高技术含量的代码,于是自己拿论坛程序的首页文件index.php修修改改,恰好也因为不懂编程,所以过程中充满乐趣,充分体验了DIY的吸引力。
去掉大部分不需要的功能之后(您也可以根据自己需要保留部分功能代码),我的index.php精简如下:- <?php
- chdir("bbs");
- require_once './include/common.inc.php';
- include template('homepage');
- ?>
复制代码 怎么样,够精简吧?只要一百多字节就可以调用所需的基本功能了。论坛自带的登录、注册的浮动窗口,短消息的预览提示,都可以在主页实现。
不过,由于logging.php的“退出”这一部分返回的是论坛首页,因此要在HOME页点“退出”之后直接返回的是网站首页,我又增加了一个action,如下:
- if($action == 'clearcookies') {
- if (is_array($_COOKIE) && (empty($discuz_uid) || ($discuz_uid && $formhash == formhash()))) {
- foreach ($_COOKIE as $key => $val) {
- dsetcookie($key, '', -86400 * 365, 0);
- }
- $groupid = 7;
- $discuz_uid = 0;
- $discuz_user = $discuz_pw = '';
- }
- dheader("Location: {$boardurl}");
- }
复制代码 这样子,也只增加到了四百多字节。用它来取代了论坛中的“退出”按钮的action。
当然,仅仅这样是不足以显示出您的主页页面的。上面的代码中,- include template('homepage');
复制代码 这一句表示调用了“homepage”这个子模板。
因此,我做了一个 homepage.htm 文件,放到论坛程序的模板文件目录里。放到默认目录就可以了,templates\default 这个目录里。
以后每次更新论坛的缓存,都会自动生成专供网站主页使用的homepage模板,由根目录下的index.php调用。
我的homepage.htm里面的基本内容如下:- <!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">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=$charset" />
- <title>这里是首页标题</title>
- <base href="{$boardurl}bbs/" /> <!--这里指定了网站首页调用的相对地址都自动加上“bbs”-->
- {subtemplate css_script}
- <link rel="stylesheet" type="text/css" href="../images/style.css"> <!--这里调用你自己首页效果的css”-->
- <script type="text/javascript">var STYLEID = '{STYLEID}', IMGDIR = '{IMGDIR}', VERHASH = '{VERHASH}', charset = '$charset', discuz_uid = $discuz_uid, cookiedomain = '$cookiedomain', cookiepath = '$cookiepath', attackevasive = '$attackevasive', allowfloatwin = '$allowfloatwin'</script>
- <script type="text/javascript" src="include/js/common.js?{VERHASH}"></script>
- </head>
- <body>
- <div id="append_parent"></div><div id="ajaxwaitid"></div> <!--这里是“正在加载中”的显示-->
- <div id="wrap">
- 您的首页内容就添加到这个DIV之中。可以对它的class通过自己的CSS进行重新定义。
- </div>
-
- {eval output();}
- </body>
- </html>
复制代码 以上就是homepage.htm的基本框架。您只需要把想要显示的内容,添加到ID为wrap的这个DIV里就可以了。
比如说,我想要在首页显示最新贴、新回复等内容,那么把论坛后台的调用代码放进去就行,如:- {eval request('聚合模块_新帖');}
复制代码 这样就可以显示出和论坛首页边栏一样的数据调用模块。后台所有的调用模块都可以放到首页,自定义模块也可以。
当然,显示效果需要在论坛后台的数据调用那里预先设置好。与首页的css配合显示。
除了论坛和UCH的数据调用,还可以加入自己的各种内容。界面的显示效果嘛,就主要看各自的CSS功底了。。
以上就是我自己琢磨的自制网站根目录HOME页的简洁方法。具体演示可以看我的主页:http://www.yelia.com 提供测试ID: 阿喀琉斯之怒 密码:123456789
不过由于奶爸我现在太忙了,具体内容都还没来得及认真规划设计,所以给您看的就只是一个简陋的例子,和论坛完全一样的浮动注册、登录、导航窗口,短消息的预览提示,可以通用的数据调用模块,等等。完全由论坛程序自身来实现,无需自己编程。
补充说明:
一、千万不要被我的网站首页的简陋吓退,我还没来得及整理呢。提供的是一个简洁的框架,您只要把您的内容放进去就可以了,用您自己的css,设计您自己的个性界面。即使不懂html和css设计的朋友,也可以套用现成的html静态模板,来实现自己的首页。网络上的html静态模板现在很多哈!
二、由于在IE浏览器下,“导航”那一部分无法给链接自动添加“bbs”的子目录,但在firefox、chome等浏览器下是正常的,而我不想对程序改动过多,所以我在IE浏览器下隐藏了“导航”这个链接,您不妨用firefox等测试一下它的效果。
三、要直接在首页实现登录、注册等ajax功能,需要在论坛后台里开始“浮动窗口”这一功能,否则会跳转到logging.php来进行了。
四、可以把登陆和注册的快速跳转代码,都加入到论坛后台的“直接/快速跳转的信息”里面,这样,首页点“退出”之后没有跳转页面,直接返回首页。
我是不懂php编程的,所以上面的代码也许难免有不尽如人意的地方,但是绝对绿色、安全、无害,不妨一试!
补充:
参考论坛模板目录下的header.htm,可以得到标准链接如下:
- <a href="$regname" onclick="floatwin('open_register', this.href, 600, 400, '600,0');return false;" class="noborder">注册</a>
- <a href="logging.php?action=login" onclick="floatwin('open_login', this.href, 600, 400);return false;">登录</a>
- <a hideFocus onclick="floatwin('open_nav', this.href, 600, 410);return false;" href="misc.php?action=nav">导航</a>
- <a href="pm.php" id="pm_ntc"<!--{if $newpm && $_DCOOKIE['pmnum']}--> onmouseover="pmviewnew()" class="new" title="{lang pm_new}"<!--{/if}--> target="_blank">短消息<!--{if $newpm && $_DCOOKIE['pmnum']}--><span>($_DCOOKIE[pmnum])</span><!--{/if}--></a>
复制代码 等等与论坛完全一致的浮动窗口显示,以及“隐身/在线”转换的代码,直接在homepage.htm里应用即可。 |