<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OpenPNE &#187; symfony</title>
	<atom:link href="http://www.openpne.jp/tag/symfony/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.openpne.jp</link>
	<description>オープンソースのSNSエンジン OpenPNEプロジェクト</description>
	<lastBuildDate>Fri, 30 Jul 2010 14:38:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>OpenPNE3プラグインの作り方#4</title>
		<link>http://www.openpne.jp/archives/785/</link>
		<comments>http://www.openpne.jp/archives/785/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 06:00:22 +0000</pubDate>
		<dc:creator>Shogo Kawahara</dc:creator>
				<category><![CDATA[TIPS]]></category>
		<category><![CDATA[開発情報]]></category>
		<category><![CDATA[OpenPNE3.0]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://1208.www.openpne.jp/?p=785</guid>
		<description><![CDATA[				この記事は OpenPNE3.0.x のものです。現在の最新安定版では動作しない箇所が存在します。
				開発チームの川原です。
				プラグインの作り方の記事もとうとう４回目になりました。
				Open [...]]]></description>
			<content:encoded><![CDATA[				<p><strong>この記事は OpenPNE3.0.x のものです。現在の最新安定版では動作しない箇所が存在します。</strong></p>
				<p>開発チームの川原です。</p>
				<p>プラグインの作り方の記事もとうとう４回目になりました。</p>
				<p><a href="http://www.openpne.jp/archives/683/" target="_blank">OpenPNE3プラグインの作り方#1</a><br />
				<a href="http://www.openpne.jp/archives/688/" target="_blank">OpenPNE3プラグインの作り方#2</a><br />
				<a href="http://www.openpne.jp/archives/704/" target="_blank">OpenPNE3プラグインの作り方#3</a></p>
				<p>今回は、OpenPNE3のテンプレート拡張について解説します。</p>
				<p>OpenPNE2のカスタマイズは、特定ページ（例えばpage_h_home）に新しい機能を加えるとき、<br />
				そのページのアクションを編集して、さらにテンプレートを編集して…。<br />
				といった作業が必要でした。</p>
				<p>OpenPNE3は、プラグインを追加するだけで<br />
				特定ページに、新たな部品を追加することができます。</p>
				<p>この仕組みをテンプレート拡張と呼んでいます。</p>
				<p>OpenPNE3のテンプレートでは、複数のテンプレート部品（パーツ）によって<br />
				構成される仕組みになっています。<br />
				パーツにはIDを持っていて、その前後に別のパーツを挿入することが可能です。</p>
				<p><a href='http://www.openpne.jp/wp-content/uploads/2008/12/op32.png' title='op32.png'><img src='http://www.openpne.jp/wp-content/uploads/2008/12/op32.png' alt='op32.png' /></a></p>
				<p>図で説明するとこんな具合です。<br />
				今回作る「My News!機能」を実装するためには<br />
				ホームとプロフィールに新しく部品を挿入する必要がありそうです。</p>
				<p>ホームには今のところ idが information のパーツと<br />
				homeTopSampleBox というパーツが配置されています。</p>
				<p>informationの下に、新たに「My News!」のフォームを挿入したいという<br />
				ことになります。<br />
				フォームの作り方は次回にやる予定なので、今回は<br />
				informationの下に文字を表示できるようにしてみます。</p>
				<p>まずは、新たに挿入するテンプレートを追加します。<br />
				<strong>opSamplePlugin/apps/pc_frontend/modules/hello/templates</strong><br />
				に新たに <strong>_sampleParts.php</strong><br />
				を追加します。これは、informationの下に表示するパーシャルです。</p>
				<p>symfonyのパーシャルについてはこちら。<br />
				<a href="http://www.symfony-project.org/book/1_2/07-Inside-the-View-Layer#Templating">http://www.symfony-project.org/book/1_2/07-Inside-the-View-Layer#Templating</a>（英語）</p>
				<p>とりあえず、内容は Hello world!! としてみました。</p>
				<p>OpenPNE3のホームである、member/home に上に今回作成したテンプレートを挿入したいので<br />
				<strong>opSamplePlugin/apps/pc_frontend/modules</strong><br />
				に、新たに<strong>member</strong> ディレクトリ。さらにその中に <strong>config</strong> ディレクトリを作成します。<br />
				<strong>config</strong> ディレクトリに、 <strong>view.yml</strong> ファイルを作成して編集します。</p>
				<blockquote><p>
				homeSuccess:<br />
				&nbsp;&nbsp;customize:<br />
				&nbsp;&nbsp;&nbsp;&nbsp;sampleParts:<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template: [hello, sampleParts]<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parts:    [information]<br />
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target:   [after]
				</p></blockquote>
				<p>symfony ではもはやおなじみのYAMLです。</p>
				<p>memberモジュールで、<br />
				homeSuccessテンプレート(homeアクションが成功したときに呼び出されるテンプレート）<br />
				の設定をここで追加しています。</p>
				<p> customize によってテンプレート拡張を実現します。<br />
				3行目の samplePartsというのはテンプレート名です。<br />
				template で特定のパーシャルを指定します。<br />
				parts で指定したID のどこに配置するかを target で定めます。<br />
				afterなので information の後に挿入されることになります。<br />
				これにより、homeSuccess の information の後に hello/sampleParts が挿入されるようになります。</p>
				<p>設定ファイルを追加、編集した後には必ず、</p>
				<blockquote><p>symfony cc</p></blockquote>
				<p>でキャッシュを削除してください。</p>
				<p><a href='http://www.openpne.jp/wp-content/uploads/2008/12/ws000023.PNG' title='ws000023.PNG'><img src='http://www.openpne.jp/wp-content/uploads/2008/12/ws000023.PNG' alt='ws000023.PNG' /></a><br />
				ホームにアクセスすると、こうなっているはずです。</p>
				<p>これで、ホームやプロフィールに新たに部品を追加する方法はわかりました。<br />
				次回は、今回のパーシャルにフォームを挿入します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openpne.jp/archives/785/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
