【问题标题】:W3C validation error 'document type does not allow element "link" here'W3C 验证错误'文档类型不允许元素“链接”在这里'
【发布时间】:2013-06-20 11:27:11
【问题描述】:

我正在使用两个文件来显示我的网页,一个用于页眉和页脚(layout.htm)以及使用 smarty 的内容(content.htm)我包括该文件 例如: 布局.htm

<html> 
   <head> 
      //here i am adding script and styles its common for all page 
   </head>
   <body>
   <div class="body">
      {include file=$INNER_PAGE}        
   </div>
</body>
</html>

我需要在内部页面中单独包含样式,该样式应该仅适用于该页面,因此我无法将其添加到 layout.htm 中。所以我将以下行包含在我的 content.htm 文件中

<link rel="stylesheet" type="text/css" href="prop_descr.css"/>

因为它显示错误所以我该如何解决这个问题

谢谢!

【问题讨论】:

  • 我认为这是某种模板?您可以在文档的&lt;head&gt; 中添加一个占位符以用于稍后定义的样式表吗?
  • 怎么样?那么我想添加占位符的每个脚本和样式?
  • 您的模板不允许将link 元素添加到正确的位置。
  • @Athi:这取决于你;我不熟悉您使用的模板系统。
  • 好的让我试试谢谢

标签: html smarty w3c w3c-validation


【解决方案1】:

只需在你的 layout.htm 模板的 head 标签内添加一个条件:

{if $extra_css}
<link rel="stylesheet" type="text/css" href="{$extra_css}"/>
{/if}

然后将 php 中的文件名分配给变量:

$smarty->assign('extra_css', 'prop_descr.css');

编辑:如果你需要使用多个,使用一个数组并循环遍历它:

php:

$smarty->assign('extra_css', array('prop_descr.css','another.css','another_one.css'));

聪明:

{foreach from=$extra_css item=css_path}
  <link rel="stylesheet" type="text/css" href="{$css_path}"/>
{/foreach}

【讨论】:

  • 我还想添加超过 2 个 css 和脚本。所以对于所有 .css 和 .js 我想创建一个 smarty 变量?
【解决方案2】:

根据 HTML 规范,您不能在 body 元素内使用 link 元素。您应该安排事情,使link 元素出现在head 元素内。在给定的上下文中,您可以通过省略 div class=body 标记(虽然省略它可能需要更改 CSS 代码)以及 &lt;/head&gt;&lt;body&gt; 标记来实现此目的。不过,可能有更聪明的方法来实现目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多