确定在 Joomla 中生成线条的位置

Identify where a line is being generated in Joomla

TLDR: 我如何确定调用 <jdoc:include type="head" /> 时添加的内容?

为了避免为 friends/family 创建另一个站点,这次我在 AWS 上设置了一个 Joomla 3 的副本,交出了信誉并认为 "Job well done"... 更多傻瓜我.

不知何故 Joomla 的配置方式会抛出 JS 异常。具体来说,有些东西试图调用 jQuery 并收到未定义的错误。请注意,在出现错误的行 之后调用了 jQuery.noConflict();

不用说,相关人员并不真正知道他们做了什么,因为他们按照指南添加了他们再也找不到的联系表。

话已经说完了。 强调.

我如何追踪 plugin/extension/template 在输出中添加了特定行?

有问题的脚本被直接转储到主页中,没有 linked 并且是半缩小的。

我希望它出现在外部脚本文件之后,就在会话保持活动 Ajax 请求之前,这将是一个足够好的指针。

脚本的美化版本看起来像这样...

jQuery(window).on('load', function() {
    new JCaption('img.caption');
});
jQuery(document).ready(function() {
    jQuery('.hasTooltip').tooltip({
        "html": true,
        "container": "body"
    });
});
jQuery(document).ready(function() {
    jQuery('.hasPopover').popover({
        "html": true,
        "trigger": "hover focus",
        "container": "body"
    });
});
jQuery.noConflict();
$(document).ready(function() {
    $("#contact-form").validate({
        rules: {
            /* Lots of validation rules */
        },
        highlight: function(label) {
            $(label).closest(".control-group").addClass("error");
        },
        success: function(label) {
            label.addClass("valid").closest(".control-group").addClass("success");
        }
    });
});

window.setInterval(function() {
    var r;
    try {
        r = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP")
    } catch (e) {}
    if (r) {
        r.open("GET", "./", true);
        r.send(null)
    }
}, 840000);

看起来它正在尝试验证联系表格,因此很可能是罪魁祸首,但网站上没有(至少,working/visible 没有)。

在该块之后是一个非 jQuery Ajax 主页请求(每 14 分钟?)我认为这是某种形式的会话保持活动。具有讽刺意味的是,这并不依赖于 jQuery.

我查看了模板的 component.php,整个部分似乎是通过 <jdoc:include type="head" />

添加的

链中的下一个 link 是什么?我看不到任何指定 head 包含内容的文件或 xml 块。

关于错误:

您可以阅读 javascript 不工作的原因 here

所以您会在其中找到修复程序。

关于文件的查找方法:

只需在以下文件夹中搜索 $("#contact-form")

components/
modules/
templates

它是一个模块,所以它可能对您的调查有用,如果您跟踪此错误是在每个页面中还是仅在某些页面中。

如果它在所有页面中,可能文件在 templates 或组件文件夹中,否则它是一个模块。

如果它是一个模块,您只需要进入后端并检查在损坏的页面中启用的模块。

希望对你有用。