名前の表示とリンク

ID として番号を使っているので、作成者にニックネームを表示してホームにリンクする方法について記述します。

takanori

作成者の名前表示

目次

概要[overview]

plone ではアイテムを作成した人の ID を作成者として表示します。

しかし、ある程度の人数が集まるサイトだと、ID は社員(会員)番号などで一括で取得してしまったりするので、番号が表示されても誰だかわからずあまりうれしくありません。

Displauy creator id

そこで、プロフィール のところで設定したプロフィール情報を元に、作成者としてニックネームまたはフルネームを表示するようにします。

ちなみに、plone 2.1 では ID ではなくフルネームが作成者として表示されるようになりました。

Display creator name in plone 2.1

カスタマイズ[custom]

それでは、作成者としてニックネームまたはフルネームを表示するように設定します。

作成者の部分を表示しているのは /portal_skins/plone_content/document_byline です。 この Page Template をカスタマイズ用にコピーします。

表示用の名前(ニックネーム、ニックネームが設定されてなければフルネーム)を取得するためには、プロフィール表示ポートレット のところで説明した getDispname Python Script を使用します。

まず、作成者として表示する文字列を取得するために、最初の tal:define に getDispname を実行する部分を追加します。:

    <div class="documentByLine"
         metal:define-macro="byline"
         i18n:domain="plone"
         tal:condition="python: site_properties.allowAnonymousViewAbout or not isAnon"
         tal:define="creator here/Creator;
                     creator_home python:mtool.getHomeUrl(creator);
                     dispname python:here.getDispname(id=creator);">

そして、作成者として今までは creator を表示していた部分を dispname を表示するように書き換えます。:

    <a href="#" tal:condition="creator_home"
       tal:attributes="href creator_home"
       tal:content="dispname">
      bob
    </a>

    <span tal:condition="not: creator_home"
          tal:content="dispname">
      bob
    </span>

このように書き換えると、作成者としてニックネームまたはフルネームが表示されるようになります。

Display creator name

コメントの投稿者とリンク

目次

概要[overview]

コメントの フラット化ページ化 によって、それぞれのアイテムを掲示板のように使用できるようになりました。

しかし、コメントの投稿者としては ID のみが表示されていて、しかもその ID にはメンバーのホームへのリンクがされていません。

Display comment creator

そこで、作成者の名前表示 と同様に、コメントの投稿者の名前を表示して、ホームへのリンクを貼るようにします。

カスタマイズ[custom]

それでは、投稿者の名前とホームへのリンクを貼るようにするために plone_templates/viewThreadsAtBottom をカスタマイズします。

カスタマイズする場所は documentByLine の部分です。変更前は以下のようなコードです。:

    <div class="documentByLine"
         tal:define="anonymous_creator python:reply.Creator()=='Anonymous User'">
        <span i18n:translate="label_comment_by">Posted by</span>
        <span tal:content="reply/Creator"
              tal:condition="not:anonymous_creator">Poster Name</span>

この部分を、作成者の名前表示 で修正した document_byline の記述を参考にして、以下のように変更します。 getHomeUrl でメンバーのホームを取得し、 getDispname で表示用の名前を取得しています。:

    <div class="documentByLine"
         tal:define="anonymous_creator python:reply.Creator()=='Anonymous User'">
        <span i18n:translate="label_comment_by">Posted by</span>
        <span tal:condition="not:anonymous_creator"
              tal:define="creator reply/Creator;
                          creator_home python:mtool.getHomeUrl(creator);
                          dispname python:here.getDispname(id=creator);">
            <a href="#" tal:condition="creator_home"
                        tal:attributes="href creator_home"
                        tal:content="dispname">
                Poster Name
            </a>
            <span tal:condition="not: creator_home"
                  tal:content="dispname">
                Poster Name
            </span>
        </span>

上記のように変更すると、このようにコメント投稿者のニックネームが表示され、ホームへのリンクが貼られるようになります。

Display comment creator name and link home

このように表示することにより、コメントを書き込んだ人のプロフィール情報へアクセスしやすくなります。