个人工具
名字空间
变换
操作

CMSware动态应用Publish

来自站长百科
跳转到: 导航, 搜索

导航:返回上一页

动态应用是指思维(CMSware)涉及到的评论、投稿、搜索、下载、计数、外部缩图、js调用等应用

Publish下各配置文件说明

  • publish目录配置 config.php

(1) :默认publish目录位于{cmsware}/publish,如果你移动了publish目录,请从新设置publish/config.php

修改define('ROOT_path', '../'); //定义思维(CMSware)系统根目录,将'../'改为相对思维(CMSware)根目录的相对路径,下面是两种最常见的情况的设置举例

情况一:

/cmsware
/www/publish

则修改为define('ROOT_path', '../../cmsware/');

情况二:

/cmsware
/publish

则修改为define('ROOT_path', '../cmsware/');

注意:这个路径不可以用全局变量来替换;目录名后面要加"/";如果您使用了和publish相关的模版变量,修改配置文件后也要在“模版变量管理”修改变量,然后做一次整站更新。

(2)设置页面自动刷新的缓存时间

$INDEX_SETTING = array(
'cache_time'=> 3600*24, //节点首页缓存刷新时间(秒)
);

$CONTENT_SETTING = array(
'cache_time'=> 3600*24, //内容页缓存刷新时间(秒)
);

(3)如果在调用publish下的任何一个php文件时都发生500内部服务器错误,报错类似

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that 
may have caused the error. More information about this error may be available in the server error log.

则请把publish/.htaccess这个文件删除或改名,就可正常,这只会发生在某些配置环境中

  • 下载配置 download.config.php

说明 :

  1. define('_TableID', 2); // 下载系统模型TableID,一般不需要修改,默认是“2”,
  2. define('_Protect_Link', false); //默认不防盗链,如果你需要防止盗链,则设为true
  3. define('_Domain', "www.cmsware.net"); //请将“www.cmsware.net”修改为你的主机名称,如“www.sina.com“,当_Protect_Link设为true时,用户必须通过这个域名访问才能正常下载。
  4. $_DIE_INFO = "你下载的软件来自<a href=http://"._Domain.">"._Domain."</a>,请直接访问<a href=http://"._Domain.">"._Domain."</a>来下载该软件,谢绝外链!";
  • js调用配置 js.config.php

说明:JS 调用使用方法


动态发布的使用

CMSware的动态发布采用了先进的缓存机制,其效率是一般动态系统的10倍以上。用于一般性发布时,动态发布可以根据缓存设置自动刷新页面,不必像静态发布那样每次添加完文章都手动刷新栏目首页;结合会员通行证系统还可以实现访问授权,让特定用户只访问特定的授权页面。

一、动态发布的应用场合

在以下情况下我们的推荐您使用动态发布:

需要实时刷新的页面,比如列表页、结合CMS_SQL实现对各类论坛的动态调用、RSS 调用:一般的企业站点;需要权限控制的页面

二、动态发布结点的建立

在站点管理-新建结点时,发布模式选择动态发布,选择好模版(动态发布必须要有相关的专用模版配套,直接使用现在为静态发布设计的模版将无法实现权限控制)。

动态发布设置->结点首页入口URL 填写为:

  • (php支持pathinfo时)Apache环境下:
http://publish目录位置/index.php/{NodeID},{Page}.htm
  • (php不支持pathinfo时)IIS及其它环境下:
http://publish目录位置/index.php?nodeid={NodeID}&page={Page}

比如我的publish目录没有改动过、为默认值,CMSware安装在站点根目录的CMSware目录,则结点首页入口URL为:

  • (php支持pathinfo时)Apache环境下:
http://www.lonmo.com/cmsware/publish/index.php/{NodeID},{Page}.htm
  • (php不支持pathinfo时)IIS及其它环境下:
http://www.lonmo.com/cmsware/publish/index.php?nodeid={NodeID}&page={Page};

动态发布设置->内容页首页入口URL 填写为:

  • (php支持pathinfo时)Apache环境下:
http://publish目录位置/content.php/{IndexID},{Page}.html
  • (php不支持pathinfo时)IIS及其它环境下:
http://publish目录位置/content.php?id={IndexID}&page={Page}

如,Apache环境下:

http://www.lonmo.com/cmsware/publish/content.php /{IndexID},{Page}.html
  • (php不支持pathinfo时)IIS及其它环境下:
http://www.lonmo.com/cmsware/publish/content.php?id={IndexID}&page={Page}

注:

(1)在不支持pathinfo时,用“?”带参数的形式,参数名要小写,即indexid={IndexID}。也就是 “nodeid={NodeID}&page={Page}”这里着重标出的nodeid={NodeID}&page={Page}项目要小写。如果遇到“Invalid IndexID”这类报错,请着重检查大小写。

(2)示例中的“publish目录位置”或者建立好结点后默认的publish目录位置在使用中请修改成您自己的实际publish 目录位置,

(3)动态发布的入口index.php和content.php都可以加自定义参数的,除了默认的参数外,还可以加Custom1到 Custom5一共5个参数,用来传入不同参数让动态处理不同的需求。 如

index.php?nodeid=5&page=0&Custom1=美女

写成pathinfo就是

index.php/5,0,美女.html

可以在模版中直接用$Custom1来引用,比如用来当搜索条件。用 pathinfo的写法时,一定要按顺序

(4)动态发布默认是带缓存的,如果要使用不带缓存的,请使用index_nc.php作为首页入口文件、 content_nc.php作为内容页入口文件

三、动态发布实现访问时的权限控制

目前,动态发布的权限控制必须和会员通行证系统结合起来用。配置好会员通行证系统接口,说明见会员通行证系统使用方法。

补充:

(1)动态发布页面底部会输出这样的调试信息 “Processed in 0.195240 second(s), 24 queries, 1 cached”,如果不想要这些信息直接把publish/debug.php换成一个空文件即可

(2)动态发布页面的模版分页代码与静态发布的有所区别,见文章列表分页调用

(3)利用动态发布功能实现不可能分页的页面的分页

总体思想就是利用动态发布的预留get变量和ktemplete模版类语法实现原先不可能实现分类的页面的分页,当然还可以实现其他的一些以前不能得动态功能

动态发布一共预留了5个变量名:$Custom1,$Custom2。。。。$Custom5

可以用get的形式进行提交,下面我们就举一个在内容页中List列表分页的例子,其中$ActionDir 为自己定义的模版变量,也就是原publish所在;$Custom1为每页调用数量,$Custom2为页数,当然你要是固定了条数可以去掉一个:

<CMS action="LIST" return="List" NodeID="all-11" Num="" Cache="1" where="c.Style='{$NodeInfo.NodeName}' "/> <!-总调用区间-->

<op exp="$amount=sizeof($List)" /> <!--计算list数量-->


<!--计算总页数-->
<if test="$amount < $Custom1">
<op exp="$page_count = 1" />
</if>
<if test="$amount % $Custom1 ">
<op exp="$page_count = (int)($amount / $Custom1) + 1" />
<else>
<op exp="$page_count = $amount / $Custom1" />
</if>

<!--计算起始条数--> <op exp="$start_num = ($Custom2 - 1) * $Custom1" />
<div class="node_list">
<CMS action="LIST" return="List" NodeID="all-11" Num="{$start_num},{$Custom1}" where="c.Style='{$NodeInfo.NodeName}' "/>
<LOOP name="List" var="var" key="key">
[<a href=" [$var.NodeURL] " target="_blank" >[$var.NodeName]</a>]

<a href=" [$var.URL] " target="_blank" title=" [$var.Title] " >[@CsubStr($var.Title, 0, 20)]</a><br />
</LOOP>



<op exp="$Next_Page=$Custom2 + 1" />
<op exp="$Back_Page=$Custom2 - 1" />
<if test="$Custom2 == 1">
<op exp="$page_string .= '第一页|上一页|'" /> <!--当前页为启始页-->
<else>
<op exp="$page_string .= '<a href="' . $ActionDir . 'index.php/' . $NodeInfo.NodeID . ',0,25,1.html">第一页</a>|<a href="' . $ActionDir .
 'index.php/' . $NodeInfo.NodeID . ',0,25,' . $Back_Page . '.html">上一页</a>|'" />
</if> <!--非启始页-->
<if test="$Custom2 == $page_count || $page_count == 0 ">
<op exp="$page_string .= '下一页|最后一页|'" />
<else>
<op exp="$page_string .= '<a href="' . $ActionDir . 'index.php/' . $NodeInfo.NodeID . ',0,25,' . $Next_Page . '.html">下一页</a>|<a href="' .
 $ActionDir . 'index.php/' . $NodeInfo.NodeID . ',0,25,' . $page_count . '.html">最后一页</a>|'" />
</if>
<div class="pages">分页: 共[$amount]条 共[$page_count]页 分页:[$page_string]

</div>


参考来源

留言