OSをMavericks => El Capitan にしたらIDEなどでscssが使えなくなった

ようやくMacOSを Mavericks から El Capitanにしてみました。
Homebrewの問題などはいくつかの記事を見てなんとかなった。ところが普段使っているphpstormでscssコンパイルができなくなった。
gem listではsassとscssは認識されている。

とりあえずsassとscssのgemを再インストールしてみようとuninstallは出来たものの、
インストールができない様子。

$ sudo gem install sass
Password:
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/sass

sudoにしてるのにnot permittedとなってしまう。
探したらこちらに解決法がありました。

https://github.com/sass/sass/issues/1768

ここに書いてあるように

sudo gem install -n /usr/local/bin sass
sudo gem install -n /usr/local/bin scss

このコマンドでインストールができました。

IDEなどでの設定(phpstormではwatcher)のsassのパスはこれで大丈夫でした。

/usr/local/bin/scss

↑以前は/usr/bin/scss
scss-lintなども同様に使えなくなっていました。

これ以上の詳しいことはあまり理解できていないのですが、
これでphpstormなどでは元どおり使えるようになりました。

追記:こちらの記事で not permitted になる理由が理解できました。

WordPressの body_class()にページスラッグの決定版

以前書いた記事WordPressの body_class()にページスラッグをの発展型です。
functions.phpに以下を追加。

<br />
function pagename_class($classes = '') {<br />
    if (is_page()) {<br />
        $page = get_post(get_the_ID());<br />
        $classes[] = 'page-' . $page->post_name;<br />
        if ($page->post_parent) {<br />
            $classes[] = 'page-' . get_page_uri($page->post_parent) . '-child';<br />
       }<br />
  }<br />
  return $classes;<br />
}<br />
add_filter('body_class', 'pagename_class');<br />

6行目 get_page()がdeprecatedになっていたのでget_post()に変更しました

これで、<body>タグに
ページスラッグのclass
.page-[pagename]
と、親ページを持つ場合は
その親ページスラッグのコページであることを示すclass
.page-[parent-pagename]-chid
が追加され、ページ投稿でのデザインの振り分けが自由自在になりそうです。

WordPressでアメブロなど外部RSSの「PR:」から始まる広告をはじく

WordPressのSimplePieオブジェクトを使ってアメブロなど(っていうかほとんどアメブロ)の外部RSSのデータを表示するとき。
「PR:」からはじまる広告をはじく、のをショートコードにしたもの。

まだ不完全ですがメモ程度に。

functions.phpに以下を追加。

<br />
if ( !function_exists( "my_rss" ) ) {<br />
    function my_rss( $atts ) {<br />
        extract( shortcode_atts( array(<br />
                    'rss' => '',<br />
                    'nom' => '5',<br />
                        ),$atts ) );<br />
        $feed = fetch_feed( $rss );<br />
        $str = '';<br />
        $blog_title = $feed->get_title();<br />
        $str .= '</p>
<ul class="my_rss">
            ';<br />
        foreach ( $feed->get_items(0,$nom) as $key => $item ) {<br />
            $entry_title=$item->get_title();<br />
            if (!preg_match("/^PR:/", $entry_title)){<br />
            //↑ここで「PR:」をはじいている<br />
            $str.= '</p>
<li><a href="' . $item->get_permalink() . '">' . $entry_title . '</a>';<br />
            $str.= ' <small>' . $item->get_date( '(n/j)' ) . '</small></li>
<p>';<br />
            //このあたりはお好みで<br />
        }<br />
      }<br />
        $str.='
            </ul>
<p>            ';<br />
        return $str;<br />
    }<br />
}<br />
add_shortcode( 'myrss','my_rss' );<br />


これで
[myrss rss=RSSのURL nom=投稿数(デフォルトで5)]

などとする。
ただこのままだと「PR:」があるとそのぶん表示数が減ってしまいますね。

ところでショートコードをウィジェットで使うときは functions.phpに

add_filter( 'widget_text','do_shortcode' );

を追加すれば出来るんですね。

FuelPHP Ormオブジェクトのリレーションでひっかかった

ここんところ、wordpressは相変わらずずっとやりつつも、新しめのPHPフレームワーク「FuelPHP」を勉強しています。

まだまだフレームワーク初心者で、ほかのフレームワークなどでもちゃんと扱ったことがないせいか、DBテーブルのリレーションの使い方でひっかかっのでここにメモします。
“FuelPHP Ormオブジェクトのリレーションでひっかかった” の続きを読む

WordPressの body_class()にページスラッグを

WordPressテーマのheader.phpあたりにある

   <body <?php body_class(); ?>>

こと細かにclassが出力されるので便利だけど、pegeの内容ごとにデザインを変えたい場合、デフォルトだとpageのslugが出てこないので不便です。
そこでcodexのbody_class()をみると、簡単に拡張できる仕様になっていることが分かりました。なので例えばこんなかんじにすればもっと助かります。
   <body <?php
        if (is_page()) {
            $page = get_page(get_the_ID());
            $slug = $page->post_name;<br />
            body_class("page-" . $slug);<br />
        } else {<br />
            body_class();<br />
        }<br />
        ?>>

ほかにも条件分岐によってかなり柔軟なclass割り当てができますね。

2013/6/27追記

このような記事を見つけました。こちらのほうがずっとスマートですね。
functions.phpに以下を追加します。

function pagename_class($classes = '') {<br />
         if (is_page()) {<br />
             $page = get_page(get_the_ID());<br />
             $classes[] = $page->post_name;<br />
         }<br />
	return $classes;<br />
}</p>
<p>add_filter('body_class','pagename_class');

2014/3/16追記

親ページについても表示できるように、この記事をさらに実用的にしました。
→ WordPressの body_class()にページスラッグの決定版

タイムテーブル作成スクリプト

何か小劇場に役立つwebアプリを作ろうとずっと考えているのですが、タイムテーブルのhtmlをGUIで入力した通りに作れるスクリプトをjQueryで書いてみました。

http://stage.ready.jp/timetable/
例)こんなテーブルのタグがかんたんに出来ます。

2/5 2/6 2/7
14:00
18:00
19:00

できたhtmlはそのままタイムテーブルや、残席情報などに使えます。
構造はシンプルなもので、今はただhtmlを書き出すだけなので実用性はまだちょっと低いです。htmlが多少分かる人でないと使えないかもです。いずれはそのままブログに埋め込んだり、残席情報などを画像でツイッターにツイートできたりするようになったらいいなあ。

wordpressテーマでjQueryを使って簡易なajaxページ遷移

wordpressのテーマ内でajaxを使ってのページ遷移は、jQueryの.load()を使うと意外と簡単にできそうです。
$jQuery.load()を使えば、自分のサイト内のページの任意の箇所を非同期通信で読み込んで現在のページの任意の場所に表示させるというアクションが、基本的にはたった一行でできます。すごいですよね。大体こんなかんじです。

$('表示させる箇所のセレクタ').load('サイト内のURL 表示させたい箇所のセレクタ');

で、wordpressのテーマ内でも同様に使えます。

例として、デフォルトのテーマであるtwentytenを使った場合のシングルページでのやり方。 “wordpressテーマでjQueryを使って簡易なajaxページ遷移” の続きを読む

wordpressテーマ内sidebar.phpで条件分岐タグis_home()がきかない

wp-adminの設定>表示設定でフロントページを固定ページにして、その固定ページテンプレートのテーマファイル内でquery_posts()を使うなどして特定あるいは複数のカテゴリーを指定していると、テーマファイルheader.phpで条件分岐タグis_home()は使えても、sidebar.phpでis_home()がきかなくなるという現象が起こるようです。 “wordpressテーマ内sidebar.phpで条件分岐タグis_home()がきかない” の続きを読む

タイムテーブルのやつ、続き

time2
機能追加しました。タイトル部分をクリックすると、公演名などのテキストが入れられて、リンク式で表示される際にタイトルとして表示されます。
まだわかりにくいですが、かんたんな使い方を書いておきました。
また、はじめに入っていたサンプルのデータをいったん消しました。

演劇などのタイムテーブル&残席情報をかんたんにつくれます

timetable

おもに演劇などのタイムテーブルと残席情報をかんたんに書き出せるというスクリプトをつくっています。
まだ開発段階ですが、興味のあるかたはさわってみてください。
HTMLで出力してブログなどに貼ったり、リンク先として指定することによっても使えます。
使い方などもそのうちに書き足していきます。

追記:まだ機能が少ないですが、もうちょっと使い勝手のいい物を作りました。