这是一个有点新的给我,所以我可能是错在这里,但让通过插件遵循代码向后..
{{%
出现在tpl\js-templates.php
36倍和js\siteorigin-panels.js
(和.min版)一次。 %}}
只出现在同一个php文件中的34次,仍然在js文件中。
在js文件,他们出现在14+线,在这里:
String.prototype.panelsProcessTemplate = function(){
var s = this;
s = s.replace(/{{%/g, '<%');
s = s.replace(/%}}/g, '%>');
s = s.trim();
return s;
};
所以他们使用{{%
作为一个占位符,并使用JS用<%
来取代它。关闭%}}
(现在的%>
)也是如此。
它也显示为<script>
的一种简写形式?
{{% if(count > 1) { %}} <span class="count">({{%= count %}})</span>{{% } %}
考虑看看这个文件对他们做任何评论的顶部,我们可以看到Convert template into something compatible with Underscore.js templates
,所以我们知道我们应该拉起Underscore.js
documentation以供将来参考。
那么,panelsProcessTemplate()
字符串原型怎么用?在提到的js文件中有好几次,例如在行211:
panels.view.widget = Backbone.View.extend({
template: _.template($('#siteorigin-panels-builder-widget').html().panelsProcessTemplate())
这是Backbone.View
的扩展中,这样的Backbone documentation也可能是好的,开拓..
首先,让我们看看我们的功能是直接加工 - #siteorigin-panels-builder-widget
是在线文件93+:
<script type="text/template" id="siteorigin-panels-builder-widget">
<div class="so-widget ui-draggable">
<div class="so-widget-wrapper">
<div class="title">
<h4>{{%= title %}}</h4>
<span class="actions">
<a href="#" class="widget-edit"><?php _e('Edit', 'siteorigin-panels') ?></a>
<a href="#" class="widget-duplicate"><?php _e('Duplicate', 'siteorigin-panels') ?></a>
<a href="#" class="widget-delete"><?php _e('Delete', 'siteorigin-panels') ?></a>
</span>
</div>
<small class="description">{{%= description %}}</small>
</div>
</div>
</script>
text/template
is a browser-ignored template client-side code can use。因此它将替换{{%
与<%
和%}}
与%>
在此模板中,运行它通过template()
函数,并在此视图中将它全部设置为template
变量。
什么是template()
在做什么?它没有在这个文件中定义,但它在Underscore.js documentation under the template section。显然它实际上是整个_.template()
,而不仅仅是template()
。以下是概述:
将JavaScript模板编译为可进行渲染评估的函数。用于从JSON数据源渲染复杂的HTML数据。模板函数既可以使用<%= ...%>插值,也可以使用<%...%>执行任意JavaScript代码。 [...]
所以,我们知道现在就像我们上面看到的是Underscore.js使用<%
和%>
作为模板的数据标识符,无论是变量和任意JavaScript。
我们知道{{% .. %}}
是
{{%= description %}}
在这种情况下更多或更少的话说<script> document.write(description); </script>
。它将description
参数输出到模板HTML中。
如果我是一个博彩人,我敢打赌你可以通过WordPress/Page Builder Admin更改小部件的标题和描述。
至于检查变量是什么,您可能最适合在页面上呈现所有内容后进行检查。
$(document).ready(function() {
if ($("#id .so-content img").prop("src").endsWith(".jpg")) {
...
endsWith
是一个custom String prototype defined here。
我不是100%肯定,但它看起来像把手它基本上是一个JavaScript库查找它可能是 – Innervisions
哪个插件和哪个版本?请提供您拥有的所有详细信息。 –
我刚刚添加了该信息。它是SiteOrigin 2.0.7的[Page Builder](https://siteorigin.com/page-builder/),文件是tpl/js-templates.php。 – msb