表达式引擎扩展开发-向呈现的条目添加自定义javascript
Expression Engine Extension Development - Add custom javascript to rendered entry
我正在开发一个扩展,设置中的一个可用选项需要在渲染时将自定义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变量?
详细说明。。。此扩展适用于以下内容:在控制面板的Addons->Extensions中,他们将激活扩展。在该扩展的"设置"中,他们将能够通过频道授权可以"编辑"该频道中条目的成员或组。
在检查权限后,扩展会在呈现每个自定义字段类型之前对其进行编辑,并将其包装在类元素中。接下来是JavaScript文件用于此功能。单击该元素时,将打开一个模态,其中将包含自定义字段类型以及通道/条目信息,因此它可以在编辑后保存字段。
您能让<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}
...
channel_entries_tagdata
包含从每个{exp:channel:entries}
循环中提取的原始模板代码,然后有另一个变量($row),该变量是该条目的实际数据数组。(根据文件)
因此,首先,如果你想以这种方式将JS添加到<head>
,你必须确保你的整个页面模板都在你的Channel Entries循环中——如果你的<head>
在嵌入中,这可能不起作用。
其次,我建议转储通过该钩子传递的$row
数据,看看是否可以从中提取返回JS中的数据。
希望能有所帮助。
- 如何在ASP中为用户控件添加Javascript对象网
- 向Android浏览器添加JavaScript
- 如何在Opencart中动态添加JavaScript
- 如何根据需要优雅地添加javascript/css
- 在Android的Webview中添加Javascript
- Phonegap/Cordova:如何添加Javascript多点触摸事件
- 添加@javascript标记时,Cucumber中的HTTP身份验证失败
- 当我的表单中已经有一个操作时添加JavaScript
- 当我添加JavaScript时,链接按钮停止工作
- Ruby on Rails 4:在 Rails Web 应用程序中添加 Javascript 文件时遇到问题
- 可以'无法正确添加JavaScript值
- 在页面上添加javascript后呈现指令
- 如何在我更改输入时添加javascript操作'的内容
- 在Dotnet Highchart中添加javascript函数
- 如何在R Shiny应用程序中添加JavaScript来更改CSS文件
- 基于使用的ASP MVC EditorFor/Partial模板添加JavaScript引用
- 添加javascript变量以发送数据
- 动态添加javascript事件监听器,做一些无法解释的事情
- 使用wp_enque_script()在Wordpress-functions.php中添加Javascript
- 添加JavaScript onClick以动态生成asp按钮