SNS基础

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

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

系统机制

开启调试模式

1.在OpenCenter中开启调试模式,只需要将/index.php中

define ( 'APP_DEBUG' , true);

将此处设为true即可。

开启调试之后将关闭模板缓存,会大幅降低程序的运行速度。

开启调试之后,空白的广告位会显示占位符。


2.开启页面trace,跟踪错误

【后台】-【系统】-【网站配置】-系统配置-是否显示页面Trace(是否显示页面Trace信息)

选择  开启  

保存


3.调试中的变量输出

php文件中 

dump( $xxx )

模板文件中

{:dump( $xxx )}


SEO规则

在控制器中允许开发者设置页面的titlekeywordsdescription

如果需要SEO规则即时生效,必须清空全站缓存!否则设置无任何效果。

注意,写法需要按照SEO说明中的形式书写,因为系统对此处进行了永久性的缓存。而缓存仅针对当前页面的控制器信息,并不会根据当前页面的参数来调整。也就是说,缓存的是规则,不是实际的信息。

正确的缓存方式应该为

 

最常见的错误的缓存方式

 

详情请参考用户手册中seo设置。

SEO的优先级为:

后台SEO中设置的(应用名称,控制器,方法)三属性全的seo规则>控制器中setTitle等方式设置的规则>后台SEO中设置的三属性不全的SEO规则。

 

只要seo规则中,找不到三属性对应的seo规则,系统就会用程序控制器中的setTitle来设置规则。如果程序控制器中set的某个规则为空,会使用三属性不全的seo规则来填充。

左侧为三属性全的,右侧为三属性不全的

          


前台模块子导航响应式导航自动生成Widget

注:本文版本较老,适用于V1版本,部分适用于V2版本,建议阅读SubMenuWidget最新代码


鉴于子导航内的导航在v1的开发过程中,因为程序员对bs的理解不够深入,产生了多个不符合规范的导航,所以在v1.0.2之后的开发版中,新增了一个专门用于子导航生成的widget——SubMenuWidget,该组件最早被用于博客模块。

组件特性:

1.支持二级导航

2.支持左右两栏

3.支持小图标

4.支持选中状态

一般的导航场景只需要使用SubMenuWidget即可使用。程序员无需再写前台代码,此思想有点类似adminbuilder

 

组件调用方式:

Widget调用与普通组件无异

例如在博客中,只需如下调用

{:W('Common/SubMenu/render',array($sub_menu,'home','博客',''))}

参数1:菜单数据来源

参数2:当前选中项,对应数据源定义的tab,组件会自动点亮对应tab的顶级导航

参数3:当前模块名

参数5:导航栏ID,一般情况下留空即可

 

其他的应该都好理解的,这里重点讲一下数据源的定义

在组件中,官方定义了一个$tpl作为数据源的例子。如果不确定或者忘记定义方式,可以将此变量名改为menu_list,前台不需要传递数据源就能看到一个导航菜单的例子。

Application\Common\Widget\SubMenuWidget.class.php

 $tpl = array(

            'left' =>

                array(

                    array('tab' => 'home', 'title' => '顶级菜单A', 'href' => U('blog/index/index'), 'icon' => 'home'),

                    array('tab' => 'category_1', 'title' => '顶级菜单B', 'href' => U('blog/article/lists', array('category' => 1))),

                    array('tab' => 'chuangye', 'title' => '顶级菜单C', 'href' => U('blog/article/lists', array('category' => 42)),

                        'children' => array(

                            array('tab' => 'child_1', 'title' => '子菜单1', 'href' => U('blog/index/index'), 'icon' => 'home'),

                            array('tab' => 'child_2', 'title' => '子菜单2', 'href' => U('blog/article/lists', array('category' => 1)))

                        )

                    )

                ),

            'right' =>

                array(

                    array('tab' => 'user', 'title' => '用户', 'href' => U('blog/index/index'), 'icon' => 'user',

                        'children' => array(

                            array('tab' => 'child_1', 'title' => '个人中心', 'href' => U('blog/index/index'), 'icon' => 'home'),

                            array('tab' => 'child_2', 'title' => '注销', 'href' => U('blog/article/lists', array('category' => 1)))

                        )

                    ),

                    array('title' => '我的财富:20'),

                    array('title' => '我的订单', 'href' => U('blog/article/lists'))

                )

        );

 

如上代码所示,该代码段定义了如下一个示例导航

 

数据结构是由数组定义的,结构如下

+Sub_menu

+left

+顶级菜单项(tab,title,href,icon

-二级菜单项

-right

+顶级菜单项(tab,title,href,icon

-二级菜单项

看完之后,可以将tpl改回tpl,这样组件可以接收前台的数据源。

我们强烈建议数据源的定义放在 模块名Index_initialize函数中。可参考Blog模块。

Application\Blog\Controller\BlogController.class.php

 $sub_menu =

            array(

                'left' =>

                    array(

                        array('tab' => 'home', 'title' => '首页', 'href' => U('blog/index/index')),

                    ),

            );

        $category = D('Category')->getTree();

        $this->assign('categories', $category); //栏目

        foreach ($category as $cat) {

            $sub_menu['left'][] = array('tab' => 'cat_' . $cat['id'], 'title' => $cat['title'], 'href' => U('blog/article/lists', array('category' => $cat['id'])));

        }

        $this->assign('sub_menu', $sub_menu);

示例代码定义了一个简单的导航效果如图

 

官方建议在此做上缓存,因为导航在每个页面都需要调用。


点赞插件的使用

{:Hook( 'support' , array ( 'table' => 'weibo' , 'row' => $weibo [ 'id' ], 'app' => 'Weibo' , 'uid' => $weibo [ 'uid' ],’jump’=>’no’))}

需要注意的是,app一般填写调用的应用名

table一般填写有需要赞的对象所在的表

row一般填写所赞对象的id

jump一般填写no,则表示点击消息跳转的链接为来源链接,如果不填写此变量,则默认会跳转到一个约定的URLURL生成规则如下

U($appname . '/Index/' . $table . 'Detail', array('id' => $row))

app=Weibo  table=weibo row=1

则生成 U(‘Weibo/Index/weiboDetail’,array(‘id’=>1));


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值