NPS JavaScript对象使用技巧

内置的JavaScript对象可以进行站点功能高级开发与管理。

See also

top

自动发布自定义数据源

下表演示了将表A新建的数据写入A_prop表,对应站点ID为testsite,栏目代号CODE为news.A,并进行发布。

var pstmt = null;
var sql = null;
try
{
     var site = session.GetSite("testsite");
     var topic = site.GetTopicByCode("news.A");

     //将A中有的但A_prop表中还没有的数据写入A_prop表
     //state=2表示审核通过待发布
     sql = "insert into A_prop(id,title,siteid,topic,state) select id,name,?,?,2 from A where not exists(select id from A_prop where A.id=A_PROP.id)";
     pstmt = session.PrepareStatement(sql);
     pstmt.SetString(1,site.id);
     pstmt.SetString(2,topic.id);
     pstmt.ExecuteUpdate();
     session.Commit();//提交事务处理
     pstmt.Close();//关闭游标

     //发布栏目news.A的文章
     topic.Build(false);
}
catch(e)
{
     //写入日志
     out.Error(e);
}
finally
{
     if(pstmt!=null) pstmt.Close();
}

top

每日最新文章清单

下表演示通过全文检索接口将每天发布的文章生成特定XML文件。站点ID为testsite。

var xmlfile = null;
try
{
     xmlfile = new NpsFile("/xml/my.xml");
     xmlfile.OpenWriter(false);//覆盖写入

     var site = session.GetSite("testsite");
     var query = "publishdate:[NOW/DAY-1DAY TO NOW/DAY"; //昨天0点到今天0点的数据
     var arts = site.FTSearch(query,0);
     for(var i=0;i<arts.count;i++)
     {
         var art = arts.GetNthArticle(i);
         xmlfile.WriteString("<id>");
         xmlfile.WriteString(art.id);
         xmlfile.WriteString("</id>");

         xmlfile.WriteString("<title>");
         xmlfile.WriteString(art.title);
         xmlfile.WriteString("</title>");

         xmlfile.WriteString("<url>");
         xmlfile.WriteString(art.url);
         xmlfile.WriteString("</url>");

         art.Clear();//清除临时环境
     }
}
catch(e)
{
     //写入日志
     out.Error(e);
}
finally
{
     if(xmlfile!=null) xmlfile.Close();
}