問題
- DXP 7.0からDXP 7.4にアップグレードしました。 アップグレード後、DXP 7.4のメニュー表示ポートレットに非表示ページが表示されなくなりました。
再生産ステップ:
-
DXP 7.0を最新のフィックスパックでセットアップする。
-
コントロールパネル → ナビゲーション → 「公開ページ」横のケバブメニューをクリックし、公開ページを追加し、「ナビゲーションメニューに表示しない」オプションを有効にして非表示にします。 次のように記載されていることに注意してください: 有効な場合、このページはナビゲーションメニューには表示されません
-
次に、この非表示の親ページに子ページを作成します。子ページを非表示にしないでください。
-
別の公開ページを作成し、そこにナビゲーション メニューを配置し、「ルート ページ」の下のメニューをクリックして「選択」に設定することで、以前に作成した非表示ページを表示するように設定します。
チェックポイント: これで、非表示のページとその子ページが表示され、メニューに表示されるように選択できるようになりました。
5. インスタンスをシャットダウンします。
6. DXP 7.4にアップグレードします。
結果: 非表示のページは、その子ページとともにメニュー表示ポートレットに表示されません。
環境
- Liferay DXP 7.4
解決
- この動作は想定どおりです。ナビゲーション メニューからページを非表示にするオプションは、ページがデフォルトのナビゲーションメニュー ポートレットに表示されないことを意味します。ただし、DXP 7.0 ではこのオプションは機能しませんでした (これはバグです)。そのため、7.0 のナビゲーションメニューで非表示のページが表示されるように構成することが可能でした。
- この問題は、Liferay の以降のバージョンでは解決されています。つまり、DXP 7.4 のデフォルトのメニュー表示ポートレットには非表示のページは表示されません。
- この問題を解決するには、「サイト ビルダー」->「ナビゲーションメニュー」に移動して、作成したメニュー表示ポートレットに表示される非表示ページを追加し、メニュー表示を作成する必要があります。
- 非表示のページが多数あり、各ページの設定時間を節約したい場合は、添付の Groovy スクリプト「setCustomField.groovy.txt」を使用できます。このスクリプトは、ページのナビゲーション メニュー プロパティから非表示を新しい expando フィールド (カスタム フィールド) にコピーし、すべてのページを非表示に設定しません。スクリプトはべき等です。カスタム フィールドが true に設定されると、元に戻すことはできません (スクリプトによってナビゲーション メニュー プロパティから非表示もリセットされるため、2 回目に実行したときに false に戻ってしまうことを避けるためです)。CustomMenuTemplate.ftl.txt は、expando ブリッジを介してカスタム フィールドを読み取るメニュー表示ポートレットのサンプル ADT です。注: スクリプトを実行する前にデータベースのバックアップを作成し、まず下位の環境でテストしてください。