1

我正在开发一个扩展,设置中可用的选项之一需要在呈现时将自定义 javascript 添加到文档头部。我遇到的问题是解析顺序。(也可能有更好的方法来做包含)

我正在使用channel_entries_tagdata钩子。

在此内部,一旦处理了设置,我将执行以下操作:

// Add the required javascript
$jscript = "
    <script type="text/javascript">
        /*! etc......
    </script></head>
";

// Add js
$tagdata = str_replace("</head>", $jscript, $tagdata);

我希望能够将我的 javascript 保存在一个单独的文件中,并通过引用以某种方式包含它,但我不知道在这个阶段如何做到这一点。

我遇到的另一个问题是 EE 变量的解析顺序。在 javascript 中,我使用 $tagdata 中的变量。像这样的东西:

$.post("URL", { channel: "{channel}", entryId: "{entry_id}", urlTitle: "{url_title}", lastSegment: "{last_segment}", editDate: eo.editDate, field: eo.eleName }, function(data){...

在这种情况下,我将如何调用/使用 EE 变量?

详细说明... 此扩展程序适用于以下内容:在控制面板的插件 -> 扩展程序中,他们将激活扩展程序。在该扩展程序的“设置”中,他们将能够通过频道授权可以“编辑”该频道中的条目的成员或组。

该扩展在检查权限后,在呈现之前编辑每个自定义字段类型并将其包装在类元素中。JavaScript 文件用于此功能。单击该元素时,将打开一个模式,其中将包含自定义字段类型以及通道/条目信息,因此可以在编辑后保存该字段。

4

2 回答 2

0

channel_entries_tagdata包含从每个{exp:channel:entries}循环中提取的原始模板代码,然后有另一个变量 ($row),它是该条目的实际数据的数组。(根据文档。)

因此,首先,如果您想以这种方式将 JS 添加到通道条目循环中,则必须确保整个页面模板都在您的频道条目循环中 - 如果您在嵌入中<head>,这可能不起作用。<head>

其次,我建议转储$row通过该挂钩传递的数据,以查看是否可以从那里提取返回的 JS 中的数据。

希望有帮助。

于 2012-09-17T00:03:20.590 回答
0

您能否让脚本中的脚本<head>成为一个通用函数并通过从您的频道条目中调用它来将变量传递给它?

<head>
  ...
  <script>
    function W3bGuy_function(channel, entry_id, last_segment) {
      ...whatever...
    }
  </script>
</head>

<body>
  ...
  {exp:channel:entries}
  some action triggers: W3bGuy_function('{channel}', '{entry_id}', '{segment_3}');
  {/exp:channel:entries}
  ...
于 2012-09-14T20:34:29.130 回答