9月 2012

  • 色々やりました

    By mattz, 2012/09/28

    Drupalのテーマを変更しようかなと思って、よさそうなテーマを有効にしてみたところ、なぜか500 Errrorが出るようになりました。
    sqliteなんだし、cpコマンド一つでDBのバックアップできるんだからしておけばよかったんですが、それを怠ったために簡単に復旧できず、というか、簡単に、どころか、関連してそうなテーブルを色々とUpdateしてみたりはしたのですが、復旧すること叶わず。いい機会なので、さくらインターネットの共有MySQL以上にパフォーマンスの悪いsqliteでの運用は諦めて、MySQLで復旧させることにしました。

    この辺のことを思い出して、エントリ(node)関連とコメント関連のレコードは全部insertしたつもりだったのですが、なぜか本文が表示されないもので、結局本文は全部手作業で入れ直し。

    んでもって、さらにいい機会なのでもう少しブログらしくカスタマイズしてみようといくつかモジュールとかブロックを追加してみました。

    追加したモジュール

    Related Links

    個別エントリの下部に「関連しそうなエントリ」を表示するのに便利なモジュール。

    関連しそうなエントリを表示できるようなるまでにやったこと。

    1. Releted Linksの設定(admin/config/search/relatedlinks)で、LINK TYPEがDiscovered linksのものだけ有効化。
    2. 同じくコンテンツタイプはブログエントリーのみチェック。
    3. ブロックの管理(admin/structure/block)で、「Related links: Discovered links」をコンテンツの下に表示するように設定。
      1. コンテンツリージョンに表示したブロックはタイトルが表示されないっぽいので、「関連しそうなエントリ」っていう見出しを表示するだけのブロックを作って追加し、「Related links: Discovered links」の上に表示されるように設定。
    4. CSS Injectorで少し表示を調整。

    Tagadelic

    タグクラウドを表示するのに便利なモジュール。まぁ実は前からインストールはしてあったんですが、使い方がよくわからなくて使えていなかったのを使えるようにしただけだったりします。
    タグクラウドを表示できるようになるまでのステップ。

  • ブロックの管理(admin/structure/block)で、「Tags in Tags」ブロックをサイドバーに表示するように設定。
    1. Tagadelicモジュール(と、Tagadelicに必要なモジュール)を有効化。
    2. tagadelicの設定(admin/config/content/tagadelic)を確認。確か並び順だけ変更。
    3. コンテンツタイプの設定(admin/structure/types)で、ブログエントリーの表示の管理で、フィールドタイプが「ターム参照」、ウィジェットが「タームの自動補完ウィジェット(タグ付け)」なフィールドを追加。
    4. ブロックの管理(admin/structure/block)で、「Tags in Tags」ブロックをサイドバーに表示するように設定。

    追加した自作ブロック

    関連するエントリという見出しを表示するだけのブロック

    (前述)

    前のエントリ、次のエントリへのリンクを表示するためのブロック

    モジュールを探してみたんですが、探し方が悪いのかいいのが見つからなかったので、新規のブロックでフォーマットがPHP Codeなブロックを追加。

    codeの中身はこんな感じ。

    <?php
    $node = node_load(arg(1));
    if ($node->type=='blog') {
    $q = "select a.nid, a.title ,b.alias from {node} a "
       . "left join {url_alias} b on concat('node/',a.nid) = b.source where a.type = 'blog' and a.created < "
       . $node->created." order by a.created DESC limit 0, 1";
    $res = db_query($q);
    if (count($res) ==1) {
      foreach($res as $row) {
        if ($row->alias) {
          $links[] = sprintf(
            '<li class="prev"><a href="/%s">< 一つ前のエントリ<br />%s</a></li>',
            $row->alias, check_plain($row->title)
          );
        } else {
          $links[] = sprintf(
            '<li class="prev"><a href="/node/%s">< 一つ前のエントリ<br />%s</a></li>',
            $row->nid, check_plain($row->title)
          );
        }
      }
    }
    $q = "select a.nid, a.title ,b.alias from {node} a "
       . "left join {url_alias} b on concat('node/',a.nid) = b.source where a.type = 'blog' and a.created > "
       . $node->created." order by a.created ASC limit 0, 1";
    $res = db_query($q);
    if (count($res) ==1) {
      foreach($res as $row) {
        if ($row->alias) {
          $links[] = sprintf(
            '<li class="next"><a href="/%s">一つ後のエントリ ><br />%s</a></li>',
            $row->alias, check_plain($row->title)
          );
        } else {
          $links[] = sprintf(
            '<li class="next"><a href="/node/%s">一つ後のエントリ ><br />%s</a></li>',
            $row->nid, check_plain($row->title)
          );
        }
      }
    }
    echo '<ul id="prev-next" class="clearfix">';
    echo join('', $links);
    echo '</ul>';
    }
    

    はてなブックマーク

    これも新規ブロックでフォーマットがPHP Codeなブロックを追加。

    <?php
    $node = node_load(arg(1));
    $base_url = 'http://mattz.xii.jp/';
    $q = sprintf("select alias from {url_alias} where source = 'node/%d'", $node->nid);
    $url = 'node/' . $node->nid;
    $res = db_query($q);
    if (count($res) > 0) {
      foreach($res as $row) {
        $url = $row->alias;
      }
    }
    echo "<a href='http://b.hatena.ne.jp/entry/$base_url$url'><img src='http://b.hatena.ne.jp/entry/image/$base_url$url' /></a>";
    ?>
    

    まだ少し手を入れたいところはあるけどとりあえずこんな感じで。

    タグ