<?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>Terrysco&#039;s Blog &#187; 设计原则</title>
	<atom:link href="http://www.terrysco.com/node/tag/%e8%ae%be%e8%ae%a1%e5%8e%9f%e5%88%99/feed" rel="self" type="application/rss+xml" />
	<link>http://www.terrysco.com</link>
	<description>仅关注于互联网行业， Linux平台开发。</description>
	<lastBuildDate>Sat, 05 Nov 2011 21:24:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>drupal设计原则</title>
		<link>http://www.terrysco.com/node/drupal-architecture.html</link>
		<comments>http://www.terrysco.com/node/drupal-architecture.html#comments</comments>
		<pubDate>Tue, 07 Apr 2009 20:25:30 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[CMS/FrameWork]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[设计原则]]></category>

		<guid isPermaLink="false">http://www.anyliv.com/www.terrysco.com/?p=86</guid>
		<description><![CDATA[<p>一点关于drupal设计的小见解，欢迎高手拍砖。</p><p>drupal的数据类型除了用户和评论，剩下的大都是节点的形式存在。我们要想自己开发一个新的模块，和DB有交互，首先要考虑好数据格式。我觉得drupal相关的开发两个东西很重要，一个是节点(node)，一个是分类(taxonomy)。组织自己数据的时候要围绕这两点展开，以节点的形式保存，以taxonomy的方式分类。这样写出的代码才很&#8220;drupal&#8221;，因为drupal有很多第三方模块可以使用，如果我们的数据不是基于节点展开的，那么很多模块都使用不了。如果脱离了节点，相当于我们只使用了drupal的DB层，用它来安全的进行db操作，这个就有违于drupal的可扩展设计了。因为drupal对节点的操作和管理已经很细致了，我们只要格式化好数据，一切都不用管了，方便省事，并且有一大堆第三方（或者drupal集成）模块可以使用。</p><p>...</p>
]]></description>
			<content:encoded><![CDATA[<p>一点关于drupal设计的小见解，欢迎高手拍砖。</p>
<p>drupal的数据类型除了用户和评论，剩下的大都是节点的形式存在。我们要想自己开发一个新的模块，和DB有交互，首先要考虑好数据格式。我觉得drupal相关的开发两个东西很重要，一个是节点(node)，一个是分类(taxonomy)。组织自己数据的时候要围绕这两点展开，以节点的形式保存，以taxonomy的方式分类。这样写出的代码才很&ldquo;drupal&rdquo;，因为drupal有很多第三方模块可以使用，如果我们的数据不是基于节点展开的，那么很多模块都使用不了。如果脱离了节点，相当于我们只使用了drupal的DB层，用它来安全的进行db操作，这个就有违于drupal的可扩展设计了。因为drupal对节点的操作和管理已经很细致了，我们只要格式化好数据，一切都不用管了，方便省事，并且有一大堆第三方（或者drupal集成）模块可以使用。</p>
<p>这么说好像有点抽象，我举个例子。比如我们要做一个特殊的内容类型，比如说笔记本。（这里抛开CCK模块不说，我们手写内容类型），传统上，怕麻烦的人（喜欢从头构建自己程序的人），可能想着创建两个表，一个内容，一个分类表，将这两个create table语句写到install文件中，剩下的就是读取和操作了，似乎没有什么问题。但是这些东西drupal早已经给我们做好了，可以使用node_info钩子自己创建内容类型，自己定制表单，剩下什么都不用做。而且和节点搜索，节点类型限制等等相关模块接合的很好，只要我们把关于节点查询的sql语句用db_rewrite_sql包起来就好了。</p>
<p>写到这里，你可能会说，这个很简单啊，因为你可能自己手动或者用cck创建了很多内容类型了，已经很熟悉了。但我们应该想得更远一步，更多的数据可以抽象成节点，更多的关于分类我们可以使用taxonomy做出来，我相信国内写drupal代码的人很多代码经不起drupal化的考验，对drupal的钩子机制理解没有那么深入。</p>
<p>总之，多看几个系统内置的模块，让你的模块无缝的放进drupal中去，和别的部件正常工作，并且能相互通信，而不要孤零零的插入一些干燥的代码。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/drupal-architecture.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

