Nucleusには「NP_GoogleMaps」というGoogle Maps APIを簡単に利用できるプラグインがありますが、対応しているAPIがV1なため、最新のV3では使用できません。V3はGoogleアカウントが無くても使えるので、NP_GoogleMapsでV3を利用できるよう改造に挑戦してみたのですが、僕には敷居が高過ぎあきらめました。が、改造するまでもなく、おなじみの「NP_znItemFieldEX」を利用する事でAPI V3を利用する事ができるようになりました。
AWSの仕様変更に伴い、当サイトでの使用を中止していた猛烈便利なプラグイン「NP_Amazon」ですが、最新版ではめでたく対応され、再びAmazonの在庫情報などを表示できるようになりました。ありがとうございます。
このプラグインを使うと、Amazonの画像を簡単に表示させることができるのですが、Amazon側に商品画像が無い場合、「商品画像がありません」という画像が表示されて、ちょっと悲しいです。ということで、自前で用意した画像を表示できるように手を入れてみました。
先日「NP_znItemFieldEXとNP_ifの連携」に書いた通り、「NP_if」と「NP_znItemFieldEX」の連携に成功し、かなり柔軟なテンプレートを作成できたと喜んでいたのですが、NP_znItemFieldEXの拡張フィールドがチェックボックスの際に、条件判定ができなくなっていたので、四苦八苦して対応させる事に成功しました。
Nucleusでサイト構築をする際、もはや無くてはならないプラグイン「NP_znItemFieldEX」。通常「タイトル」「本文」「続き」の3項目しかないNucleusの記事に、独自のフィールドを追加する事ができます。しかもそのフィールドの種類が豊富で、通常のテキストはもちろん、日時や数値だけを扱うことができます。おかげでサイトの多くの要素を記事で管理することができ、サイト構築後のメンテナンスがかなり楽になります。さらに便利なのが、その拡張フィールドの値を検索対象とできる事です。ところがこの機能が原因で、先日トラブルに見舞われました。
以前構築した「マーカーのドラッグ&ドロップでGoogle Mapsの緯度経度を測定|Geocoder」や、複数のサイトで、NP_GoogleMapsを利用して地図を表示していたのですが、いつからかGoogleの仕様変更で最大ズームレベルが小さくなり、同じビル内に立てた複数のマーカーがクリックできなくなっていました。
NP_GoogleMapsは初期のAPIを利用しているので、API 3で新たに構築するしか無いと試行錯誤をしていたのですが、たった1行の追記で問題が解決してしまいました。
NucleusとGoogleMapの連携に欠かせない、NP_GoogleMaps。このままでも十分便利なのですが、オリジナルマーカーが利用できればよりGoogleMapをいじくるのが楽しくなります。
ということで、いじくり回してオリジナルマーカーの表示をできる様にしてみました。
あまりにいろいろ考えてしまってすっかり告知することを忘れていました。NucleusとNucleusコミュニティを支える方々により、Nucleusコアと一部のプラグインがもつセキュリティリスクを回避するプラグイン「NP_0PatchBlogid」がリリースされています。
とっても便利な Amazon アソシエイト活用プラグイン「NP_Amazon」ですが、月別アーカイブやカテゴリー一覧表示など、記事が多くなると表示に時間がかかってしまいます。1 時間おきに Amazon へ問い合わせをしているのがその原因だと思うのですが、それはルールなので仕方ありません*1。が、記事のタイトルしか表示しない場合も Amazon に問合せをするため、当サイトではカテゴリー一覧、タグ抽出、アーカイブ一覧など、多量の記事タイトルを表示する場合に結構な時間がかかっていました。細かいことを言えば、前後の記事や最近の記事、ランダムピックアップの中に該当するアイテム*2がある場合も同じように動作するので、表示速度に影響があるわけです。…まあ人気サイトだとひっきりなしにアクセスがあるのでほとんど影響ないのでしょうけど、当サイトのようにひっそりしているサイトでは結構困ったことです*3。
この問題をずっと前からなんとかしたいと思っていたのですが、ソースを見ても「こりゃしょうがないわ…」と何度も諦めていました。ところが今日、ハッと閃き、タイトルのみを表示する場合は NP_Amazon を動作させないことに成功しました。…したと思います。
Nucleus のプラグインの中には、エラーが発生した時に思い通りの表示をしてくれないものがあります。そんな時はプラグインを改造するよりも、Nucleus のスキン変数「<%if(skintype,error)%>」を使った方がラクチンです。ところが if を入れ子にしていると <%if(skintype,error)%> が無視されてしまう場合がありましたので、メモ。
PHP の勉強がてら Nucleus のプラグインを作っているわけですが、よく考えてみると僕が PHP を活用できるのは Nucleus だけです。というよりももともと PHP の勉強をしたのは Nucleus のプラグインを作ってみたかったからだったということを今思い出しました。
まったく本末転倒というか、意味が分からない事になってますが、とにかく僕は Nucleus をもっと理解したいわけです。使いこなしたい。そしてほんの少しでもいいからお役にたつことができれば、こんなに嬉しいことはありません。
そんな思いを胸に秘め、またもや自分しか使わないプラグインを作成しているわけですが、いつものように猛烈に苦戦。他の人が作ったプラグインを眺めていると、本体が持ついろんな関数を利用しているような気がします。もうそこらへんことはまったくわからないので回り道ばかりしているのですが、なんだかすごそうなサイトを発見しました。
NUDN - Nucleus Developer Network / Nucleus v3.2 : /
これはなんなんでしょうか? やたらとソースが見やすい。すごい。このサイトをだーっと見るだけでも、かなり理解が深まるような気がするので、英語だらけですが頑張って読み解きたいと思います。