添加新用户界面

要完全理解本教程的这一部分,最好熟悉 自定义地理网络用户界面 先上教程。

在GeoNetwork中,可以在同一部署上安装多个样式。可以在“设置管理器”上选择要使用的样式。另外,您还可以使用参数“?view=$name“强制页面请求使用特定样式。

创建空样式

现在,我们将在之前创建的独立Maven项目上创建自定义样式。首先,我们定义了最小的用户界面定制,这样我们就可以测试我们的风格是生成和使用的。

我们需要一个关于custom/src/main/resources/catalog/views/custom/less/gn_search的空文件_自定义.less路径

然后我们需要定义将用于此样式的基本角度模块。在custom/src/main/resources/catalog/views/custom上创建文件/模块.js并添加以下内容:

(  function() {
     goog.provide('gn_search_custom');
     goog.require('gn_search');
     var module = angular.module('gn_search_custom', ['gn_search']);
})();

接下来,我们在custom/src/main/resources/catalog/views/custom/templates上创建一个新文件/index.html索引并添加以下内容:

<div>This is my custom GeoNetwork</div>

最后我们得告诉wro4j类库我们的文件在哪里。编辑文件web ui/src/main/resources/web-INF/classes/web ui wro-源.xml并添加我们的文件夹:

<require pathOnDisk="web-ui/src/main/resources" >
  <jsSource webappPath="/catalog/js/" />
  <jsSource webappPath="/catalog/views/default/" />
  <jsSource webappPath="/catalog/views/custom/" />
  <jsSource webappPath="/catalog/components/" />
  <cssSource webappPath="/catalog/views/default/" />
  <cssSource webappPath="/catalog/views/custom/" />
  <cssSource webappPath="/catalog/style/" />
  <cssSource webappPath="/catalog/lib/bootstrap-table/dist" />
</require>

现在,如果我们构建、部署并进入geonnetwork,我们可以使用这种称为“custom”的新样式:http://localhost/本地主机:8080/地理网络/srv/eng/目录搜索?视图=自定义

导入默认样式

您可以导入默认样式以轻松开始新样式。

编辑自定义/src/main/resources/catalog/views/custom/less/gn_search_自定义.less并添加以下行:

@import "gn_search_default.css";

然后使角度模块依赖于默认的角度UI模块。编辑自定义/src/main/resources/catalog/views/custom/模块.js并将内容替换为:

(  function() {
      goog.provide('gn_search_custom');
      goog.require('gn_search_default');
      var module = angular.module('gn_search_custom', ['gn_search_default']);
})();

最后,替换文件custom/src/main/resources/catalog/views/custom/templates/index.html索引包含文件web ui/src/main/resources/catalog/views/default/templates的内容/index.html索引

现在,您可以使用自己的自定义设置来改进默认样式的副本。

将代码分离的一个主要优点是,您可以覆盖geonnetwork用户界面上默认的一些文件,并且这种覆盖不会与将来的代码升级冲突。

修改搜索结果

GeoNetwork样式的最常见自定义之一是修改搜索结果列表的外观。我们可以在配置js文件。编辑文件custom/src/main/resources/catalog/views/custom/配置js并修改属性搜索设置.resultViewTpls.

searchSettings.resultViewTpls = [{
                tplUrl: '../../catalog/views/custom/resultsview/' +
                'partials/viewtemplates/grid.html',
                tooltip: 'Grid',
                icon: 'fa-th'
              }];

现在我们必须创建引用的文件web ui/src/main/resources/catalog/views/custom/resultsview/partials/viewtemplates/网格.html使用我们想要的模板,比如:

<ul class="list-group gn-resultview gn-resultview-sumup">
  <li class="list-group-item gn-grid"
    data-ng-repeat="md in searchResults.records"
    data-gn-fix-mdlinks=""
    data-gn-displayextent-onhover=""
    data-gn-zoomto-onclick="">

   <div title="{{(md.abstract || md.defaultAbstract) | striptags}}"
       data-ng-click="openRecord($index, md, searchResults.records)">
    <!-- Thumbnail -->
    <div class="gn-md-thumbnail">
      <img class="gn-img-thumbnail"
           data-ng-src="{{md.getThumbnails().list[0].url}}"
           data-ng-if="md.getThumbnails().list[0].url"/>

      <!-- Display the first metadata status (apply to ISO19139 record) -->
      <div data-ng-if="md.status_text.length > 0"
           title="{{md.status_text[0]}}"
           class="gn-status gn-status-{{md.status[0]}}">{{md.status_text[0]}}
      </div>
    </div>
   </div>
  </li>
</ul>

我们可以定义任何想要的类并在gn_搜索中引用它_默认.css文件给它一些样式。