2012-04-11 67 views
1

私はコンフルエンスのページタイトルに一意のIDを追加しようとしています。コンフルエンスページのタイトルを編集してIDを追加しますか?

jQueryを使用するユーザーマクロを追加して、タイトルに文字列接頭辞のページID &を追加しました。

## @param _prefix:title=Prefix|type=string|required=true|desc=Prefix for the page ID 

<script type="text/javascript"> 
jQuery("document").ready(function() { 
    if ("${param_prefix}" != "${_prefix}") 
    jQuery('#title-text a').prepend('${param_prefix}', '$content.getIdAsString()', ' '); 
}); 
</script> 

しかし、これは実行時に追加されるのではなく、実際にタイトルを編集したいと思っています。すべてのメニューにID番号&が表示されます。

これは可能なことを示唆するものは見つかりませんが、確かに!?

答えて

0

$ content.setTitle( "newtitle")は動作するはずです。しかし!このマクロがレンダリングされるたびにタイトルが繰り返しプレフィックスされることになります。あなたの接頭辞でタイトルが始まっているかどうかを確認するかもしれないと思います。そして、プレフィックスを変更する処理を追加したいかもしれません。

詳細はhttp://confluence.atlassian.com/display/CONF35/Guide+to+User+Macro+Templates#GuidetoUserMacroTemplates-OtherObjectsAvailabletoyourMacroを参照してください。

これは、あなたが持っている問題を解決するためのかなりクルージーな方法のようだと言われています。これが本当にあなたがしたいことなのか再考することをお勧めします。

+0

ありがとうございました。そうですね、いいやり方ではありませんが、問題は類似したタイトルのページが何百/何千もあるため、コンフルエンスや他の場所のすべてのコンテンツをリンクするための固有のIDが必要です。だからタイトルにページIDを追加するのが私の理想でした。レイアウト/スタイルの設定でこれができるかどうか疑問に思っていましたが、まだ分かりません。 –

+0

私は、ページIDを持つ部分については考えていません。それはユニークなページタイトルを作成するための実行可能な方法のようです。私はマクロを使ってこれについてもっと詳しく考えています。これは、すべてのページにこのマクロを手動で追加することを意味します。最も簡単な方法は、実際にはコンフルエンスをオフにして、すべてのページを実行するようにMySQLスクリプトを作成することです。 – boileau

+0

ところで、あなたは代わりにIDとリンクできませんか?なぜそれをタイトルに追加する必要がありますか? – boileau

0

独自のIDを生成するのではなく、実際のConfluenceページIDまたはページの小さいリンクを使用することができます。どちらも静的です。

すべてのConfluenceページで、「k」と入力するとハイパーリンクが表示されます。小さなリンクも含まれているのを見て驚くかもしれません。 Atlassianは、ページを移動して名前を変更しても、小さなリンクが同じままであることを確認します(https://jira.atlassian.com/browse/CONF-27049)。これは固定URLで同じページを参照する一貫した方法です。別の方法は、PageIDで構築されたConfluenceを使用することです。

のConfluenceナレッジベース: https://confluence.atlassian.com/confkb/how-to-get-confluence-page-id-648380445.html

  • は、現在のユーザーが表示し、クリックして編集モードに特定のページ
  • 行くことに ページ移動を編集する権限を持っていることを確認しConfluenceページのIDを取得する方法編集ボタンを押すか「E」キー

あなたが編集モード ページのIDを入力したら、アドレスバーのURLが変更されますが目のように表示されますeパラメータ:例:編集モードに入ると、URLはhttp://my.domain.com/pages/editpage.action?pageId=1540132 に変更されます。上記の例では、がページIDです。

マクロを使用してページIDを取得するには ContentEntityObject contentEntityObject = conversionContext.getEntity(); System.out.println( "pageId:" + contentEntityObject.getId());

タイトルを変更するにはcontent.setTitle( "newtitle")。 title = title + page IDを設定する前にtitleにページIDが含まれているかどうかを確認してください。

関連する問題