解决:OneThink 站点无法被友言uyan后台识别
打开友言uyan插件功能,但OneThink站点无法被友言uyan后台检测到。页面生成的uyan代码为:
<span>1</span> <span><!--</span><span> UY BEGIN </span><span>--></span> <span>2</span> <span><</span><span>div </span><span>id</span><span>="uyan_frame"</span><span>></</span><span>div</span><span>></span> <span>3</span> <span><</span><span>script </span><span>type</span><span>="text/javascript"</span><span> src</span><span>="http://v2.uyan.cc/code/uyan.js?uid="</span><span>></</span><span>script</span><span>></span> <span>4</span> <span><!--</span><span> UY END </span><span>--></span>
你会发现uid并没有被设置。查看\Addons\SocialComment\comment.html中加载友言uyan的代码。
<span>1</span> <span><!--</span><span> UY BEGIN </span><span>--></span> <span>2</span> <span><</span><span>div </span><span>id</span><span>="uyan_frame"</span><span>></</span><span>div</span><span>></span> <span>3</span> <span><</span><span>script </span><span>type</span><span>="text/javascript"</span><span> src</span><span>="http://v2.uyan.cc/code/uyan.js?uid={$addons.config.comment_uid_youyan}"</span><span>></</span><span>script</span><span>></span> <span>4</span> <span><!--</span><span> UY END </span><span>--></span>
你会发现变量 $addons.config 错误,应为 $addons_config。
解决方案:将 $addons.config 改为 $addons_config。
参考资料:
onethink插件是如何具体运行的 http://jingyan.baidu.com/article/8275fc86b4226146a03cf6d7.html
OneThink里面的钩子初始化到运行的流程 http://www.thinkphp.cn/topic/13867.html
onethink beta1 插件完整文档 http://www.thinkphp.cn/topic/7058.html
模板渲染(更改VIEW模板文件)
模板定义后就可以渲染模板输出,系统也支持直接渲染内容输出,模板赋值必须在模板渲染之前操作。
渲染模板输出最常用的是使用display方法,调用格式:
display('[模板文件]'[,'字符编码'][,'输出类型'])
如果没有按照模板定义规则来定义模板文件(或者需要调用其他控制器下面的某个模板),可以使用:
<span>1</span> <span>$this</span>->display('Member:read');
表示调用Member模块下面的read模板。渲染输出不需要写模板文件的路径和后缀,确切地说,这里面的控制器和操作并不一定需要有实际对应的控制器和操作,只是一个目录名称和文件名称而已。
参考资料:模板渲染 http://document.thinkphp.cn/manual_3_2.html#template_display
OneThink中默认左侧Navigation
页面左侧Navigation是在\Application\Home\View\default\Public\body.html中定义的:
<span>1</span> <span><</span><span>div </span><span>class</span><span>="span3 bs-docs-sidebar"</span><span>></span> <span>2</span> <span><</span><span>block </span><span>name</span><span>="publish"</span><span>></</span><span>block</span><span>></span> <span>3</span> <span><</span><span>ul </span><span>class</span><span>="nav nav-list bs-docs-sidenav"</span><span>></span> <span>4</span> <span> {:W('Category/lists', array($category['id'], ACTION_NAME == 'index'))} </span><span>5</span> <span></</span><span>ul</span><span>></span> <span>6</span> <span></</span><span>div</span><span>></span>
其中 {:W('Category/lists', array($category['id'], ACTION_NAME == 'index'))} 是调用一插件(Widget),其在\Application\Home\Widget\CategoryWidget.class.php中定义。
ACTION_NAME 是ThinkPHP一常量,表示“当前操作名”。
参考资料:OneThink前台模板展现的几种方式 http://www.7ak8.com/a/wangzhankaifa/PHP/2015/0109/1176.html