Home > blog > wordpressで非公開コミュニティサイトを作る(6) bbpress1.0αのテーマカスタマイズ

wordpressで非公開コミュニティサイトを作る(6) bbpress1.0αのテーマカスタマイズ

  • 2009-05-09 (土) 16:36
  • blog
  • |
Google Adsense

wordpress!

無事導入できたbbpresws、次はこれを通常のwordpress同様にカスタムしていく方法を見ていく。

wordpressとbbpressの完全な統合

前回やった連携・統合というのは、ログインとユーザー情報を共有させる基本的なものだった。
けどwordpress及びbbpressを利用してあれこれ作りたい人にとって本来欲しい統合とは、テンプレートタグやAPIの統合だったんじゃないだろうか。
wordpressで作ったサイト内の1コンテンツとして、bbpressを利用したforumsがあり、それら全てのコンテンツで共通したヘッダーやフッダーが表示される、そこにはグローバルメニューがあり、メニューはwordpressのテンプレートタグからカテゴリーリストを取得している…みたいな。
俺も以前いじった時はそれがやりたくて、あれこれ調べた結果、以下の記事に載っている方法でそれを再現する事が出来た。

integratePress – Part I | Aditya Naik

これを利用すると何が出来たか、それはbbpressのテーマファイルからwordpressのテンプレートタグを利用できるようになったのだ。
なのでbbpressのテンプレートからwp_head()を利用してheader.phpを呼び出したりとかも可能だった。
しかしこれ、既に現在のヴァージョンでは使う事が出来ない。

俺が試した時は確かwordpress2.5x、bbpressが0.9xだった頃だったが、wp2.6そして2.7にいたるまでに肝心のcookieの仕様等あれこれ変わったせいなのか、使えなくなってしまったみたい。

うーんまいったなぁと思ってたら、あれ公式のDocumentationに載ってた!

bbPress » Integration with WordPress

bbPress will not have access to WordPress’ functions unless you manually tell bbPress to load WordPress first. This integration step is also known as “deep” integration, it is a totally optional part of integration and is not required to get shared cookies and logins working. In order to do it, you need to put require_once(‘path/to/wp-blog-header.php’); in bbPress’ bb-config.php (wp-blog-header is in the same directory as WordPress’ wp-config.php file).

bb-config.phpにrequire_once('フルパス/wp-blog-header.php');を加えるだけで、wordpressのテンプレートタグが使えるように!(この際日本語化に支障が出るが、詳しくは後述)
けどDocumentationには、重くなるからplugin使ったほうがいいよとある…のだが、pluginを探してみるも一体どれがその役目を果たすものなのか見つけられなかったので、とりあえずこの方法でやる事に。
テスト環境だと特に重さは感じられないので、問題なさそうだけど。

bbpressのテーマ

テーマの位置

bbpressはwordpressと同様にbbpress独自のテーマ・テンプレートがあり、それをあれこれする事でデザインを変更する事が出来る。
bbpressのディレクトリ内のbb-templatesフォルダが、wordpressのthemesにあたる。
…と本来これで終了なのだが、bbpressではbb-templatesはコアファイル(?)に含まれるらしく、ヴァージョンアップの際上書きされる可能性が一応ある。
なのでbbpressのテーマを作る際は、bbpressのディレクトリ直下にmy-templatesという名前のフォルダを作り、ここに自分で作成するテーマを入れていく形になる。
(同様にpluginもmy-pluginsフォルダを作って管理する事が出来る)

テーマを構成するファイルの種類

日本語の革命から取ったと思われるKakumeiというデフォルトテーマを良く読めば、一応どのように作るかは把握出来る。

テーマについての情報を管理画面に表示するために最低限必要なものは以下のとおり。

  • style.css
  • 300×225のscreenshot.png

wordpressと同じく、テーマの情報はstyle.cssの最初の部分にコメントとして以下の形式で記述。

/*
Theme Name:[テーマの名称]
Theme URI: [テーマのURI]
Description: [テーマの説明]
Version: [テーマのバージョン]
Author: [テーマの制作者]
Author URI: [テーマの制作者のURI]
[コメントやライセンスなど]
*/

wordpressでは上記に加えindex.phpが必要だったが、bbpressではindex.phpもそれに相当するテンプレートファイルも見当たらない。
bbpressでは必要なテンプレートファイルがない場合、デフォルトテーマであるKakumeiから該当部分のみ読み込むようになっている。

また公式サイトによると以下のテンプレートファイルが存在するとの事。

front-page.php
フロントページ、つまりbbpressのトップページにあたる。
forum.php
フォーラムの表示、ここに表示中のフォーラムに属するトピックが一覧表示される。
edit-post.php
既に投稿したコメントを編集する画面。
edit-form.php
bbpress用関数edit_form()で呼び出される、編集フォーム。edit-post.phpから呼び出されている。
favorites.php
ユーザー情報の“お気に入り”ページのテンプレート。
header.php
その名の通り、ヘッダー。bb_get_header()で呼び出される。
footer.php
その名の通り、フッター。bb_get_footer()で呼び出される。
login.php
ログインページのテンプレート。/bb-login.phpがそれにあたる。
login-form.php
bbpress用関数login_form()で、ユーザーがログインしてない場合、呼び出される。デフォルトテーマKakumeiではヘッダー部分で呼び出している。
logged-in.php
bbpress用関数login_form()で、ユーザーがログインしている場合、呼び出される。
password-reset.php
/bb-login.phpからパスワードの回復を行った場合の結果を表示する画面。ここでユーザー名を送ると登録してあるメアドにパスワードリセット用URIが送られ、そのアドレスへ移動するとメアドに新しいパスワードを送ってくれる機能。このpassword-reset.phpはメール送りましたよ!って通知とパスワード新しく設定したよ!って通知の際に表示される。
post-form.php
フォーラムやトピックを新しく追加する際に呼び出されるフォーム。bbpress用関数post_form()で呼び出される。
post.php
bbpress用関数bb_post_template()で呼び出される。投稿を表示するためのテンプレートでループ中に呼び出される。
profile.php
ユーザーページのテンプレート。
profile-edit.php
ユーザーページの編集画面のテンプレート。
profile-base.php
プラグインでユーザーページに追加されたページがあった場合のページテンプレート。
register.php
ユーザー登録画面用テンプレート。
register-success.php
ユーザー登録に成功した旨を知らせるページ用テンプレート。
search.php
検索結果表示用テンプレート。
search-form.php
bbpress用関数search_form()で呼び出される。検索フォームのテンプレート。デフォルトテーマKakumeiではヘッダー部分で呼び出している。
stats.php
人気の記事や現在の登録ユーザー数等を表示するstatistics.php用テンプレート。デフォルトテーマKakumeiではどこからもリンクされていない。
topic.php
トピックを表示するテンプレート。
topic-tags.php
bbpress用関数topic_tags()で呼び出される。表示中のトピックのタグと、追加削除用フォームを呼び出す。
tag-form.php
Called by tags_form().と公式サイトにあるが、少なくとも1.0にはそんな関数もなければ、tag-form.phpもデフォルトテンプレート内に存在しない。またコアファイル内のどこにもtag-form.phpに関する関連付けがないので、作った所で何も機能しない。
これはおそらく誤表記で正確にはtag_form()だと思われるが、これはコアファイル内の関数1でhtmlを出力しているので、結局テンプレートを作っても置き換えてはくれないぽい。
tags.php
タグ一覧ページ表示用テンプレート。よく使われるタグ一覧を見れる。
tag-single.php
あるタグに属するトピックの一覧・そのタグに属するトピックの作成フォーム・タグ編集フォームが表示される画面のテンプレート。アドレスはtags.phpと一緒だが、こちらは引数でタグ名を渡すと表示される。
view.php
ログインしている時のみ表示される「返信の無いトピック」や「タグの無いトピック」といった一覧を表示するためのテンプレート。ログインしている時のみ、というのは単にテンプレートでログインしてるかで分岐させているだけなので、元々そういう機能が備わっているワケではない。

bbPress » Themes and Templates

また、これ以外にもデフォルトテーマ内には以下のテンプレートが存在した。

404.php
見てのとおり、404が帰ってきた時に表示するページ用テンプレート…のはずだがまったく機能しているように見えない。2
rss2.php
RSS2用テンプレート。
style-rtl.css
サブcss。デフォルトテーマのひとつKakumei-blueでも利用されているようだ。

さらに、デフォルトテーマにはないが以下のファイルを自分で作ればテ-マファイルの一部と認識してくれるようだ。

functions.php
wordpressと同じ、テーマで使用する関数を書いておくものだろう。

見てのとおり、bbpressはwordpressよりテンプレート数が膨大なのが結構大変だったりする。
先のwordpressのテンプレートタグを使える方法をとったなら、header.php等共通化できる部分はしてしまったほうが作業量が減るケースがあるかもしれない。
ただしwordpress本体のアップグレードによるなんらかの変更でbbpressとの統合が解けてしまう可能性もある、wordpressをアップデートしていく意思があるなら極力テンプレートは別にしておき、wordpressのテンプレートタグを利用するのは最小限にしたほうが被害は少ないだろう。
また、テーマフォルダにない場合デフォルトのテーマから流用するので、流用されても問題のないものは製作必須ではない。(rss2.phpやstyle-rtl.cssは多くの場合いじる必要がないだろう)

テンプレートタグ

bbpressのテンプレートタグがまとまっているサイトを俺は知らないけれど、多くのテンプレートタグは/bb-includes/functions.bb-template.phpにまとまっているので、デフォルトテーマの中身とつき合わせていけば大体把握できる。(もちろんある程度phpはわからないとだめだけど)

注意するべきはループのまわし方やConditional Tagの違いかなぁ。

wordpressとの統合やbbpressの設定の調整

bbpressのパーマリンクの変更

bbpressの管理画面でパーマリンク設定を変更してもリンクが修正されず、wordpressの404画面に飛ばされる。
bbpressではwordpressのように自動で.htaccessを作成してくれないからのようだ。
この場合管理画面のパーマリンク設定部分の下の説明にあるprovided hereというテキストリンクから表示されるテキストを.htaccessという名前で保存し、bbpressのディレクトリにアップロードすればOK。

リダイレクト

ログインしてない場合のリダイレクト

bbpressのテーマのほうにfunctions.phpをつくり以下の内容を書く。

<?php

if ( !bb_is_user_logged_in() ) auth_redirect();

?>

bbpressにはフィルターフックやアクションフックが提供されていないのでどうしたもんかなと思っていたが、functions.phpは他のテンプレートより先に読み込まれて実行されるので、関数でラップしなければ普通に実行してくれるようだ。
リダイレクト関数を利用してるんで、普通にリダイレクトする時と同じく出力が先にくるとエラーが出そうだから(試してない)functions.phpの最初に書くほうがいいかも。

日本語リソースの引用修正

既に少し触れたが、wordpressとの完全な統合のためにbb-config.phpでwp-blog-header.phpを読み込んでいると、bbpressの日本語リソースの参照先が変わってしまうので、bbpressの大部分の箇所が英語に戻ってしまっているはずだ。
一部日本語に翻訳されたままの部分もあるが、これはworpdressと共通の語句が翻訳されているだけにすぎない。
つまり、この時bbpressはwordpressの日本語リソースを読んでいる事になる。
これへの対処方法はbb-config.phpのwordpressのwp-blog-header.phpを読み込む処理の後でload_textdomain関数を実行する。

/* wordpressとの統合 */
require_once('wordpressまでのフルパス/wp-blog-header.php');

/* bbpressの日本語リソース読み込み */
load_textdomain('default', 'bbpressまでのフルパス/my-languages/ja.mo');

この二つをbb-config.phpの一番最後の部分に追加してやれば、wordpressのテンプレートタグが使えて日本語化されているbbpressが完成する。

  1. bb-includes/functions.bb-template.php内のtag_form()でこの処理が行われてる。 [戻る]
  2. ソース追ってみたけど面倒で途中で断念 [戻る]

Comments (Close):2

cresonsesceva 13-04-10 (水) 12:41

Mane stylist Ji Palao: “I am cogitative of Lolita.”[url=http://japanhandbags.webstarts.com/][b]プラダ 財布[/b][/url]
俵an from the[url=http://japan-prada.webstarts.com/][b]プラダ トートバッグ[/b][/url]
Prada Unexpectedly clear[url=http://jphandbagsoutlet2013.webstarts.com/][b]プラダ トートバッグ[/b][/url]
suited for [url=http://japanhandbags.webstarts.com/][b]prada 財布[/b][/url]
2010 program.He said: braids fancy,[url=http://japan-prada.webstarts.com/][b]プラダ 財布[/b][/url]
combined with Lolita doll way in,[url=http://jphandbagsoutlet2013.webstarts.com/][b]プラダ 財布 新作[/b][/url]
earth[url=http://japanhandbags.webstarts.com/][b]プラダ 財布 メンズ[/b][/url]
the development does not [url=http://japan-prada.webstarts.com/][b]プラダ バッグ[/b][/url]
look like the innocent expression.[url=http://jphandbagsoutlet2013.webstarts.com/][b]プラダ 財布 メンズ[/b][/url]
Although the ringlets is kind, the maiden’s accouter, but the skedaddle is shimmery and sexy. Yearn exchange for to create the temptationlips, the makeup artist 帕特麦格拉 in the air a pot-pourri of red lip pretence and narrow-minded orange lipstick, overhangs and not too brilliant.

Valentin 14-02-05 (水) 6:46

Hi there this is kinda of off topic but I was wondering if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding know-how so I wanted to get guidance from someone with experience. Any help would be greatly appreciated!

Trackbacks (Close):1

pingback from WordPressでベーシック認証させる方法まとめ 11-04-15 (金) 19:24

[...] ミュニティサイトを作る(6) bbpress1.0αのテーマカスタマイズ http://weblog.atl-r.net/blog/t……nitysite6/ [...]

Home > blog > wordpressで非公開コミュニティサイトを作る(6) bbpress1.0αのテーマカスタマイズ

Calendar
« 2017 年 2月 »
M T W T F S S
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28          
Search
ABM | AnotherBookmark™
heteml
heteml
amadana
amadana(アマダナ)
feed
Meta

Return to page top