2016年12月16日 : してログ

画像付きツイートは希望通りの動作なのですが、画像が無いと image not found という画像になってしまう。当然と言えば当然なのだが、これではちょっと困るため回避方法を考えてみた。

必ず RSS フィードに画像を出力する

記事内に画像が入っているか調べ、入っていない場合はカテゴリに対応するアイコンやアイキャッチ画像を追加してしまう方法です。WordPress の人は改造してこの方法を使っている人がいるみたいです。

RSS フィードを画像付きと画像なしに分ける

記事内の画像の有無によって、画像付きの記事だけのフィードと、画像なしの記事だけのフィードに分けるようにします。画像付きのほうは「post a tweet with image to」で登録し、画像なしは「post a tweet to」で登録します。

ISS 17:54
ISS 17:54

左側から真ん中にかけて通過したのが ISS で、それよりも目立っちゃってるのは飛行機です。本当は、HTV6 が飛行しているところを撮りたいのですが、空が明るかったり、日本から見えなかったり、悪天候だったりで、なかなか条件が合いません。離脱のときはデブリ関係の実験をするみたいなので、ワンチャンスあるかも知れません。

12/16 17:54 新潟市西区
iPhone6s+(NightCap Pro)
Tags #ISS

連想配列の配列をループしながら、分類項目でキーブレイクして階層的な HTML に出力したい場合、前後のタグを挟む条件分岐や最終部分の閉じタグの書き方が煩雑になりがちです。こういった処理は度々書いていますが、もう少し簡潔に書けないものかとマニュアルを読んでいたところ、currentnext などの関数が使えそうでしたので試してみました。

例として、都道府県で市町村をグループ化して、セレクトボックスの HTML を出力するコードを書きました。まだ、$opt の初期化が2箇所にあるのが気に入りませんが、タグでラップする部分は分かりやすいと思います。

$dataset = array(
	array('pref'=>'新潟県','city'=>'新潟市'),
	array('pref'=>'新潟県','city'=>'長岡市'),
	array('pref'=>'新潟県','city'=>'上越市'),
	array('pref'=>'新潟県','city'=>'村上市'),
	array('pref'=>'長野県','city'=>'長野市'),
	array('pref'=>'長野県','city'=>'松本市'),
	array('pref'=>'長野県','city'=>'上田市'),
	array('pref'=>'長野県','city'=>'岡谷市'),
	array('pref'=>'石川県','city'=>'金沢市'),
	array('pref'=>'石川県','city'=>'七尾市'),
	array('pref'=>'石川県','city'=>'小松市'),
	array('pref'=>'石川県','city'=>'輪島市'),
);


$code = $opts = '';

while ($row = current($dataset)) {

	$opts.= "<option>{$row['city']}</option>";

	if (!($ner = next($dataset)) || $row['pref'] != $ner['pref']) {
		$code.= "<optgroup label='{$row['pref']}'>{$opts}</optgroup>";
		$opts = '';
	}

}

echo "<select>{$code}</select>";