昨日からのお話。

以前つとめていた会社の後輩から見積依頼がきた。

その後輩は既に独立して自分で事業を営んでいる。

しかし、正直私からしてみると独立するにはスキルがなさ過ぎる。

スキルが無くても、やる気と努力で成長していけばいいのだけれど、やる気も見当たらない、努力もしないからもうどうしようもない。

以前は仕事を回したりしていたけれど、棚ぼたの仕事に文句を言う始末。

志無くして起業したものはこんなものだろうで済ませればそれまでだが、まだ若いので何とかしてやりたいとは思う。

ということで、依頼された見積を出すことに。

3つの見積の内、2つは仕様もヘチマもない。単に数ページのデザイン+コーディング。CMS設置があってもデフォルトでOKというものだったが、最後の一つは違っていた。

雑ではあるが、画面遷移図があり、どこのページに該当するのかは不明だがページレイアウト案も示されていた。

これは他の2つと違って、ある程度サイト運営に目的がありそうだ。
少なくともCMSも指定してあるし、何らかの仕様を整える必要があると思ったので、管理情報と表示についての関係を後輩に聞いてみた。

「こうこうこうなんじゃないですかね?」

はぁ!?耳である。

なんで疑問形

そんなんでいいの?、後で仕様変更になったら別途請求だけどOK?
ってか、クライアントと確認もしないで、しかもCMSの知識全く無いのに疑問形で仕様決定なんてトラブルと評価減のもとだぞ!っと返してみる。

「わかりました。明日先方に確認します。」

で、昨日終了。

本日午前、先程後輩からURLが記載されたメールで届いた直後電話があった。

「メールのURL見れます?」

ご指示に従いメールに記載されたURLにアクセスしてみる。

案の定、クライアントの現状サイトである。

「こんな感じにしてもらえばいいんじゃないですかね?」

またしても疑問形!

しかも昨日確認しとけよ!って念押ししたこと全く聞いてない様子。

しっかり確認取るように返しても、午後の電話で午前とは別のサイトのようにしてくれっていう始末。

しかも少し話が進展しそうだなと思ったのか、新たに仕様の注文を付けてきやがった!

仕様の設定を確認したら、

「こうこうしてもらえば良いんじゃないですかね?PDFもこういう風にしてあるからそういうことじゃないですかね?」

カッッッッッッッッッッッチ~~~~~~~~~~~ン!!!!!!むかっ

薄い…、薄すぎるぅぅぅ~~~~~!

そんな薄っぺらい仕事の仕方で何とかなるかと思っている性根に心底腹が立つ!!!

ブチ切れそうになるのをグゥッッと堪えつつ、憶測仕様に対しての条件分岐毎の対処を確認してみると、

「う~ん、多分こうなんじゃないですかね?

あの人そこまで考えてないと思いますよ。」

お前が言うなぁ~~~~~~~~~~~~~~!!!!!

そういうことを話し合って詰めて来るのが窓口としての仕事だろうがぁ~~~!!!!!


あ~あ、疲れた。ガーンダウン

昨年から再三再四説得したことも全く届いていないようだ。

もう面倒見切れん。

もう2・3年もしたら30歳なんだから、もっとしっかりしていこうよ!



最近流行のAR。

なかでもJunaioというアプリが秀逸な感じ(他をそんなに見ていないけど…)。

なんと言っても、コンテンツ毎、マーカー毎にアプリ若しくはアプリ内での分岐(MyChannelはあるけど)が基本無いので、Junaioアプリがあれば事足りるのがとても良い。

2014年ごろにはスマホに標準搭載を目指しているらしいし。

何よりコンテンツを提供する側も無料でできる事が最高!!!


しかしながら設置に問題がある。

情報が無いのだ!日本語の情報が!!

マニュアルサイトも全て英語だし、日本語で設置方法を掲載しているサイトもほとんど無い。

翻訳サイトの翻訳も、ちょっと難しい英文になると、まるで意味のわからない日本語に変換される。むしろまだ英語の方がましなほどだ。

どうせ英文説明しか無いのだから、単語翻訳をしながら気長にやっていくつもりで「junaio manual」でググってみた。

すると、あった~!!!

宮城教育大学が日本語のマニュアルを作成されていた!

しかもPDFで!ありがとう栗木さん!

早速ダウンロード。

若干情報が古いのかな?

GettingStartedのURLが違っていた。今はココ↓
http://www.junaio.com/develop/docs-api-10/helper-libraries/
↑ココの「Getting Started with PHP Package」からダウンロード。

ダウンロードしたファイルをマニュアルに従って各ファイルをアップロード。

ここでZendFrameworkが必要になるので、tar.gzファイルを下記からダウンロード。
http://framework.zend.com/download/current/

ZendFrameworkはPublic_htmlの外(Public_htmlと同階層)に設置することにした。

私はさくらインターネットなのでwwwの外に設置をする。

まずはwwwの外にZendFrameworkのtar.gzファイルをアップロード。

パーミションとかがあったら面倒くさいので、tar.gzファイルのままアップロードしてコマンドで解凍する。

Macユーザーなので、ターミナル(アプリケーション>ライブラリ)を起動。

シェル>新規リモート接続を選び、新規リモート接続ウィンドウを開きます。

サービスは“セキュアシェル(ssh)”を選択し、サーバー枠下の“+”をクリックしてサーバー名あるいはIPを入力。

ユーザはさくらインターネットでのユーザ名、SSHはさくらインターネットはSSH2らしい(http://support.sakura.ad.jp/manual/rs/others/ssh.html )のそのように設定して接続!

マニュアルとは若干コードが違うけど、基本的なことは同じなのでコマンドをググりながらZendFrameworkを解凍。

解凍されたディレクトリにはZendFramework以下にバージョン名が付いているので、ZendFrameworkだけのディレクトリ名に変更する。

%mv ZendFramework-1.11.12 /home/xxxxx/ZendFramework

んで以て、ZendFrameworkへのライブラリへパスを通す為にサーバーコンパネ>PHP設定の編集からphp.iniに下記を記述(何故そうするのかは不明…ってか知らなくてもいいかな?)

include_path = "/home/xxx/ZendFramework/library"

以上でZendFrameworkの設定完了。

あっ!そうそう、ターミナルを終了するときはexitコマンドで終了するのを忘れずに!


引き続き、マニュアルに従って作業を進めていけば90%完了する。

マニュアルに載っていない作業は次の通り。

書き出された「tracking.xml」を「tracking.xml_enc」に変更(これで良いのかは不明だけれど、とりあえずこれでValidateのエラーの一つは消える)。

もう1点は<translation>0.0,0.0,0.0</translation>を追記すること。

この<translation></translation>はマーカーに対するコンテンツの場所を示すものらしいけれど、実はGetting Startedのsrc/search.phpには記載が無い。

なので、タグごと追記してやる。

これでValidateでのエラーは消えます。


★最後に注意点!

マニュアルに従って<name>や<discription>を日本語で記述して、文字コードをUTF-8に変更してアップすると、XML宣言のところのエンコーディングにUTF-8と記載してあるのに、ValidateではUTF-8のエンコード非推奨みたいなエラーが出る。

とりあえず今回は英文にしてASCIIコードで作成してみたけれど、うまく公開されたらUTF-8でトライしてみよう。

今日もお仕事でWordPressいじったので忘れないうちに書き留めておく。

今回はサイトのコンテンツ全てがWordPressで管理されている場合に、サイドバーに新着やアーカイブなどの表示をページの分類によって変更する方法。

新着情報やブログのように頻繁に更新される情報ページには、新着リストやカテゴリ、アーカイブなどのナビゲーションがあると便利だけど、あまり更新を行わない固定ページにはちょっと目障りなときもあります。

今回が正にそれ!固定ページのコンテンツには更新記事のナビが表示されないデザインで決定している。

なので、TOPと固定ページには更新記事のナビが表示されないように設定する。

今回のサイトは、TOPと固定ページ、更新情報のページのみで、TOPには共通のサイドバーは配置されない。

つまり、固定ページの場合のみサイドバーの更新情報案内ナビを表示しないようにすることが今回の作業内容。


★☆方法☆★☆★

至って簡単。

WordPressには“条件分岐タグ”なるものがある。

これは条件if文の際に条件の内容を設定できるもの。

TOPページとか固定ページとか単一記事だとか。

また固定ページとかでも、ページIDなどの設定で更に条件を絞り込むことが出来るらしい。
(詳しくはWP Codex 日本語版http://wpdocs.sourceforge.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0 で)

固定ページの絞り込みは『is_page()』タグをif文に組み込めばOK!

書き出しは、

<?php if(is_page()) { ?>

ですが!

今回は固定ページ以外ということなので、書き出しは条件分岐タグを否定したif文にしなければいけない。

否定if文は条件の頭に『!』を付けてやれば条件を否定(false)してくれます。

なので書き出しは、

<?php if(!is_page()) { ?>

となります。

あとはこの下に固定ページでなかったときに表示させる更新情報のナビの為のコードを設置。

if文を『{』で始めているので、最後にif文の締めを記述する。

<?php } ?>

以上で完成。

いつもの如く、自分が忘れないようにするための復習ブログ。

WordPressには記事送りのナビゲーション「←前へ」、「次へ→」がある。

これらはデフォルトでは、投稿された全ての記事が対象となっている。

しかし、設定をカテゴリー単位で変更することができるようである。

例えば
・同一のカテゴリー内のみのページ送り。
・指定カテゴリーの記事を除外してのページ送り。

この処理を管理しているのが「get_previous_post()←前へ」、「get_next_post()←次へ」である。

デフォルトの状態であれば、()の中が空。

同一カテゴリーに絞り込んだ状態にするには、trueを設定する(true)。

と言うことは、デフォルトの記載しない状態は当然(false)。

つまりget_previous_post() = get_previous_post(false)ってこと。

指定カテゴリーを除外するには()内に'(シングルクォート)でカテゴリーIDを囲んでやれば良いらしい。

例えば、get_next_post('1')みたいに。

除外が複数有る場合はget_next_post('1 and 3')のようにandで繋ぐ。


これでスマートなページ送りが完成。

スマホ用のプラグイン“WPTouch”は単体ページ下部に三角矢印でページ送りが表示される。

これも非表示とかにしてしまうところだが、上記設定でカテゴリー内でのページ送りが可能になるので、いかしてあげよう。

plugin/wptouch/themes/default/single.phpの43行目~45行目。

<?php $prevPost = get_previous_post(); if ($prevPost) { ?>
<li><a href="<?php $prevPost = get_previous_post(false); $prevURL = get_permalink($prevPost->ID); echo $prevURL; ?>" id="oprev"></a></li>
<?php } ?>

前の投稿へのボタン設定だけれど、これの43行目と44行目のget_previous_post()を下記のように書き換える。

<?php $prevPost = get_previous_post(true); if ($prevPost) { ?>
<li><a href="<?php $prevPost = get_previous_post(); $prevURL = get_permalink($prevPost->ID); echo $prevURL; ?>" id="oprev"></a></li>
<?php } ?>

つまり、
43行目:
「$prevPostに同一カテゴリ内の一つ前の投稿を代入し、もし$prevPostに投稿が存在したならば」って感じで、

44行目のphp部分:
「$prevPostに一つ前の投稿を代入し、$prevURLには$prevPostの情報の中の“ID”から投稿へのリンク先URLを代入しなさい。そしてそのURLを記述しなさい」ってな感じ。


同様に次の投稿へのページ送りについても、51~53行目。

<?php $nextPost = get_next_post(); if ($nextPost) { ?>
<li><a href="<?php $nextPost = get_next_post(false); $nextURL = get_permalink($nextPost->ID); echo $nextURL; ?>" id="onext"></a></li>
<?php } ?>

下記のようにget_previous_post()を変更。

<?php $nextPost = get_next_post(true); if ($nextPost) { ?>
<li><a href="<?php $nextPost = get_next_post(); $nextURL = get_permalink($nextPost->ID); echo $nextURL; ?>" id="onext"></a></li>
<?php } ?>


しかしいろいろと便利な関数が用意されているもんだ。

感謝感謝。
え~、今回はWordPressのスマホ表示のためのプラグイン「WPTouch」のマルチサイト化への対応を行ってみたいと思います。

正直、今回はなかなか情報が無かったのでちょっと焦りましたが、なんとかできた(みたい^^;)なので、忘れないうちにまとめとこう。

WordPressのバージョンは3.3.1

まずは、インストールしたwptouchプラグインフォルダの中の「wptouch.php」をいじります。

wptouch.phpの651行目あたり、

function get_stylesheet( $stylesheet ) {
if ($this->applemobile && $this->desired_view == 'mobile') {
return 'default';
} else {
return $stylesheet;
}
}

function get_template( $template ) {
$this->bnc_filter_iphone();
if ($this->applemobile && $this->desired_view === 'mobile') {
return 'default';
} else {
return $template;
}
}

とある。

これがテーマを決めている部分らしい。

で、これをどうするかというと、マルチサイト化したら、各ブログ毎にブログIDなるものが発行される。

大元のブログは1、そこから2、3とIDは変化していくのだろう。

ブログIDはDBの「wp_blog」にblog_idと言う項目でも確認出来る。

そのブログID毎にテーマとして設定されている“default”を別のものにしてやるよう記述してしまえばきっとうまくいくはず。

その前に、まずはブログ毎のテーマを用意しておく必要がある。

これはとりあえず「default」を複製して適当な名前にしておく。

ちなみにテーマ「default」はwptouch/themes/に存在する。


で、wptouch.php編集の続き。

上記ソースに、
「もしブログIDが1だったら~、もしブログIDが2だったら~」という命令をつけてやる。

でも、まずブログIDの取得が必要。

これについては、

$mysiteid = $GLOBALS['blog_id'];

こんな書式があるようだ。

いまいちピン子が来ないが、まぁいいだろう。

最終的には下記のようにしてみた。


function get_stylesheet( $stylesheet ) {
$mysiteid = $GLOBALS['blog_id'];  //ブログIDを$mysiteidに代入
if ($mysiteid == 1) {  //もしブログIDが1だったら
if ($this->applemobile && $this->desired_view == 'mobile') {
return 'corp';  //ここは新たにコピーしたブログ1用のテーマの名前
} else {
return $stylesheet;
}
} elseif ($mysiteid == 2) {  //そうでなくて、ブログIDが2だったら
if ($this->applemobile && $this->desired_view == 'mobile') {
return 'portal';  //ここも新たにコピーしたブログ2用のテーマの名前
} else {
return $stylesheet;
}
}
}

//こちらも同様に

function get_template( $template ) {
$this->bnc_filter_iphone();
$mysiteid = $GLOBALS['blog_id'];  //ブログIDを$mysiteidに代入
if ($mysiteid == 1) {  //もしブログIDが1だったら
if ($this->applemobile && $this->desired_view === 'mobile') {
return 'corp';  //ここは新たにコピーしたブログ1用のテーマの名前
} else {
return $template;
}
} elseif ($mysiteid == 2) {  //そうでなくて、ブログIDが2だったら
if ($this->applemobile && $this->desired_view === 'mobile') {
return 'portal';  //ここも新たにコピーしたブログ2用のテーマの名前
} else {
return $template;
}
}
}

と、こんな感じ。

実際に稼働テストしたらちゃんと動いていたので、びっくり!!

他にもっとスマートな方法があるんだろうけど、とりあえずそれが見つかるまではこの方法でいっとこう!

以上、またしても個人的に忘れないようにするためのまとめでした~。