IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / javascript / はてなブログの ヘッダ>タイトル下 を有効に使う

はてなブログの ヘッダ>タイトル下 を有効に使う

2019/09/10 javascript, はてなブログ

はてなブログのテーマ「imz Pickup」をテーマストアに上げているのですが、このテーマについて、こんな大層なものはいらないけれど、トップページだけにピックアップ記事のようなものを表示する方法を教えてほしいというリクエストをいただきました。

  • はてなブログテーマ imz Pickup とは
  • サイドバーのモジュールを取得する
    • HTML モジュールの場合
  • モジュールをヘッダ > タイトル下に移動する

はてなブログテーマ imz Pickup とは

記事はこちらです。

www.imuza.com

テーマストアはこちらです。

imz Pickup – テーマ ストア

どういうテーマかといいますと、Javascript で様々な機能を追加するテーマなんですが、そのひとつに、サイドバーのひとつのモジュールをトップページでは ヘッダ>タイトル下 に移動するものがあります。そうしますと、そのモジュールは、トップページではタイトル下に、記事ページではサイドバーのトップなど(位置は設定による)に表示することができます。

タイトル下に HTML を書いておけばいいという考え方もありますが、それですと全てのページに表示されることになり、非表示にするには display:none とするしかなく、SEO的にはあまりよろしくないのではと思います。

サイドバーのモジュールを取得する

まず移動したいモジュールを取得する方法です。

デザイン > カスタマイズ > サイドバー のモジュールはそれぞれクラス名が付与されています。hatena-module-search-box, hatena-module-recent-entries, hatena-module-entries-access-ranking, hatena-module-category などです。

クラス名を指定して移動したいモジュールを取得します。

const removeElem = document.getElementsByClassName('モジュールのクラス名')[0];

これで目的のモジュールを指定できます。ただし、getElementsByClassName はすべての要素を取得してきますので、配列の添字が必要になります。同じモジュールを複数挿入していなければ最初の要素は [0] で指定します。

HTML モジュールの場合

HTML モジュールの場合は、hatena-module-html のクラス名が付きます。この場合も、複数の HTML モジュールを挿入した場合は添字で指定することになりますが、いろいろカスタマイズしている間に位置が変わってしまうこともありますので、その場合は次の方法で指定します。

まず、HTMLモジュールの内容全体を <div id="pickup-wrap"></div> で括っておきます。その上で、

const removeElem = document.getElementById('pickup-wrap').parentNode.parentNode;

とすれば、指定した HTMLモジュール全体が取得できます。

これで移動する要素は取得できました。

なお、要素を指定する方法は、たとえば、サイドバー内の順番で取得する方法などいろいろあります。

モジュールをヘッダ > タイトル下に移動する

ヘッダ > タイトル下 は、使用しない場合には HTML要素は何も挿入されませんので、まず、テキストボックスに <div id="top-editarea-inner"></div> と入れておきます。

その上で、下のスクリプトを デザイン > カスタマイズ > フッタ に入れます。

(2019.9.15)9.10付けの記載には間違いがあります。以下は修正されています。

<script>
(function(){
    // 移動先がなければ戻る
    const destElem = document.getElementById('top-editarea-inner');
    if(destElem === null) return;
    // トップページなら
    const bdClasses = document.body.classList;
    if(bdClasses.contains('page-index')){
        // ピックアップモジュールを取得
        const removeElem = document.getElementById('pickup-wrap');
        // ピックアップモジュールがあれば移動する
        if(removeElem !== null) destElem.appendChild(removeElem.parentNode.parentNode);
        /* クラス名で取得した場合の例
          removeElem の比較対象は null ではなく undefined が正しいです
       const removeElem = document.getElementsByClassName('hatena-module-category')[0];
       if(removeElem !== undefined) destElem.appendChild(removeElem);
       */
    }
}());
</script>

これで、目的のサイドバーモジュールがタイトル下に移動できます。

後は、CSSで自由にデザインしてください。

はてなブログのサイドバーをウィンドウ下に粘着
CSS・画像の縦横比を維持してレスポンシブデザイン
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/01/26

WordPress:メニューのid,classを整理カスタマイズ

2023/01/19

WordPress:JSON-LD構造化データをプラグインなしで出力

2023/01/11

WordPress:OGPタグをプラグインなしで挿入する

2022/12/27

WordPress:canonicalタグをプラグインなしで制御する

2022/12/21

WordPress:robotsメタタグをプラグインなしで制御する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ214
  • WebTips108
  • javascript98
  • Joomla!88
  • Windows68
  • CSS63
  • Wordpress59
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Plamo33
  • Google32
  • はてなプラグイン25
  • php22
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • genesis6
  • ConoHa WING6
  • Git入門6
  • Python5
  • Android5
  • スマートフォン4
  • PC全般4
  • 静的サイトジェネレーター3
  • Firefox3
  • SSD3
  • Facebook3
  • Blankslate3
  • Docker3
  • Mactype2
  • GitHub2
  • youtube1
  • rails入門1
  • Twitter1
  • はてなブクマ1
  • 映画1
  • Xserver1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com