Movable Type 備忘録

 PageBute プラグインをカスタマイズ

こんばんわ^^

抜き打ちでまた姪っ子たちが遊びに来た (; ̄- ̄)
いつものことなんだけど・・・何で抜き打ち!?

さて、そんな話はおいといて、前々から使いづらかった(マークアップしづらかった)PageBute プラグインをチョビッとわたし向けにカスタマイズしちゃいました (●>∀<●) てへぇ

カスタマイズ

あまり詳しくは書きませんので、とりあえずわたしが修正した内容を以下に記します。

  1. 248 行目修正

    PageBute.pl 248 行目

    1. # return "<a href=\"${url}\">$name</a>";
    2. return "<li><a href=\"${url}\">$name</a></li>";
  2. 170 行目修正

    PageBute.pl 170 行目

    1. # $page_lists .= $i == $lists->{min_page} ? '' : $delim;
    2. # $page_lists .= $i == $page_count ? $page_count : &_create_link($i, <span class="red">$site_url . $filename, $file_ext, $i);
    3. $page_lists .= $i == $page_count ? '<li><span>'.$page_count.'</span></li>' : &_create_link($i, $site_url . $filename, $file_ext, $i);
    4. $page_lists .= "\n";

それぞれ赤い字の部分をコメントにして、青い字の部分を追加しました。
上記によりテンプレートを以下のようにマークアップ!!

  1. <ul class="page_nav">
  2. <MTIfPageBefore><$MTPageBefore delim="前の5件"$></MTIfPageBefore>
  3.     <$MTPageLists$>
  4. <MTIfPageNext><$MTPageNext delim="次の5件"$></MTIfPageNext>
  5. </ul>

再構築すると以下のような出力になります。

  1. <ul class="page_nav">
  2.     <li><a href="http://bizcaz.com/index.php">Prev</a></li>
  3.     <li><a href="http://bizcaz.com/index.php">1</a></li>
  4.     <li><span>2</span></li>
  5.     <li><a href="http://bizcaz.com/index_3.php">3</a></li>
  6.     <li><a href="http://bizcaz.com/index_4.php">4</a></li>
  7.     <li><a href="http://bizcaz.com/index_5.php">5</a></li>
  8.     <li><a href="http://bizcaz.com/index_3.php">Next</a></li>
  9. </ul>

そして、以下のように CSS でスタイルしてあげると、わたしのサイトのトップページで使ってるようなページナビゲーションになります。

  1. ul.page_nav {
  2.     margin-left: auto;
  3.     margin-right: 0;
  4.     padding: 1em 0;
  5.     list-style: none;
  6.     text-align: right;
  7. }
  8. ul.page_nav li {
  9.     margin-right: .3em;
  10.     display: inline;
  11. }
  12. ul.page_nav li span,
  13. ul.page_nav li a {
  14.     padding: .3em 1em;
  15.     color: #303;
  16.     border: 1px solid #e8ecef;
  17. }
  18. ul.page_nav li span,
  19. ul.page_nav li a:hover {
  20.     color: #303;
  21.     background-color: #f8f4e6;
  22.     text-decoration: none;
  23.     border: 1px solid #eae5e3;
  24. }

以上です。
人様のプラグインをカスタマイズしちゃってるので詳しくは説明しませんが、カンタンにいうとリスト形式にして出力してもらってます。

ホントは参考にしたサイトさんがあったのですが、URL わからなくなっちゃったので後ほど追記します。

しばらく使ってなくって、久しぶりに使おうと思ったときに BlurBlue-Note さんでご紹介されてたので、わたしもやってみましたの。

以上、ご参考までに。

 Trackback Pings(2)

from ただてとてとと歩きだす

PageButeプラグインの初期の状態では、マークアップが適切に行われておらず、CSSによるスタイルづけもしっかりと行えないのです。というわけで今回はpa...

from リンク集「ヒトコト」

ウェブページに、前後のウェブページへのリンクを入れてみたら、MTPageNext...

 Comments(12)

#1: Posted by Author Profile Page oscar @ February 25, 2008 [REPLY]
user-pic

えーと、ここかな?
http://www.dynamicdrive.com/style/csslibrary/item/css_pagination_links/

#2: Posted by Author Profile Page bzbell @ February 25, 2008 [REPLY]
user-pic

>>1 oscar さん

こんにちわ^^

> えーと、ここかな?

あぁ~違うんですキャハハ
でも、上記ページで紹介してるのもいいですね、PageBute って必ず 10 ページ分しか表示しないなので、以降のページが隠れちゃう。
だから「・・・ 」表示はいいかも、ですねぺこり
試しにやってみよっかな。

#3: Posted by takuya @ July 30, 2008 [REPLY]
user-pic

はじめまして。
先週からMTを使ってブログを作っているのですが、わからないことだらけです。
さっそくご質問ですが、PageButeのカスタマイズがうまくいきません。
再構築時に「MTPageContentsは不明なタグです」とエラーがでます。
デフォルトのままでは、マークアップがありえないので・・・
返信お願いします!

#4: Posted by Author Profile Page bzbellからtakuyaへの返信 @ July 31, 2008 [REPLY]
user-pic

>>3 takuya さん

こんばんわ^^

> 再構築時に「MTPageContentsは不明なタグです」とエラーがでます。

まず、PageBute プラグインは正しくアップロードされてるか確認してください。
プラグインの確認は「システムメニュー」>「プラグイン」を選択して頂くと、今インストールされてるすべてのプラグインの一覧が表示されるはずです。
考えられる要因を以下に記します。

  1. その中に PageBute プラグインがありますか!?
    ない場合には、mt/plugins/ フォルダの中に再度アップロードします。
  2. PageBute プラグインがエラーしてませんか!?
    エラーしてる場合、PageBute のテキストがグレーアウトされます。

また、わたしのサイトで実際に使ってるコードを以下に記しますので参考にしてください。

<!-- ▼分割するページ数を設定▼ -->
<mt:SetVar name="page_bute_cnt" value="5">
<!-- ▲分割するページ数を設定▲ -->
<!-- ▼1 ページに表示するエントリ数とページ分割する総エントリ数を取得▼ -->
<$MTEntriesCount setvar="entcnt"$>
<mt:SetVarBlock name="entall"><$mt:GetVar name="entcnt" value="$page_bute_cnt" op="*"$></mt:SetVarBlock>
<!-- ▲1 ページに表示するエントリ数とページ分割する総エントリ数を取得▲ -->
<!-- ▼分割するページ数分ループ▼ -->
<MTPageButeContents count="$entcnt">
<!-- ▼ページ分割する総エントリ数分ループ▼ -->
<MTEntries limit="$entall">
<!-- ▼エントリの概要用のテンプレートモジュール読込み▼ -->
<$mt:Include module="ブログ記事の概要"$><$MTPageButeSeparator$>
<!-- ▲エントリの概要用のテンプレートモジュール読込み▲ -->
</MTEntries>
<!-- ▲ページ分割する総エントリ数分ループ▲ -->
</MTPageButeContents>
<!-- ▲分割するページ数分ループ▲ -->
<!-- ▼ナビゲーションバー▼ -->
<ul class="bute_navi">
<mt:IfPageButeBefore><$MTPageButeBefore delim="Prev"$></mt:IfPageButeBefore>
<$MTPageButeLists$>
<mt:IfPageButeNext><$MTPageButeNext delim="Next"$></mt:IfPageButeNext>
</ul>
<!-- ▲ナビゲーションバー▲ -->

分からないことがあればご連絡くださいテレテレ
そのままコピペしちゃダメですよ。
あくまでもサンプルということで。

#5: Posted by takuya @ August 2, 2008 [REPLY]
user-pic

返信ありがとうございます!!
原因を探ってみたら、コピペミスでした!!
お恥ずかしい・・・あせあせ

エントリー本文からコピーしたところ、コードが消えかけていたみたいです。。
IEのバグですかね?
FireFoxで見たところちゃんと表示されていました。
実はサイト全体がセンターよせだったんですねワクワク

貴重なお時間をいただいてしまい、本当に申し訳ありませんでした。
また何かご質問するかもしれませんが、
その時はよろしくお願いします!!

#6: Posted by Author Profile Page bzbellからtakuyaへの返信 @ August 2, 2008 [REPLY]
user-pic

>>5 takuya さん

こんばんわ^^

よかったですね。解決できてうぅ~ん
わたしで分かることでしたらいつでもどうぞ。

今後ともどうぞよしなにもじもじ

#7: Posted by Author Profile Page glass @ August 5, 2008 [REPLY]
user-pic

いつもお世話になっています。
MTPaginateのプラグインから新しいpagebuteに変更しました。
ホームぺージの項目「NEW」ではびっくりするぐらい簡単に上手くできました。
http://glass-house.ne.jp/
しかし、Archivesでは、一覧表示と、ブログ記事が混在してしまいます。
一覧で表示するようにつくりたいのですか、どのようにしたら良いでしょうか。
記述がおかしいと思いますが、ご教授よろしくお願いできますか。
いつもすいません、よろしくお願いします。

#8: Posted by Author Profile Page bzbellからglassへの返信 @ August 5, 2008 [REPLY]
user-pic

>>7 glass さん

こんばんわ^^

うわぁ~うるうるカックいいのができましたねぇワクワク

> しかし、Archivesでは、一覧表示と、ブログ記事が混在してしまいます。
> 一覧で表示するようにつくりたいのですか、どのようにしたら良いでしょうか。

はい。
glass さんとこのアーカイブだと普通に時系列で一覧表示させたい…ということでよいですね ふつう
テンプレートの構成をよく知らないので想像で言いますあせあせ
アーカイブインデックスのテンプレートの中で、「ヘッドライン」とかいうテンプレートモジュールの後に「エントリの概要」とかいうテンプレートモジュールを MTInclude してませんか!?

恐らく「ヘッドライン」ってのがブログ記事の一覧表示( 目的の一覧表示 )して、「エントリの概要」ってのが通常の記事概要にあたるテンプレートモジュールかと思われます。
ですので、単純に「エントリの概要」を MTInclude してる行をバッサリと削除しちゃえば OK かとあせあせ
心配でしたら アーカイブインデックスのテンプレートを見せて頂ければ的確にお答えすることができますようぅ~ん

まずはテキストファイルなどにバックアップ( コピー & ペースト )してからさ削除してみるといいですよふつう

#9: Posted by noriko @ March 7, 2009 [REPLY]
user-pic

mt_memo-4.23-pandora3.18 で
bzbellさんは
index_main.mtml で
◆page_bute_cnt :ページ分割数
<mt:SetVar name="page_bute_cnt" value="5">
サンプル index_main.mtml
<ul class="bute_navi">
<mt:For var="page_ctr" from="1" to="$page_bute_cnt">
以下略 ・・・
</mt:If>
結果 下記の様になりますね。
<ul class="bute_navi">
<span>1</span>
<li><a href="javascript:void(0);" onkeypress="javascript:void(0)" onclick="$('#alpha').LoadPage('http://bizcaz.com/index_2.php', '');">2</a></li>
以下略 ・・・
</ul>
サンプルの様に書き換えて
クリックしても、上にスクロールしましたが、ローダー画像が回りっぱなしになります。
index_1.php ~ index_5.php は作成されているのに。

ノーマルでは、スクロールしないで表示されますね。
上にスクロールして、index_1.php ~ index_5.phpを表示したいのです。
<a href="javascript:void(0);" onkeypress="javascript:void(0)" onclick="$('#alpha').LoadPage( 以下略 ・・・

以上、宜しく御願い致します。

#10: Posted by Author Profile Page bzbellからnorikoへの返信 @ March 7, 2009 [REPLY]
user-pic

>>9 noriko さん

こんにちわ^^

ちょとよく分からないあせあせので確認しますが、noriko さんはウチのサイトのようにページ移動なしに、Ajax を使って index1~index5 を表示させたいということでしょうか。
もしそうだとしたら、以下のお約束を守って頂けるのでしたらウチのサイトで使ってるテンプレートをお渡しすることはできます。

  1. Ajax を使ったページ表示を設置してからの、何らかのトラブルに見舞われてもサポートできません。というのも、noriko さんがやろうとしてることはそれなりにテクを要する内容だからです。
    最初の設置に関してはわたしが責任持ちます。ですが、以降のメンテナンスに関しては noriko さんで行ってください。

  2. Ajax を使って表示したいページ内( index1 ~ index5 )に JavaScript を組み込まないでください。
    各サイトでいろんな JavaScript のコードが配布されてますが、それらを無闇に組み込んでしまうとトラブルに見舞われます。
    具体的には、表示したいページ内に JavaScript が含まれていると画面が真っ白になります。

    これは、JavaScript 内に document.write( or document.writein )が含まれていた場合 jQuery が自動的に実行してくれるのですが、この時の表示先が特定の場所ではなく、ページ全体に表示してしまう為です。

    回避策としては iframe、LazyDocWrite を使うなどがあります。

以上です。
noriko さんがトラブルが発生してもご自身で回避することが可能でしたら問題ないと思いますうぅ~ん
でも、ちょとムズかしいようでしたらあまりオススメしませんキョロキョロ

#11: Posted by norikoからbzbellへの返信 @ March 8, 2009 [REPLY]
user-pic

>>10 bzbell さん
>ウチのサイトのようにページ移動なしに、Ajax を使って index1~index5 を表示させたいということでしょうか。
>もしそうだとしたら、以下のお約束を守って頂けるのでしたらウチのサイトで使ってるテンプレートをお渡しする
>ことはできます。

ページ移動なしに、Ajax を使って index1~index5 を表示させたいのです。
私の自己責任にて、お約束は守ります。私しか使用致しません。
bzbell さんはAjaxを使って 色々テンプレートに組み込んで有りますね。
他のサイトのテンプレートセット等は、自分で組み込まなければならないのが
殆んどみたいな気が致します、
bzbell さんのテンプレートセットに非常に興味が有り、勉強にも成ります。

以上の件、宜しく御願い致します。

#12: Posted by Author Profile Page bzbellからnorikoへの返信 @ March 8, 2009 [REPLY]
user-pic

>>11 noriko さん

こんにちわ^^

お勉強目的なんですね。それでしたら問題ないと思いますふつう
ちょとお待ちくださいね。組み込んだテンプレートセットを作成してメルにてお送りしますワクワク

- 追記 -

先ほど noriko さん宅にテンプレートセットをお送りしましたのでご確認ください。

 Post a Comment

 

コメント用フィード