Posted on 6月 15th, 2007 by sudabon
WordPressのエントリ内にjavascriptを埋め込み、document.writeでテキスト表示させたかったのですが、デフォルトのままではエントリの行単位に挿入される<p>タグの影響で、document.writeが動作しませんでした。
そこで、
タグの挿入を無効にするにはどうすればいいのかをネットで調べていると、下記のサイトにヒントがありました。
iDeasilo
wpautop($pee, $br = 1)
空行で囲まれたテキストを段落とみなしてそれぞれ <p></p> タグで囲んでテキスト全体を返す。
そこで、
“wp-includes/default-filters.php” の 121行目(V2.0.9)や123行目(V2.2)あたりの
add_filter(’the_content’, ‘wpautop’);
をコメントアウトすると、<p></p>タグは挿入されなくなりました。
もしExcerptの<p></p>タグも無効にしたいのであれば、同ファイルの
add_filter(’the_excerpt’, ‘wpautop’);
をコメントアウトすれば良いような気がします。(未検証)
Filed under: ブログツール | 1 Comment »
Posted on 6月 10th, 2007 by sudabon
先日、近所の本屋に行った時に、
が平積みされていたので、手にとってパラパラと流し読みしていると、Last.fmのWebサービスについて書かれている章があり、Webサービス用のAPIが公開されていることを知りました。
Web APIの詳細はAudioscrobbler Web Services APIにあります。早速、洋楽歌詞@Tube365に取り込めそうなAPIを探してみたところ、
①Related Artists(アーティストのレコメンデーション)
②TopTracks(人気曲)
がありました。
これらを実装した方法をメモしておきます。以下はTopTracks(人気曲)の取得方法です。
<?php
function getTopTracks($artist_name) {
$base_url = "http://ws.audioscrobbler.com/1.0/artist/";
$res = file_get_contents($base_url . $artist_name . "/toptracks.xml") or die("HTML取得エラー\n");
$xml = simplexml_load_string($res);
$xml_items = $xml->xpath(’//track’);
$popular_songs = array();
foreach ($xml_items as $xml_item) {
$track_data = (array)$xml_item;
array_push($popular_songs, $track_data[’name’]);
}
[…]
Filed under: Webサービス | No Comments »
Posted on 6月 9th, 2007 by sudabon
洋楽歌詞@Tube365では、PHPによる動的URLでプログラムを組んだのですが、検索エンジン最適化(Search Engine Optimization:SEO)の観点ではよろしくないとのことで、Apacheのmod_rewrite機能を利用して、静的URLへの変換にチャレンジしてみました。
多くの方が既に詳細な説明文を公開されているので、こここでは備忘録程度にしています。
.htaccessに下記のように記載すると、
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^param1-([a-z]+)$ index.php?param1=$1 [QSA,L]
RewriteRule ^param1-([a-z]+)/param2-([0-9]+)$ index.php?param1=$1¶m2=$2 [QSA,L]
http://hogehoge.com/index.php?param1=foo¶m2=bar
でアクセスしていたところを、
http://hogehoge.com/param1-foo/param2-bar
でアクセスができるようになります。
QSAフラグを付けると、
http://hogehoge.com/param1-foo/param2-bar¶m3=boo
とアクセスした場合でも、正しく
http://hogehoge.com/index.php?param1=foo¶m2=bar¶m3=boo
と変換してくれます。
Filed under: プログラミング | No Comments »
Posted on 6月 5th, 2007 by sudabon
当然ながら本番環境では、
“/myproject/apps/myapp/config/settings.yml”
prod:
.settings:
cache on
“/myproject/apps/config/cache.yml”
default:
enabled: on
with_layout: false
lifetime: 86400
としてキャッシュ機能を有効にし、レスポンスの向上を図りたいわけですが、
“/myproject/apps/myapp/modules/mymodule/template/searchSuccess.php”
<?php echo form_tag(’@search’, ‘method=get’) ?>
<?php echo input_tag(’query’, htmlspecialchars($sf_params->get(’query’), ENT_QUOTES), array(’style’ => ‘width: 150px’)) ?> <?php echo submit_tag(’検索’) ?>
</form>
のように、GETメソッドを利用したformを含むtemplateをキャッシュすると、
$sf_params->get(’query’)
で取得したvalueがなぜか表示されません。ちなみに、POSTメソッドを使った場合は問題ありませんでした。
対処療法的ですが、
“/myproject/apps/myapp/modules/mymodule/config/cache.yml
search:
disabled: off
として、formのテンプレートはキャッシュをOffにすれば、正常に動作します。
根本的な解決をするためには、symfonyのコードを読まないと、なんともできないですね。でも、コード量は半端じゃなく膨大ですから、気合いを入れて取りかからないと、時間の無駄になってしまいそう。暇を見つけて、チャレンジしてみたいと思います。
Filed under: Webフレームワーク | No Comments »
Posted on 6月 1st, 2007 by sudabon
SymfonyでGoogleMapを使う方法を紹介します。いろいろ方法はあるのだろうが、一番手っ取り早くて、JavaScriptを書かなくても利用できる方法を紹介します。
具体的には、PHP Google MAP APIクラスライブラリを利用します。
PHP GoogleMapAPIでクラスライブラリが公開されており、これをダウンロードしてSymfonyの/myproject/apps/myapp/lib/におき、該当するモジュールのaction.calss.phpでrequireしてパラメータをセットします。
例えば、下記のような感じです。各行の意味はだいたいわかると思いますが、詳細はクラスライブラリのソース内に記載(英語)がありますので、そちらを参照してください。
“actions.class.php”
require(’GoogleMapAPI.class.php’);
$this->map = new GoogleMapAPI();
$this->map->setHeight(’400px’);
$this->map->setWidth(’400px’);
$this->map->enableMapControls();
$this->map->enableZoomEncompass();
$this->map->enableOverviewControl();
$this->map->enableSidebar();
$this->map->setBrowserAlert(
‘お使いのブラウザでは地図を表示することができません。’
.’Internet Explorer 6.0以降か、’
.’Firefox 1.0以降をおすすめします。’);
$this->map->setJSAlert(’お使いのブラウザではJavascript’
.’に対応していないか、Javascript がオフになっています。’
[…]
Filed under: Webフレームワーク, Webサービス | No Comments »