DigitalPlatform / dp2

Integrated Library System / 图书馆集成系统
http://digitalplatform.github.io/dp2
Apache License 2.0
105 stars 54 forks source link

输出新书通报功能使用指南 #1189

Open DigitalPlatform opened 1 month ago

DigitalPlatform commented 1 month ago

如题。

DigitalPlatform commented 1 month ago

书目栏目中脚本的使用方法

输出新书通报模块为书目栏目提供了 javascript 脚本定制的能力。

环境变量

书目栏目的 javascript 脚本,可以使用环境在调用前准备好的下列变量: biblio 书目记录。类型为 MarcRecord。 syntax MARC 格式。类型为 string。值为 "unimarc" 和 "usmarc" 之一。 result 预先取出的当前栏目内容。类型为 string。 host 宿主对象。类型为 ScriptHost。

脚本中可以创建一个名为 message 的 string 类型的变量,脚本返回后,宿主通过它可以得知脚本意图传递的错误信息。

host.ParamTable 用法

这个是一个数据字典,用于定义一些全局参数。

host.ParamTable 中,key "biblio_item_style" 对应的 value 值用于定义输出的册记录信息表格的风格。可以使用如下风格子参数: max_lines:n 最多内容行数。n 代表一个整数。缺省为 -1,表示不限制。 free_text 自由文本风格。如果未包含此风格,表示为普通表格风格。 ignore_title_line 忽略表格标题行。如果未包含此风格,表示不忽略表格标题行。

样例

下面给出一些具体的使用场景脚本。

对宿主已经准备好的内容进行修改

脚本如下:

result = result + "_后方添加文字";

(建议:在一个现有的列,比如 biblio_title 列上添加上述脚本,效果就是在当前书目记录的题名文字后面增加一截文字)

输出固定的字符串内容

脚本如下:

result = "固定文字";

(注: 当前列由宿主准备好的 result 中的原有内容被改变)

报错

脚本如下:

message = "这是错误信息";

(注: 将 message 值设置为空不会引发报错)

输出书目记录的题名

针对 UNIMARC 格式的书目记录

脚本如下:

result = biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;

常见错误:

biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;

这是忘了赋值给环境变量 result。产生的内容在脚本返回前一定要赋值给 result。

针对 UNIMARC 和 USMARC 两种格式的书目记录

脚本如下:

if (syntax == "unimarc")
    result = biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;
else
    result = biblio.select("field[@name='245']/subfield[@name='a']").FirstContent;

改变 biblio_items 列的显示风格

脚本如下:

host.ParamTable["biblio_items_style"] = "max_lines:1";

效果是,册记录信息表格只显示出第一行内容,更多的行会显示为一行“(此后略去 n 册 ...)”

host.ParamTable["biblio_items_style"] = "free_text,ignore_title_line";

效果是,册记录信息表格为自由文本风格,并且忽略表格标题行。

DigitalPlatform commented 1 month ago

册栏目中的脚本使用方法

环境变量

书目栏目的 javascript 脚本,可以使用环境在调用前准备好的下列变量: item 册记录。类型为 XDoc。 result 预先取出的当前栏目内容。类型为 string。 host 宿主对象。类型为 ScriptHost。

脚本中可以创建一个名为 message 的 string 类型的变量,脚本返回后,宿主通过它可以得知脚本意图传递的错误信息。

脚本举例:

对宿主已经准备好的内容进行修改

脚本如下:

        result = "(" + result + ")";

(栏目名请使用 "item_barcode")

从册记录中获取字段内容

脚本如下:

        result = item.Root.Elements("barcode").FirstInnerText; 

效果是,从册记录 XML 的 barcode 元素中获取正文信息。