我正在开发一个利用该onPrepareContent()
事件的 Joomla 插件。但是,我已经确定如果启用了缓存,则不会调度此事件,并且内容被缓存(即 in cache/com_content
)。
即使文章被缓存并且文章数据可用,我如何对文章的查看采取行动?(我指定了最后一个条件,否则,我可以只使用系统事件 - 例如 onAfterRoute() 或类似的)
缓存背后的想法确实是数据被检索一次并提供多次,因此在缓存加载期间它不会在任何地方可用;因此,在您的插件中,您可以使用不同的事件(例如 onAfterRoute())访问数据库并加载文章,但是您当然会减慢您的网站速度,并且可能基于 ajax 浏览器的替代方案可以达到相同的目的(您没有没有澄清)。
如果您只想在有限数量的文章上实现此目的,另一种方法是强制 Joomla 不缓存文章,但这很可能需要核心 hack,并且不会比使用我上面写的插件更快。
In Joomla 3.4.0, I tried using system events in a content plugin, and they do not fire when the content is cached; only once, when the page is first loaded and cached. After that, they do not fire again. I guess the content plugin only gets invoked when the page is being cached, whatever events it contains.