<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>寱语</title>
  <subtitle>kzeng's blog</subtitle>
  <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1248"/>
  <link rel="self" type="application/atom+xml" href="http://www.kzeng.info/node/1248/atom/feed"/>
  <id>http://www.kzeng.info/node/1248/atom/feed</id>
  <updated>2006-03-03T15:57:49-06:00</updated>
  <entry>
    <title>Drupal 4.7 升级准备笔记（3）: 分离freetags与分类的显示</title>
    <link rel="alternate" type="text/html" href="http://www.kzeng.info/node/1248" />
    <id>http://www.kzeng.info/node/1248</id>
    <published>2006-03-03T15:20:12-06:00</published>
    <updated>2006-03-03T15:57:49-06:00</updated>
    <author>
      <name>kzeng</name>
    </author>
    <category term="drupal" />
    <category term="drupal_4-7" />
    <category term="drupal主题" />
    <category term="Drupal" />
    <summary type="html"><![CDATA[<p>
<p>自drupal 4.7起，引入了新的tagging的方式，也即是freetags。从根本上讲，这仍然是drupal分类系统（taxonomy）的一部分，所以在页面上显示的时候，freetags与一般的分类是混在一起的，有时候会带来不方便，所以我们希望用一种方法把两者分离，就像awtags与分类的显示那样。这部分的显示控制有主题文件中的node.tpl.php来完成，具体的说，在一般的主题的node.tpl.php中，分类的显示是由以下代码来完成的：<br />
<?php<br />
 print terms; <br />
?></p>
<p>这里的term包括分类系统中所有的分类（term），而我们现在就要把categories和reetags分开，分开的原理是利用他们所从属的不同的vocabulary。首先我们要查知blog分类的vid与freetags的vid，在phpMyAdmin中，浏览vocabulary表，就能查到相关的信息。我这里分类的vid是11，freetags的vid是12，在显示<br />
<?php<br />
 print terms; <br />
?><br />
的地方，我们加入第一段代码来显示分类：</p>
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>自drupal 4.7起，引入了新的tagging的方式，也即是freetags。从根本上讲，这仍然是drupal分类系统（taxonomy）的一部分，所以在页面上显示的时候，freetags与一般的分类是混在一起的，有时候会带来不方便，所以我们希望用一种方法把两者分离，就像awtags与分类的显示那样。这部分的显示控制有主题文件中的node.tpl.php来完成，具体的说，在一般的主题的node.tpl.php中，分类的显示是由以下代码来完成的：<br />
<?php<br />
 print terms; <br />
?></p>
<p>这里的term包括分类系统中所有的分类（term），而我们现在就要把categories和reetags分开，分开的原理是利用他们所从属的不同的vocabulary。首先我们要查知blog分类的vid与freetags的vid，在phpMyAdmin中，浏览vocabulary表，就能查到相关的信息。我这里分类的vid是11，freetags的vid是12，在显示<br />
<?php<br />
 print terms; <br />
?><br />
的地方，我们加入第一段代码来显示分类：<br />
<?php<br />
  $vid = 11;<br />
//分类的vid<br />
  $result = db_query("SELECT t.tid, t.name FROM {term_data} t, {term_node} r WHERE r.tid = t.tid AND r.nid = %d AND t.vid = %d ORDER BY weight, name", array($node->nid, $vid));<br />
  while ($term = db_fetch_object($result)) {<br />
    $cats[] = l($term->name, 'taxonomy/term/' . $term->tid);<br />
  }<br />
  if ($cats) {<br />
    print t("Category: ") . implode('| ', $cats);<br />
  }<br />
//定义新的变量$cats，我们仍然使用'|'来分隔分类，你可以按照喜好更改<br />
?> </p>
<p>然后在 content 的div结束的地方，也就是内容的下面，新建一个显示tags的div：</p>
<div class="tags"><?php<br />
  $vid = 12;<br />
//freetags的vid<br />
  $result = db_query("SELECT t.tid, t.name FROM {term_data} t, {term_node} r WHERE r.tid = t.tid AND r.nid = %d AND t.vid = %d ORDER BY weight, name", array($node->nid, $vid));<br />
  while ($term = db_fetch_object($result)) {<br />
    $tags[] = l($term->name, 'taxonomy/term/' . $term->tid);<br />
  }<br />
  if ($tags) {<br />
    print t("Tags: ") . implode($tags);<br />
//定义新的变量$tags，这里我取消了不同tags之间间隔，主要是为了我这里主题显示需要，如果你想更改，可以仿照上面的category的做法，在最后的implode()中加入你需要的分隔字符（譬如逗号）<br />
  }<br />
?> </div>
</p>
<p>这样改造工作就完成了：）
</p>
    ]]></content>
  </entry>
</feed>
