声明:由于本人确实需要这些信息,又担心原网站挂掉,导致我无法维护自己系统,因此复制这些,如有侵权,请告知。感谢系统相关人员:
网址:http://os.opensns.cn/book/index/read/id/2.html
基础
基础知识
1.相关
2.开发环境的准备获取OpenSNS的方式很多,官方网站(http://www.opensns.cn/ )是最好的下载和文档获取来源。
官网提供了稳定版本的下载:http://www.opensns.cn/download.html
如果你希望保持最新的更新,可以通过github获取当前最新的版本(完整版)。
Git获取地址列表(你可以选择一个最快的地址):
Git git@OSChub: http://git.oschina.net/yhtt2020/OpenSNS-V2
OpenSNS基于这些出色的开源项目基础之上,排名不分先后,感谢作者的无私贡献。
前端及后端的UI框架 ZUI(Bootstrap的改进版本) less
PHP框架 (ThinkPHP)
系统要求:
PHP版本必须是5.3以上,因为框架使用到了namespace命名空间,5.2是不支持的。
Mysql版本5.0即可,一般虚拟空间和VPS搭建的都没有问题。
推荐集成环境:
1.Windows下强烈推荐使用phpstudy搭建集成环境,此外wamp也是不错的选择。编写代码则推荐使用PhpStorm,谁用谁知道~!
2.Linux下建议使用Lumanager,自带集成环境,可以方便地对网站进行管理。
1)PhpStorm破解方式
羞羞羞
安装完phpstudy与PhpStorm后开始安装系统
2)安装系统
下载所需版本的源码
解压文件到phpstudy的www目录下
将phpstudy启动
在浏览器中输入localhost
系统会自动定位到Install模块,开始安装程序。
根据安装向导开始安装程序
详细步骤见下方图解
3)常见问题集锦:
出现这类错误,一般是在安装的时候输入了错误的数据库信息。比如数据库的账号和密码
安装协议
环境监测
数据库及创始人信息填写
安装完成
3.PHP框架
openSNS是基于ThinkPHP框架
所以我们在开发过程之前先要对thinkphp进行一定程度的了解
开发者可以从thinkphp的开发手册(http://document.thinkphp.cn/manual_3_2.html)中详细了解其框架的机制与作用
4.CSS。JS框架
openSNS前端是基于zui框架和less框架完成的,
具体用法请参考zui官方站http://zui.sexy/#/与less官方中文站http://www.lesscss.net//
下面展示如何安装less在phpstorm上
1. 下载winless并安装
http://winless.org/
2. phpstorm- settings- file watchers –添加-less
3. 如图配置
Program :
C:\Program Files\Mark Lagendijk\WinLess\node_modules\.bin\lessc.cmd
Arguments :
"$FileDir$\$FileName$" "$FileDir$\$FileNameWithoutExtension$.css" --clean-css
不勾选 Create output file from stdout
Working directory:
$FileDir$
Output paths to refresh:
$FileDir$\$FileNameWithoutExtension$.css
5.版本控制
作为一个team中的一员,在共同开发一个项目的时候我们开发者是需要经常合作的,那么如何将两个或两个以上的程序员所编写的代码合并呢,我们就需要一个能够让我们合作开发的工具 ,我们选择了TortoiseGit 。
习惯 Tortoise 风格的用户,可以选择 TortoiseGit 安装包,安装后的右键截图安装。TortoiseGit 的下载地址为:http://code.google.com/p/tortoisegit/。
从 Windows 上安装“右键”Git 工具——TortoiseGit
网上tortoise git 的图文教程很多,开发者可以自行查阅。
让Git记住账号密码:
上图的setting(设置)中,编辑全局,加入两行代码,然后保存。
下次输入账号密码的时候,只需要输入一次,第二次就不需要再输入了。
[credential]
helper = store
6.重要知识点
1.常用机制:
1)配置项的获取
function modC($key, $default = '', $module = '')
此方法在Application/Common/Common/vendors.php中
* @param string $key 获取模块的配置
* @param string $default 默认值 必须项 后台设置后返回的是后台的值
* @param string $module 模块名,不设置用当前模块名例
modC('WEIBO_NUM',140,'WEIBO')
返回
具体模块配置字段可从相应模块中的controller后台配置config方法中找出
例:
2)用户资料的获取
function query_user($fields = null, $uid = null)
* @param $fields array|string 如果是数组,则返回数组。如果不是数组,则返回对应的值
* @param null $uid此方法在Application/Common/Common/user.php中
用例:
$k['user'] = query_user(array('uid', 'nickname', 'avatar32', 'avatar64', 'avatar128', 'avatar256', 'avatar512', 'space_url', 'icons_html', 'rank_link', 'signature', 'tox_money', 'title', 'weibocount', 'fans', 'following'), $k['uid']);
Query_user方法能返回member表中所有字段和ucenter_member中的所有字段
返回
3)消息机制
public function sendMessage($to_uids, $title = '您有新的消息', $content = '', $url = '', $url_args = array(), $from_uid = -1, $type = 0)
* @param $to_uids 接收消息的用户们
* @param string $title 消息标题
* @param string $content 消息内容
* @param string $url 消息指向的路径,U函数的第一个参数
* @param array $url_args 消息链接的参数,U函数的第二个参数
* @param int $from_uid 发送消息的用户
* @param int $type 消息类型,0系统,1用户,2应用此方法在Application/common/Model/MessageModel.class.php中
例:
D('Common/Message')->sendMessage(C('USER_ADMINISTRATOR'), "{$user['nickname']}发布了一个活动,请到后台审核。", $title = '活动发布提醒', U('Admin/Event/verify'), is_login(), 2);
public function sendMessageWithoutCheckSelf($to_uids, $title = '您有新的消息', $content = '', $url = '', $url_args = array(), $from_uid = -1, $type = 0)
* @param $to_uids 接收消息的用户们
* @param string $title 消息标题
* @param string $content 消息内容
* @param string $url 消息指向的路径,U函数的第一个参数
* @param array $url_args 消息链接的参数,U函数的第二个参数
* @param int $from_uid 发送消息的用户
* @param int $type 消息类型,0系统,1用户,2应用此方法在Application/common/Model/MessageModel.class.php中
例:
D('Common/Message')->sendMessage(C('USER_ADMINISTRATOR'), "{$user['nickname']}发布了一个活动,请到后台审核。", $title = '活动发布提醒', U('Admin/Event/verify'), is_login(), 2);
2.常用函数
1)缩略图的获取
function
thumb(
$cover_id
,
$width
= 100,
$height
=
'auto'
,
$type
= 0,
$replace
= false)
此方法在Application/Common/Common/function.php中
* @param
$cover_id
图片的ID
* @param int
$width
需要取得的宽
* @param string
$height
需要取得的高
* @param int
$type
图片的类型,qiniu 七牛,local 本地, sae SAE
* @param bool
$replace
是否强制替换
其中参数width不填则默认100;
2)发送信息
function
sendSMS(
$mobile
,
$content
)
* @param
$mobile
手机号码
* @param
$content
内容
* @
return
string
此方法在Application/Common/Common/vendors.php中
3)发送邮件
function
send_mail(
$to
=
''
,
$subject
=
''
,
$body
=
''
,
$name
=
''
,
$attachment
= null)
* @param string
$to
接收邮件者邮箱
* @param string
$name
接收邮件者名称
* @param string
$subject
邮件主题
* @param string
$body
邮件内容
* @param string
$attachment
附件列表
此方法在Application/Common/Common/vendors.php中
4)获得具有某个权限节点的全部用户UID数组,一般用于取得有管理权限的相关用户
/**获得具有某个权限节点的全部用户UID数组
* @param string $rule 要取得的rule的标识如Weibo/Index/addWeibo
* @return array 数组形式的UID集合
*/
function
get_auth_user(
$rule
=
''
)
3.常用Widget
1)Upload上传系列
在Application/Common/Widget文件夹中
UploadFileWidget 上传单个文件组件
UploadImageWidget 上传单个图片组件
UploadMultiFileWidget 上传多个文件组件
UploadMultiImageWidget 上传多个图片组件
用法示例:
class
=
"controls"
>
{:W(
'Common/UploadImage/render'
,
array
(
array
(
'name'
=>
'cover_id'
,
'id'
=>
'cover_id'
,
'value'
=>
$info
[
'cover_id'
])))}
调用结果页面显示:
2)调用用户头衔展示
在Application/Common/Widget文件夹中
UserRankWidget.class.php 用户头衔组件
{:W(
'Common/UserRank/render'
,
array
(
$uid
))}
调用结果页面显示:
3)关注
在Application/Common/Widget文件夹中
FollowWidget.class.php 关注组件
{:W(
'Common/Follow/follow'
,
array
(
'follow_who'
=>
$v
[
'uid'
]))}
调用结果页面显示:
4)分享
在Application/Common/Widget文件夹中
ShareWidget.class.php
{:W(
'Common/Share/detailShare'
)}
调用结果页面显示:
5)菜单
在Application/Common/Widget文件夹中
SubMenuWidget.class.php
{:W(
'Common/SubMenu/render'
,
array
(
$sub_menu
,
$current
,
array
(
'icon'
=>
'compass'
,
'title'
=>
'发现'
),
''
))}
调用结果页面显示:
6)编辑器
在Application/Common/Widget文件夹中
UeditorWidget.class.php
{:W(
'Common/Ueditor/editor'
,
array
(
'myeditor'
,
'content'
,
$post
[
'content'
],
'100%'
,
'350px'
,
$config
))}
调用结果页面显示:
4.二级导航的创建:还没出稿。