プロフィールページのメニュータブをプロファイルタイプによって変更したい

Events happening in the community are now at Drupal community events on www.drupal.org.
bzj00220's picture

一般のかたが専門家を探せるマッチングサイトを運営しております。

一般の方と専門家の方のプロフィールページなどを分ける必要があるので
profile2を使って複数のプロファイルタイプを作ってあります。

http://groups.drupal.org/node/256523#comment-823723

http://www.youtube.com/watch?v=iWWMvMPFS1Q

とほぼ同じような方法を使ってpanelsで
「掲載したコンテンツ」などを表示させるページを作り
プロフィールのページにタブで表示させることができました。

ただ、専門家のプロフィールについては問題ないのですが
一般の方のプロフィールには上記のタブを表示させたくないのです。

いろいろと試してみたんですが、プロファイルタイプまたは役割によって
上記のメニュータブの表示を変更する方法またはモジュールなどがあれば
教えていただければ幸いです。

一般向けプロフィール・・・「掲載したコンテンツ」タブを非表示

専門家向けプロフィール・・「掲載したコンテンツ」タブを表示

Comments

dokumori's picture

あまり美しい解決法ではありませんが、モジュールの設定とCSSだけで可能な方法としては、 Context モジュールの利用があります。

Context モジュールは、文字通りコンテキストによって動作を決定することが可能です。例えば特定のパスの場合にのみ、body タグに css のクラスを追加することができます。

一般プロフィールと専門プロフィールのパスのパターンが違うという前提で話を進めると、一般プロフィールの場合にのみ Reaction で body タグに css クラス(ここでは例えば 'general' とします)を追加し、カスタム css で .general を含めたこのタブのセレクターに {display: none;} という宣言を付ければ、タブは表示されなくなります。

HTML 側には存在するので、 php レベルでアウトプット自体を防いだほうが良いのですが、とりあえず簡単な例ということで。。。

タブが全部消えるのでは・・・?

bzj00220's picture

色々な質問に回答いただいてありがとうございます。
一つ一つ試していきたいと思っております。

phpのことはわからないので
できればモジュールやCSSだけで解決できる方が望ましいです。
画面にさえ見えなければ問題ないと思っております。

一般プロフィールと専門プロフィールのパスのパターンは一緒なのですが
コンテキストの設定の中に「User role」という項目があるので
それでなんとかなるのかな?と考えております。

言われたとおりにやってみようと思ってやっている途中で気づいたのですが
もしかしてこの方法だと、タブが全て消えてしまうのではないでしょうか?

一般プロフィールには「ビュー」「編集」などのタブも表示されていますが
これは残したままで、「掲載したコンテンツ」タブだけを消したいのですが
そういうこともこの方法でできるのでしょうか?

それぞれのタブには、一意のクラス名*

dokumori's picture

それぞれのタブには、一意のクラス名* が付いているはずです。ですので、 Context モジュールの設定に基づいて任意で付加される body のクラスと併せて使えば、そのタグだけを消せると思います。 タブのクラスをFirebug / inspector等で確認してみてください。

(* 一般に、クラスはページ内に複数存在できるものなので、一意のクラスというのはおかしな表現ですが、Drupal の多くのテーマではタブに一意のクラス名が付いていると思います)

bzj00220's picture

返信を頂いてソースを確認したところ
タブの部分は下記のようになっていました。
クラス名は全部「class="art-button」になっています。

<ul class="arttabs_primary">
<li><span class="art-button-wrapper active"><span class="art-button-l"></span><span class="art-button-r"></span><a href="/users/ユーザー名" class="art-button active">ビュー<span class="element-invisible">(アクティブなタブ)</span></a></span></li>
<li><span class="art-button-wrapper"><span class="art-button-l"></span><span class="art-button-r"></span><a href="/user/2230/jirei" class="art-button">掲載したコンテンツ</a></span></li>
</ul>

使用しているテーマはartisteerというソフトを使って
独自に作ったものなのでそうなっているのかもしれません。

ところで、
「一般プロフィールと専門プロフィールのパスのパターンが違うという前提で話を進めると・・・」
というお話があったのですが
もし、一般プロフィールと専門家プロフィールのパスを変えることができたら
あとはviewsの設定でなんとかなるかもしれません。

私の場合はどちらのプロファイルタイプもデフォルトで表示される
http://sample.jp/users/ユーザー名
になっているのですが
プロファイルタイプによってパスを変えるということができるのでしょうか?

nobuyuki3's picture

プロファイルタイプまたは役割

役割で良ければ、ViewのURL設定(user/%/posts)の下に役割があって、そこにSettingがあるので、「一般向けページ」「専門向けページ」を作って、役割「一般」「専門」で切り替えたらどうでしょう。

たぶん、一番簡単な方法です。

bzj00220's picture

申し訳ありません。

再度、vewsの設定を確認してみたのですが

「役割で良ければ、ViewのURL設定(user/%/posts)の下に役割があって、
そこにSettingがあるので、「一般向けページ」「専門向けページ」を作って、
役割「一般」「専門」で切り替えたらどうでしょう。」

というのは多分、アクセス制限の設定だと思います。

私の場合はアクセスは誰でもできて構わないのですが
一般のプロフィールに「掲載したコンテンツ」タブを
表示させたくないということです。

nobuyuki3's picture

>一般のプロフィールに「掲載したコンテンツ」タブを
表示させたくないということです。

以下Viewだけの設定という事であれば。

一般コンテンツタイプのタブ非表示なら、一般手コンテンツだけViweのURLの下にあるタブで、「No menu entry」に指定すればよいだけのような気がします。専門コンテンツだけタブを表示して。もし、同じページ内部でという事であれば、ViewのContexual Filterのタイプで、フィルタリングする形になると思います。

ただ、上記見たら、Panelsと書かれてあったので、私はPanelsは基本的な動作しか使ったことないのでわからないです。Profile2も使っている人は少数と思いますので、返信難しいのかなと思います。正直、Profile画面だけならば、Panels使うより、Suit Displayの方が使いやすいと感じています。

画像とかあれば、環境再現しやすいので、もっと返信しやすくなるかもしれないんですね。

bzj00220's picture

現在はpanelsで表示させているんですが
viewsの方で上手に設定できるのであれば
viewsで表示させてもいいと思っています。

返信を頂いてから、再度、設定のページを見なおしてみたんですが
確かにパスの下にメニューという項目があるんですが
この設定を「メニューに登録しない」にすると
一般プロフィールからも専門家プロフィールからも
タブが消えてしまいます。

今はプロフィールのページの話なので
コンテンツタイプはあまり関係ないとおもいます。

申し訳ありません。
もう少しいろいろと試してみます。