12月预定发布的PAILA! V0.1.7是一个全新的版本。大头贴部分简化成为底层平台,
用户可以在这个
基础上构建自己的图片/
视频/交友类网站。为了方便部分对
程序修改感兴趣的
用户,V0.1.7的开发手册将在
论坛进行不定期更新,保证与最新进度匹配。
V0.1.7 开发演示
服务器:
服务器关机
V0.1.7 预定初始化安装模块:大头贴基础平台、个人日志模块、视频(FLV)发布
系统、MTV模块。
一、基本结构
1.目录说明
include - 程序公用包含
文件,如
函数库、
数据驱动等的保存目录
function - 全站Javascript驱动程序保存目录
modules - 核心模块包,内部以文件夹的形式保存模块,每个文件夹为一个独立的模块
admin -
后台管理
UserData - 用户数据专用
templates - 系统模版(HTML)
templates/system - 后台管理等模版(不展示给普通用户的)
2.文件说明(./表示程序根目录)
./index.
php - 全站接入点
./admin.php - 全站管理接入点
./_
home.php -
首页显示模块内容配置文件
./include/config.php - 配置文件
./include/global.php - 全局包含文件,在任何文件运行前,都会包含此文件。SESSION初始化、分页初始化、欢迎信息等均在该文件内
二、模块概要
1.模块结构
每个模块分为驱动程序和显示模版。驱动程序放在modules/下以模块名命名的文件夹中。而显示模版则放置的templates下的
风格文件夹中,命名习惯为“模块名_驱动名.
html”,比如camera模块(官方大头贴模块)中输入大头贴信息的驱动为input_info.php,那么对应的显示模版则为camera_input_info.
html
2.文件约定
模块内专用的函数、
参数设置等均写在模块内部,以防止和主程序引起冲突。配置文件约定命名为_config.php,函数文件命名为_function.php。另外,一般会编写一个_global.php来做包含和公共数据处理。在_global.php中需要将以上两个文件包含,
代码为
require_once("modules/{$module}/_config.php");
require_once("modules/{$module}/_function.php");
而在每个驱动程序的开始,只要包含_global.php就可以了,这样一些统一处理的程序都可以写到_global.php里,则在整个模块均可生效(比如您要开发一个VIP会员模块,就可以在_global.php中增加会员级别判断,低等级的用户不能进入)
模块的数据处理程序,约定为submit.php,本模块所有的数据都提交到改页处理,然后再返回操作结果。您可以在您的
表单中增加mode
变量,来标识处理类型
<form action='index.php?module=camera&action=submit' method='post'>
<input type='hidden'
name='mode' value='new_photo'/>
以上表单在提交的时候,即可在submit中通过switch
语句,查找$_POST[’mode’]为new_photo的程序段来处理数据。
3.目录约定
模块的AJAX驱动,建议放到ajax目录下,对进行数据提交。而该模块对首页的调用文件,则放置在_home目录下
三、模块开发与配置
四、全站AJAX
为了方便用户进行开发,DIGG
功能、评论
功能、评分
功能全部以公共AJAX的形式调用,用户只需要提供相应接口后,把对应文件包含进来即可。
1. DIGG功能
必要HTML对象:
任意,比如您想让某按钮实现DIGG功能,则只要给改按钮写如onclick属性为settop()即可,例如
<input type='button' value='顶它一下' onclick='settop()'/>
实现变量:
var module='{$module}';
var digg_ok='{$lang['video']['video_settop_ok']}';
var digg_mode="settop";
其中module是当前模块名,系统会
自动生成,digg_ok为用户成功操作后的提示(上例中是显示video模块
语言包中video_settop_ok这个语句),如果不成功,则会弹出对应的错误信息。digg_mode是对应submit.php中的处理标识。
实现以上两个变量后,只要在后面写入以下代码:
<script language='
javascript' type='text/
javascript' src='function/js/digg.js'></script>
而相关的处理程序则写在该模块的submit.php中对应mode块完善即可。
2.评分功能
必要HTML对象
<span style='display:block;float:left;width:auto;margin-top:5px'>
<img id='star_0' class='rating_star' onMouseOver='showStar(this);' onClick='startRating(this);' src='{$template}/images/star.gif'>
<img id='star_1' class='rating_star' onMouseOver='showStar(this);' onClick='startRating(this);' src='{$template}/images/star.gif'>
<img id='star_2' class='rating_star' onMouseOver='showStar(this);' onClick='startRating(this);' src='{$template}/images/star.gif'>
<img id='star_3' class='rating_star' onMouseOver='showStar(this);' onClick='startRating(this);' src='{$template}/images/star.gif'>
<img id='star_4' class='rating_star' onMouseOver='showStar(this);' onClick='startRating(this);' src='{$template}/images/star.gif'>
</span>
<span id='bt_allow_rating' style='{$want_rating_display}float:left;width:auto;margin-left:10px;cursor:pointer' onclick='allowRating()'>
我要评分
</span>
实现变量:
var targetid="{$aid}";
var ctype="{$CTYPE}";
var alert_login='{$lang['camera']['album_comments_alert_login']}';
var template='{$template}';
var rating_ok='{$lang['camera']['album_rating_ok']}';
其中targetid为评论的对象id,比如评论某个相册,那么这里就显示相册的id。ctype为评论种类标识,目前系统已使用的标识本文结尾有说明。alert_login是用户在没有登录的情况下点了“我要评分”所给出的提示信息,template为系统模版路径,无须修改。rating_ok是评分成功后的提示信息。
实现以上变量后,只需要写入以下代码即可实现评分和自动读取评分功能
<script language='javascript' type='text/javascript' src='function/js/rating_and_comments.js'></script>
3.评论功能
必要HTML对象
<!-- 评论发表 -->
<div style='display:block' id="send_comments_box">
<p class='window_left'>
<p class='window_top' style="width:670px;">
<span class="left_title">
<span class="left_title_main">{$lang['video']['video_comments_title']}</span>
</span>
</p>
<p class='window_right'>
<p class='window_body' style="width:680px; height:auto;text-align:center">
<textarea id='comments_input' name='say' style="width:650px;height:100px;margin:10px 0 0 10px;border:solid 1px #DDD"></textarea>
<input type='button' class='mybutton' value='{$lang['video']['video_comments_send']}' style="margin-top:10px;width:120px"/>
</p>
<p class='window_left_b'>
<p class='window_bottom' style="width:670px;">
<p class='window_right_b'>
<div class='div_clear'></div>
</div>
<!-- 评论列表 -->
<p class='window_left'>
<p class='window_top' style="width:670px;">
<span class="left_title">
<span class="left_title_main">{$lang['video']['video_comments_list']}</span>
</span>
</p>
<p class='window_right'>
<p class='window_body' style="width:680px; height:auto;text-align:center">
<em id='comments_box'>
Loading...
</em>
</p>
<p class='window_left_b'>
<p class='window_bottom' style="width:670px;">
<p class='window_right_b'>
<div class='div_clear'></div>
<div id="pageinfo">
</div>
评分功能一般和评论功能一起出现,只需要在评分的变量基础上增加以下变量即可:
var alert_input='{$lang['camera']['album_comments_alert_input']}';
alert_input是要求用户输入评论内容的提示信息。