読者です 読者をやめる 読者になる 読者になる

rioRESERVoir

Allajah/Rioの個人ブログ

【WordPress プラグイン】MTS Simple Booking C でカレンダーをクリックした時にページトップに戻らないようにする.

WordPress

Word Pressで予約を受け付けるプラグインの一つにMTS Simple Booking Cというものがある.
導入はこちら参考にするといい.
www.nishi2002.com
予約の時に入力させる項目を増やすときはここを参考にした.
medical-index.jp
この2つを参考にして導入できたはいいが,一つ問題が残った.

問題点

ページに表示されたカレンダーの◯をクリックすると,ページの一番上に戻ってしまい,
もう一度カレンダーのとこまでスクロールしないといけなかった.

解決法

予約カレンダーを

<div id="booking">
<?php 
echo do_shortcode("[monthly_calendar id=1]"); 
?>
</div>

のように適当なidをつけた領域にいれる.この場合はbookingというidを付与した.

wp-content/plugins/mts-simple-booking-c/mtssb-front.phpの300行目あたりの

    if ($mark == 'vacant' || $mark == 'low') {
      echo $linkurl ? ('<a class="calendar-daylink" href="' . $linkurl . '">') : '';

を以下のように変更する.

    $jump_to_booking_str="#booking";
    if ($mark == 'vacant' || $mark == 'low') {
      echo $linkurl ? ('<a class="calendar-daylink" href="' . $linkurl . $jump_to_booking_str . '">') : '';

カレンダーがクリックされた時にジャンプするURLに予約カレンダーのidを最後につけることで,ページのトップではなくカレンダーの領域にジャンプするようにした.

解決法を見つけるまで

Google Chromeデベロッパツールでカレンダーの◯のリンク先を確認したところこんな感じになってた.
f:id:Allajah:20150323013928p:plain
vimを起動して, :vimgrep calendar-daylink ** して,mtssb-front.php内の処理を見つけた.

vimgrep便利