SNS基础

声明:由于本人确实需要这些信息,又担心原网站挂掉,导致我无法维护自己系统,因此复制这些,如有侵权,请告知。感谢系统相关人员:

网址:http://os.opensns.cn/book/index/read/id/2.html

基础

基础知识

1.相关

获取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)

2.开发环境的准备

系统要求:

    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启动

SNS基础_第1张图片 

在浏览器中输入localhost

系统会自动定位到Install模块,开始安装程序。

根据安装向导开始安装程序

详细步骤见下方图解

3)常见问题集锦:

SNS基础_第2张图片

出现这类错误,一般是在安装的时候输入了错误的数据库信息。比如数据库的账号和密码

 

    

 

SNS基础_第3张图片 、

安装协议

SNS基础_第4张图片 

环境监测

SNS基础_第5张图片 

数据库及创始人信息填写

SNS基础_第6张图片 

安装完成

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

SNS基础_第7张图片

5.版本控制

作为一个team中的一员,在共同开发一个项目的时候我们开发者是需要经常合作的,那么如何将两个或两个以上的程序员所编写的代码合并呢,我们就需要一个能够让我们合作开发的工具 ,我们选择了TortoiseGit 

习惯 Tortoise 风格的用户,可以选择 TortoiseGit 安装包,安装后的右键截图安装。TortoiseGit 的下载地址为:http://code.google.com/p/tortoisegit/。

从 Windows 上安装“右键”Git 工具——TortoiseGit

SNS基础_第8张图片

网上tortoise git 的图文教程很多,开发者可以自行查阅。


让Git记住账号密码:

上图的setting(设置)中,编辑全局,加入两行代码,然后保存。

下次输入账号密码的时候,只需要输入一次,第二次就不需要再输入了。


SNS基础_第9张图片

SNS基础_第10张图片

[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方法中找出

例:

SNS基础_第11张图片 

 

 

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中的所有字段

返回

SNS基础_第12张图片 

 

 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.二级导航的创建:还没出稿。

你可能感兴趣的:(OpenSNS)