2012-08-06 99 views
4

這是一個非常簡單的問題,但它激怒了我。我想評論下面的例子:如何嵌套HTML註釋?

<!-- 
     {if $scenes} 
      <!-- Scenes --> 
      {include file="$tpl_dir./scenes.tpl" scenes=$scenes} 
     {else} 
      <!-- Category image --> 
      {if $category->id_image} 
      <div class="align_center"> 
       <img src="{$link->getCatImageLink($category->link_rewrite, $category->id_image, 'category')}" alt="{$category->name|escape:'htmlall':'UTF-8'}" title="{$category->name|escape:'htmlall':'UTF-8'}" id="categoryImage" width="{$categorySize.width}" height="{$categorySize.height}" /> 
      </div> 
      {/if} 
     {/if} 
    --> 

我想註釋掉所有這些文字,所以瀏覽器贏了; t顯示這段代碼。問題是我已經評論過,並且瀏覽器似乎混淆了結束標記。因此,在這種情況下,只有當我希望它影響整個文本時,第一個打開評論標記纔會影響{if $ scenes}。你能不能讓我知道這怎麼做?!?!

感謝,

達尼

+2

請參閱http://stackoverflow.com/questions/442786/are-nested-html-comments-possible – bmb 2012-08-06 23:05:11

+2

我的解決方案:不要(因爲SGML/HTML/XML不支持)..使用DVCS和/或其他「歷史」;-)也就是說,也許引擎/模板有一個可以使用的替代評論?例如,在ASP.NET中,'<% - 這是一個甚至沒有進入HTML輸出的註釋 - %>' – 2012-08-06 23:14:47

回答

3

如果我理解正確的話,你希望能夠築巢的HTML註釋。爲了做到這一點,你需要用雙破折號和空格- -替換雙破折號--

基本上,

<!-- 
    This is a comment. 
    <!- - 
    This is a nested comment. 
    - -> 
--> 

將此應用於你的代碼,你應該結束了,像這樣:

<!-- 
     {if $scenes} 
      <!- - Scenes - -> 
      {include file="$tpl_dir./scenes.tpl" scenes=$scenes} 
     {else} 
      <!- - Category image - -> 
      {if $category->id_image} 
      <div class="align_center"> 
       <img src="{$link->getCatImageLink($category->link_rewrite, $category->id_image, 'category')}" alt="{$category->name|escape:'htmlall':'UTF-8'}" title="{$category->name|escape:'htmlall':'UTF-8'}" id="categoryImage" width="{$categorySize.width}" height="{$categorySize.height}" /> 
      </div> 
      {/if} 
     {/if} 
    --> 
+1

+1雖然它忽略了一些細節(例如爲什麼它是' - -' ?),公平地說,這不是嵌套。這是保持[新]評論不成爲無效評論。 – 2012-08-06 23:16:02

+1

謝謝,這完美地回答了我的問題。也許它不是嵌套......我的確不熟悉術語。感謝Mohamad,就像我們在西班牙所說的那樣,清澈如水! – 2012-08-14 21:58:22

+0

實際上,您不必在雙摺之間插入空格。當你在第一個短劃線之後放置一個空格時,這是一個無效的評論,它實際上被認爲是一個「假」評論。它作爲註釋工作的原因並沒有結束之前的評論,因爲它之後會作爲註釋令牌呈現。 – Andrew 2016-09-25 21:32:21

1

你有語言有 HTML,而是語言它會生成HTML。這個語言顯然支持嵌套的if/else條件,因爲你展示了一個很好的例子。因此,即使HTML生成語言本身缺少嵌套註釋,也可以使用條件來刪除其中的一部分,從而禁止生成該HTML:

假設令牌false表示布爾值false(將正確的表達爲在給定的模板語言假):在if false

{if false} 
    {if $scenes} 
    <!-- ... > 
    {else} 
    ... 
    {/if} 
{/if} 

一切都排除在由所述處理器輸出。