ModX:insert_metka函数在哪里?

问题描述:

我有我的镆铘埃沃网站抛出这个错误的问题:ModX:insert_metka函数在哪里?

Fatal error: Cannot redeclare insert_metka() (previously declared in /home/mysite/public_html/manager/includes/document.parser.class.inc.php(794) : eval()'d code:2) in /home/mysite/public_html/manager/includes/document.parser.class.inc.php(794) : eval()'d code on line 12' 

我已经搜查,搜查,但找不到在哪里insert_metka()声明。我甚至下载了整个网站并且无济于事地进行搜索。我也尝试将版本更新到最新版本,也无济于事。

任何人都可以告诉我在哪里可以找到这个功能吗?

下载数据库转储并在其中查找此行。看起来这是一个插件故障,请尝试禁用插件,直到找到它。有关更多建议,请参阅ModX Evo: PHP error in document.parser.class.inc.php

+0

是的,你不会在文件搜索中找到该功能,因为插件+片段存储在数据库中。尽量不要发表重复的问题;) – okyanet

+0

谢谢!那样做了。对于任何正在查看的人来说,它都位于Quick ManagerManger代码片段中。 – MeltingDog

正如您从错误代码中看到的,该函数是在代码片段中声明的。这是因为Modx有这种缓存片段来加速性能。他们将你的片段的静态文件封装为一个函数。

如果同一个函数被调用两次并且你声明了一个函数,这可能会导致错误。我怀疑这是怎么回事。

为了解决这个问题,只是包装你的整个功能function_exists像这样:

if (!function_exists("insert_metka")) { 
    function insert_metka() { 
     // Stuff goes here 
    } 
} 

旁注:这是除了由VASIS给出了答案。你应该搜索你的片段,演员和插件。它应该位于这些文件的某个位置。这不是从Modx核心提供的功能。