本技能用于 ServiceNow Service Portal 的容器层管理,覆盖组件之外的页面与主题:页面所承载的组件布局,以及页面渲染所用的主题。
页面层级为 sp_portal(一个门户,含 URL 后缀、首页与主题)→ sp_page(以稳定 id 寻址,/sp?id=<id>)→ sp_row → sp_column(12 列栅格)→ sp_instance(一个组件的一次放置及其选项)→ sp_widget(组件定义,被所有实例共享)。需注意:页面并不“属于”某个门户,sp_page 无门户引用,任何门户都可通过 /<portal-suffix>?id=<page-id> 访问;id 是 URL 中出现的稳定可读键,sys_id 是记录标识,二者管理工具均可接受。
创建与放置:使用 snow_create_sp_page 创建页面;使用 snow_sp_page_manage 的 add_widget_instance 放置组件,推荐传 column_sys_id,省略则实例直接挂在页面上,虽能渲染但脱离栅格,之后难以重新布局。public: true 表示无需登录即可访问。
组件选项存在于实例:sp_widget 是定义(模板、客户端脚本、服务端脚本、CSS、选项 schema),被所有页面共享;sp_instance 是一次放置,携带 title、glyph、颜色及选项 schema 的值,以 JSON 存于 sp_instance.options。因此“某页组件显示错误列表”通常不是组件问题,改组件会影响全部页面,改实例只影响该页。
克隆:使用 clone 动作,copy_widget_instances: true(默认)会连同选项复制 sp_instance,使克隆体可直接使用。删除不会级联,会留下孤立 sp_instance;可将页面置为 draft: true 代替删除。
主题与页面分属不同维度:页面决定哪些组件、在哪些列、实例标题与选项、页面级 CSS(sp_page.css)、public/draft/internal;主题决定页眉页脚组件、颜色变量与字体、门户级 CSS(sp_css)、logo/favicon/品牌名(sp_brand)。snow_sp_theme_manage 管理 sp_theme、sp_css、sp_brand 及 sp_portal.theme 指针,支持 clone_theme、update_branding、apply_theme_to_portal;apply_theme_to_portal 在下次页面加载即生效,无发布或缓存刷新步骤,应对测试门户先行。颜色未生效时检查顺序为:门户主题指针、该主题的 sp_css、页面自身 css、组件 CSS,越具体者优先。