iPortal 提供了一套可视化定制系统以便于您对 iPortal 首页进行外观的定制。在可视化定制系统中,您可以使用 iPortal 内置提供的多种组件,以拖拽式操作积木式地搭建 iPortal 首页。另外,当可视化定制系统无法满足您的定制需求时,iPortal 还提供了一种“全代码”的深度定制方式,允许用户对 iPortal 首页进行完全的重写。

深度定制 iPortal 首页的一般流程包括:页面内容开发配置启用定制页面

页面内容开发

页面内容实现的核心为开发一个首页所对应的 HTML 文件。您可以自行选用 VueReactAngular 等主流的前端开发框架或原生 JavaScript/JQuery 进行开发,具体的开发过程在此不作介绍,只需将您开发完成的工程放置在 %SuperMap iPortal_HOME%\webapps\iportal\resources\web-ui\extend\home 目录下即可。如果您不具备相应的前端开发经验,iPortal 提供了一个基于 Vue 的首页定制范例工程以指导您进行扩展开发。

iPortal 首页定制范例工程

如果您知晓前端开发的流程并具有相应的开发经验,可选择略过该节内容。

针对缺乏前端开发经验的项目实施人员,为协助您进行扩展开发,iPortal 在 Gitee 上开源了一个首页定制范例工程,实现了三套不同的门户首页:

  • iPortal 默认经典首页
  • iPortal 深红主题首页
  • “一张图”国土资源信息系统首页

图1   iPortal 深红主题首页    

  图2  “一张图”国土资源信息系统首页  

该工程选用 Vue 技术栈进行开发,因此请您在开发前学习 Vue 的相关基础知识。下面简要介绍如何使用 iPortal 首页定制范例工程:

一、安装开发环境

请在扩展开发前安装好 Node.js 环境,这里推荐您安装 10.X 版本的 Node.js 以避免可能产生的兼容性问题。

二、抓取项目代码

在 Gitee 上下载 iPortal 示范工程代码至本地,其中 custom-home 文件夹为首页定制范例工程。以下是工程结构示意图:

根目录 custom-home:

部分关键文件(夹)说明如下:

  • public:静态资源文件夹(如图片、svg 符号等)
  • src:项目主体开发代码文件夹
  • package.json:项目依赖描述文件
  • vue.config.js:webpack 配置文件

 

其中 src 目录结构如下:

  • components:首页组件类目录
  • utils:工具方法目录
  • DefHomePage.vue:iPortal 经典首页源代码文件
  • DefHomePage1.vue:iPortal 深红主题首页源代码文件
  • HomePage.vue:“一张图”国土资源信息系统首页源代码文件
  • router.js:路由配置文件

 

utils 目录结构如下:

  • HomePageUtil.js:首页工具方法文件
  • RequestUtil.js:接口请求工具方法文件

 

三、启动示范工程项目

在 custom-home 目录下执行如下命令安装项目的依赖:

npm install

运行如下命令启动项目:

npm run serve

启动项目后,即可通过 http://<ip>:8080 访问首页,默认情况下访问的是“一张图”国土资源信息系统首页。您可以通过 router.js 文件中配置的路由访问其它两套首页,例如访问 iPortal 经典首页时,地址为:http://<ip>:8080/#/defhome。

 

四、进行定制开发

完成以上步骤后,您可以开始在 Vue.js 编辑器中编写代码:

  • HomePage.vue、DefHomePage.vue、DefHomePage1.vue 为三套首页源代码,您可以基于其中任意一套门户首页进行二次开发,也可创建一个新的 Vue 文件,进行完全独立的页面开发。范例中内置的三套首页均选用了 iPortal Components 中的某些组件,iPortal Components 是 iPortal 提供的一个 Vue 组件库,封装了数种常用的 UI 组件,您在开发时可按需调用以提高开发效率,具体可参考:iPortal Components 入门
  • components 目录下的多个 vue 文件为首页组件类文件,您可以修改这些文件以更改首页组件的默认属性信息
  • HomePageUtil.js 为首页工具方法文件,您可以将自定义的工具方法写入到该文件中以供调用
  • RequestUtil.js 为接口请求工具方法文件,您可以将向 iPortal 后端发送的请求写入到该文件中以供调用,点击这里查看 iPortal 完整的 REST API。
  • router.js 为路由配置文件。通过该路由文件,可以为不同页面配置不同的路由地址,代码如下:

import Vue from 'vue'

import VueRouter from 'vue-router'

const DefHomePage = () => import(/* webpackChunkName: "DefHomePage" */  './DefHomePage');

const DefHomePage1 = () => import(/* webpackChunkName: "DefHomePage1" */  './DefHomePage1');

const HomePage = () => import(/* webpackChunkName: "HomePage" */  './HomePage');

Vue.use(VueRouter);

const router =  new VueRouter({

  mode: 'hash',

  routes: [

    {

        path: '/defhome',

        name: 'defHome',

        component: DefHomePage,

        meta: {

            title: '首页'

        }

    },

    {

        path: '/defhome1',

        name: 'defhome1',

        component: DefHomePage1,

        meta: {

            title: '首页'

        }

    },

    {

        path: '/home',

        name: 'home',

        component: HomePage,

        meta: {

            title: '首页'

        }

    },

  ]

})

export default router;

您可以通过更改 path 以改变自带的三套首页的路由地址;如果您是通过添加一个新的 Vue 文件进行完全独立的开发,则需要仿照已有内容,在文件头中引入创建的 Vue 文件并在 routes 数组中添加其对应的路由。

 

五、打包项目工程

代码编写完成并通过调试后,即可进行编译打包,执行如下命令进行编译:

npm run build

生成的 home-page 文件夹即为打包后的文件。

 

更多信息可以参阅首页定制开发指南

配置启用定制页面

完成首页的定制开发后,需按以下步骤配置启用定制后的首页:

一、将打包后的工程文件夹放置在 %SuperMap iPortal_HOME%\webapps\iportal\resources\web-ui\extend\home 目录中

注意:iPortal 默认已将示范工程打包后的成果放置在产品包该路径下( %SuperMap iPortal_HOME%\webapps\iportal\resources\web-ui\extend\home\home-page )以供您试用 ,您在自定义扩展开发完成后需将其替换为自己的工程。

二、修改扩展开发配置文件 %SuperMap iPortal_HOME%\webapps\iportal\resources\web-ui\extend\home\config.json ,将定制后的首页应用至 iPortal,config.js 代码如下:

{

  "enable": true,

  "useDefaultHeader": true,

  "homeUrl": "{portalRoot}/resources/web-ui/extend/home/home-page/index.html"

}

  • enable:是否启用自定义开发的 iPortal 首页。默认值:false,使用 iPortal 的默认首页。使用用户扩展开发的首页时,需要将该值设置为:true。
  • userDefaultHeader:是否使用 iPortal 内置导航栏。默认值:true,使用 iPortal 的内置导航栏。iPortal 内置导航栏提供了登录与注册、各内置 WebApps、全局搜索等的入口,如果您将该值设置为 false,可在定制开发的首页中按需实现上述功能。
  • homeUrl:定制的首页 HTML 文件路径。可以通过在其后添加 #path 值切换不同的首页,其中 path 为 router.js 文件中设置的路由。例如将 homeUrl 设置为 {portalRoot}/resources/web-ui/extend/home/home-page/index.html#/defhome1,将默认首页设置为 iPortal 深红主题首页。

 

修改并保存上述配置后,即可在 iPortal 中访问定制开发的首页。