第十八天:在月历中加上真的标题

“可是,”我听到你在哀嚎了,“我的月历已经个标题了啊!看那边,明明在上面就有年份跟月份了呀,我甚至还用了粗体字耶。”

但是,如果你挖掘过你的 HTML 源码,就会发现你的月历并没有真的标题。它可能祇是一个表格的 <td> 格子,占满着整个第一列,然后用了 CSS 规则来让它看起来是粗体字。相较之下,如果你用了真正的 <caption> 标签的话,反而简单多了。这样不但在模版里读起来更简单,也可以为你的页面多省下几个位元,在视觉性浏览器里看起来效果也相同,同时还更具亲和力。

谁因此获益?

  1. Marcus 从中获益了。因为 Lynx 显示标题时,会在前面再加上“ CAPTION: ”,让他明白这一列是标题,而不是栏位标头或表格资料。
  2. Jackie 间接地获益了。因为用了真正的 <caption> 标签能够奠定使用真正表格标头的良好基础;我们将在明天的诀窍中讨论到 Jackie 到底能从中得到些甚么。

怎么做

这个诀窍祇能够适用于支援月历的出版工具(所以 Blogger 就被排除掉了),同时这个出版工具还要能让你自订产生月历的 HTML 源码(所以 Manila 也被排除掉了)。

在 Movable Type 中,你的主索引模版里可能有个用来当月历的表格,就像这一个(搜寻“ calendarhead ”就差不多能找到它了):

<table border="0" cellspacing="4" cellpadding="0">
<tr>
<td colspan="7" align="center"><span class="calendarhead"><$MTDate format="%B %Y"$></span></td>
</tr>

<tr>
<td align="center"><span class="calendar">Sun</span></td>
...

留着这个表格标签,但是把表格中第一个 <tr> 列全部代换成真正的 <caption> 标签,就像这样:

<table border="0" cellspacing="4" cellpadding="0">
<caption class="calendarhead"><$MTDate format="%B %Y"$></caption>
<tr>
<td align="center"><span class="calendar">Sun</span></td>
...

剩下来的部分留着别动;我们明天再来加以修改。

<caption> 标签里的 class 属性乃是选用性的;我在这里把他留着,因为这样就可以拿来取代掉预设的 Movable Type 样式,继续用 CSS 规则来让年份及月份采用粗体字。像这样子用 <caption> 标签之后,你的页面看起来仍旧会跟以前一模一样。

在 Greymatter 中的状况仍旧相同,但是模版标签却不同:

<caption>{{monthword}} {{yearyear}}</caption>

同样地,祇要你这么做,就可以用样式表来改变 caption 的视觉样式。

在 Radio 中,整个过程将会比较复杂,但并非不可能(我得感谢 Tony Bowden 提供了这些指引)。

  1. 在 Radio 里,开启实际的 Radio 应用程式。如果是在 Windows 的话,从系统列里在小 Radio 图示上按滑鼠右键,然后选择“ Open Radio ”。
  2. 在“ Tools ”选单里,选择“ Developers ”,然后选“ Jump... ” (Control+J) 。跳至“ system.verbs.builtins.radio.weblog.drawCalendar ”(不含引号)。
  3. 现在到“ Edit ”选单里,选“ Find and Replace ”,然后选“ Find... ” (Control+F) 并且寻找“ hCalendarTable ”。这样应该会展现出绘制启始 <table> 标签和假月历标题的源码区块。
  4. 把这个区块中最后一列(在 <tr> 标签中写着 monthYearString 的那一列)改成这样:

    add ("<caption>" + monthYearString + "</caption>")

  5. 关闭视窗。你会被询问到是否要编译这个变更,请回答是。
  6. 如果你想要的话,还可以设定标题的样式。到你的 Home Page Template (在 Prefs 页面中)并且新增一个给 caption 用的样式。以下这个是我自己在用的;在 <style> 区段中原本包含这些东西:

    body, td, p {
      font-family: verdana, sans-serif;
      font-size: 12px;
    }

    现在则是:

    body, td, p, caption {
        font-family: verdana, sans-serif;
        font-size: 12px;
        }
    
    caption {
      text-align: center;
      font-weight: bold;
    }

延伸阅读