さてServicenowのポータルでのナレッジ記事の表示順がデフォルトでどのような状態かについては前回の記事を参照いただくとして今回はタイトル順に表示できる様カスタマイズを実施してみたい。
↑のコミュニティの記事を参考に進めてみたい。
まずカスタマイズが必要なウィジェットを特定する。
フィルタナビゲータから Service Portal -> Service Portal Configuration を表示し、下の画面のPage Editor をクリック。
↓の画面で「Edit Knowledge Base (kb_category) page in Designer ➚」のリンクをクリック。すると次の画面が出て、問題のウィジェットが「KB Category Page」という名前である事がわかる。
ここまでわかったらいったんこの画面は閉じるまたは置いておく。
次に「KB Category Page」の編集に入る。フィルタナビゲータから Service Portal -> Widgets を表示。
このままだとデフォルトのウィジェットは編集できないようになっているので、画面右上の Clone Widget をクリック。
すると、次のように編集可能なコピーされたウィジェットが作成される。
Client controller のスクリプトを、次のように変更する。
【デフォルト】
function ($scope, $rootScope, $timeout, spKBCategoryService) { var accessWordCountMax = 15; var c = this; init(); c.getShortenText = function getShortenText(text) { var wordsArray = text.split(" "); if (wordsArray.length > accessWordCountMax) wordsArray = wordsArray.slice(0, accessWordCountMax); return wordsArray.join(" "); } var removeListener = spKBCategoryService.addListener(function(catId) { c.data.category = catId; c.data.items = null; c.server.update().then(function(){ init(); }); }); function init() { $timeout(function() { $rootScope.$broadcast('sp.update.breadcrumbs', c.data.breadcrumbs); }); } $scope.hideItemWidget = !$scope.data.category; $scope.showCategories = function() { $scope.hideItemWidget = true; $rootScope.$broadcast("$sp.kb.show.categories_widget"); } $scope.$on('$destroy', function(){ removeListener(); }); $scope.loadMore = function () { c.data.new_limit = c.data.limit + (parseInt(c.options.limit_article) || 10); c.server.update(); } }
【変更後】
function ($scope, $rootScope, $timeout, spKBCategoryService) { var accessWordCountMax = 15; var c = this; init();
// opus change - sort documents by title name c.data.items.sort(function (a, b) { return a.title.localeCompare(b.title); });
c.getShortenText = function getShortenText(text) { var wordsArray = text.split(" "); if (wordsArray.length > accessWordCountMax) wordsArray = wordsArray.slice(0, accessWordCountMax); return wordsArray.join(" "); } var removeListener = spKBCategoryService.addListener(function(catId) { c.data.category = catId; c.data.items = null; c.server.update().then(function(){ init(); }); }); function init() { $timeout(function() { $rootScope.$broadcast('sp.update.breadcrumbs', c.data.breadcrumbs); }); } $scope.hideItemWidget = !$scope.data.category; $scope.showCategories = function() { $scope.hideItemWidget = true; $rootScope.$broadcast("$sp.kb.show.categories_widget"); } $scope.$on('$destroy', function(){ removeListener(); }); $scope.loadMore = function () { c.data.new_limit = c.data.limit + (parseInt(c.options.limit_article) || 10); c.server.update(); } }
変更したら、Update。
さて次は、この編集済みウィジェットを、kb_category ページに適用していく。
冒頭に戻ってService Portal -> Service Portal Configuration → Page Editor → Select Page... → kb_category → Edit Knowledge Base (kb_category) page in Designer ➚ と進み、↓の画面を再度表示させる。
左上のFilter Widget で KB Category Page を検索し、先ほど作成した「Copy of KB Category Page」の方を右側の領域へドラッグ&ドロップし、もともとの「KB Category Page」はゴミ箱へ。
Can I upgrade my operating system? What are the system requirements?↓How can I find the MAC address of my Ethernet or wireless interface?↓How do I create and delete users?↓Where can I obtain updates and new releases?
またそのうちカテゴリ内の表示順を任意に指定するカスタマイズにもチャレンジしてみたい。今回はここまで。
執筆予定→完了:
Servicenowのポータルでのナレッジ記事の表示順を任意に指定できる様にするためのカスタマイズ(今のところ出来ませんでした)
Servicenowのポータルでのナレッジ記事の表示順を任意に指定できる様にするためのカスタマイズ(完成版)
0 件のコメント:
コメントを投稿