...

Webプログラミング演習 PHPによるWebページ生成 演習(アーカイブ

by user

on
Category: Documents
19

views

Report

Comments

Transcript

Webプログラミング演習 PHPによるWebページ生成 演習(アーカイブ
Webプログラミング演習
PHPによるWebページ生成
x.phpの実
行を要求
ブラウザ
STEP8
PHPによる動的ページ生成(2)
x.phpの出
力が渡る
<html>
<body>
<?php
入力
プログラム
データ
?>
</body>
</html>
x.php
出力
ページ
webサーバ
演習(アーカイブページの作成)

% cd myblog


アーカイブページの作成のヒント
カテゴリー別・月別などのアーカイブページを作成.
PHPファイルは,カテゴリー別用・月別用といった
種別ごとに一つ作成し,具体的なカテゴリー名や年
月はURLパラメータとして与える.
URLからパラメータを取得
$id = $_GET['id'];
....
if($entry['id'] == $id){ id属性がパラメータと一致したら
例:
カテゴリ別
月別

category.php?name=授業
month.php?y=2015&m=11
ブラウザで確認
アーカイブページの作成のヒント(2)

前回のエントリ個別ページ(entry.php)を参考に
entry.php?id=X
カテゴリー別ページの場合
category.php?name=X
$name = $_GET['name'];
....
if($entry->category === $name){
アーカイブページの作成のヒント(3)

月別ページの場合
month.php?y=Y&m=M
$y = $_GET['y'];
$m = $_GET['m'];
....
if(strpos($entry->date, "$y.$m") !== false){
1
演習(アーカイブページへのリンク)

トップページ等にアーカイブページへリンク(
category.php?name=X等)を作成する.
演習(RSSフィードの生成)

RSSフィード
–
そのサイトで公開されている情報の要約をXML書式で記述したも
の。単にフィードと呼ぶことも


RDF Site Summary
–
RDFの文法を使って記述したもの


<?php
$url = "http://webdesign.center.wakayama-u.ac.jp/~manda/myblog/";
$title = "まんぶろーぐ";
$description = "まんだのブログ";
ファイル名は「rss.php」
–
RDF(Resource Description Framework)
– コンピュータが理解可能な情報表現
– リソース、プロパティ、値の三者関係を記述
– 参考: http://www.kanzaki.com/docs/sw/rdf-model.html
rss.php
RSS生成用PHPの作成

注:RSSには名称の異なる複数の規格がある。目的は同じだが書式が違う
– RDF Site Summary (RSS 0.9, RSS 1.0)
– Rich Site Summary (RSS 0.91)
– Really Simple Syndication (RSS 2.0)
内容は次のスライド
ブラウザで確認
http://webdesign.center.wakayama-u.ac.jp/ ~ユーザID/myblog/rss.php
フィード確認用の画面が出力される
$doc = simplexml_load_file('mng/entries.xml');
if($doc == false){
print "XML文書が不整です¥n"; exit;
}
header("Content-Type: application/xml; charset=UTF-8");
XMLを出力することを宣言
print "<?xml version=¥"1.0¥" encoding=¥"UTF-8¥"?>¥n";
?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">
以下RDF Site Summaryの
<channel rdf:about="<?php print $url?>">
書式に従って出力
<title><?php print $title?></title>
<link><?php print $url?></link>
<description><?php print $description?></description>
<items>
<rdf:Seq>
(次ページへつづく)
rss.php(つづき)
<?php
foreach($doc->entry as $entry){
print '<rdf:li rdf:resource="'.$url.'entry.php?id='.$entry['id'].'"/>'."¥n";
}
各エントリへのリンク要素を出力
?>
</rdf:Seq>
</items>
</channel>
<?php
エントリ毎に情報を出力
foreach($doc->entry as $entry){
$bstr = strip_tags($entry->body->asXML());
print '<item rdf:about="'.$url.'entry.php?id='.$entry['id'].'">'."¥n";
print "<title>".mb_convert_encoding($entry->title,"utf-8","auto")."</title>¥n";
print "<link>".$url.'entry.php?id='.$entry['id']."</link>¥n";
print "<description>".
mb_convert_encoding($bstr,"utf-8","auto").
"</description>¥n";
print "<dc:subject>".
mb_convert_encoding($entry->category,"utf-8","auto")."</dc:subject>¥n";
print "<dc:date>".strtr($entry->date,".","-")."</dc:date>¥n";
print "</item>¥n";
}
?>
</rdf:RDF>
次回の予定

Ajaxを利用したRSSフィードのタイムライン表示
(ソースファイル)
2
Fly UP