Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events Joomla onPrepareContent事件未触发_Events_Caching_Joomla_Joomla1.5 - Fatal编程技术网

Events Joomla onPrepareContent事件未触发

Events Joomla onPrepareContent事件未触发,events,caching,joomla,joomla1.5,Events,Caching,Joomla,Joomla1.5,我正在开发一个Joomla插件,它使用了onPrepareContent()事件。但是,我已经确定,如果启用了缓存,并且缓存了内容(即在cache/com\u content中),则不会调度此事件 即使文章已缓存,我如何处理文章的查看,并使文章数据可用?(我之所以指定最后一个条件,是因为,否则,我可以只使用一个系统事件,例如onAfterRoute()或类似的事件)缓存背后的想法确实是数据被检索一次并被服务多次,因此在缓存加载期间,数据在任何地方都不可用;因此,在您的插件中,您可以使用不同的事件

我正在开发一个Joomla插件,它使用了
onPrepareContent()
事件。但是,我已经确定,如果启用了缓存,并且缓存了内容(即在
cache/com\u content
中),则不会调度此事件


即使文章已缓存,我如何处理文章的查看,并使文章数据可用?(我之所以指定最后一个条件,是因为,否则,我可以只使用一个系统事件,例如onAfterRoute()或类似的事件)

缓存背后的想法确实是数据被检索一次并被服务多次,因此在缓存加载期间,数据在任何地方都不可用;因此,在您的插件中,您可以使用不同的事件(如onAfterRoute())访问数据库并加载文章,但当然,您正在降低网站的速度,并且可能基于ajax浏览器的替代方案也可以达到相同的目的(您尚未阐明)


另一种方法是,如果你只想在有限数量的文章上实现这一点,就强制Joomla不缓存文章,但这很可能需要一个核心黑客,并且不会比我上面写的使用插件更快。

在Joomla 3.4.0中,我尝试在内容插件中使用系统事件,当内容被缓存时,它们不会触发;只有一次,当第一次加载和缓存页面时。此后,他们不再开火。我猜内容插件只有在页面被缓存时才会被调用,不管它包含什么事件

我绝对不会做任何会减慢网站速度的事情。我目前已经专门为com_内容禁用了缓存,这显然会引起很大的轰动,但在这种情况下,必须提供该功能:它是access control.wait,访问控制意味着您有不同的用户组,任何差异都只会在他们登录后影响他们:但默认情况下,已登录用户禁用页面缓存,因此这不应该是一个问题。我的访问控制的某些元素适用于未登录用户。确定我的观点是:未登录用户或来宾,所有人都会看到相同的结果:所以相同的缓存对所有人来说都很好;对于其他所有人,页面缓存将被禁用。这并不意味着onPrepareContent()不会被调用:它会在每次缓存刷新时被调用一次,默认值为15分钟。好的,但我需要的是每次查看文章时都执行一些代码(严格地说,/trusted/to-view),并使这些代码具有文章的可见性。实现这一目标的最佳方式是什么?