通过URL参数持久化Mediawiki外观

通过URL参数持久化Mediawiki外观,mediawiki,Mediawiki,我试图允许我的Mediawiki wiki用户根据偏好维护他们自己的皮肤选择,同时确保如果将useskin参数添加到URL中,则在该窗口中对页面的后续请求将保持不变(即,页面上的URL也将包括useskin参数或类似参数)--但在不干扰未使用参数的页面缓存的情况下(即,未使用useskin访问页面的用户将不会看到使用useskin缓存的URL,反之亦然) 有一个扩展来持久化useskin参数,但它似乎没有创建单独的缓存 (我的目的是允许我的站点的iframe导航使用裸露的皮肤(这样可以在一个小空

我试图允许我的Mediawiki wiki用户根据偏好维护他们自己的皮肤选择,同时确保如果将
useskin
参数添加到URL中,则在该窗口中对页面的后续请求将保持不变(即,页面上的URL也将包括
useskin
参数或类似参数)--但在不干扰未使用参数的页面缓存的情况下(即,未使用
useskin
访问页面的用户将不会看到使用
useskin
缓存的URL,反之亦然)

有一个扩展来持久化
useskin
参数,但它似乎没有创建单独的缓存

(我的目的是允许我的站点的iframe导航使用裸露的皮肤(这样可以在一个小空间中看到更多的页面),而不会在用户访问我的站点时干扰他们的皮肤偏好。)


请注意,我对特定于页面或特定于命名空间的蒙皮不感兴趣(如中所述)。我只是想要一个URL参数来永久保存该窗口(仅)的蒙皮信息,而不考虑页面。

我想在这里最简单的事情实际上是编写一些Javascript来检测useskin参数的存在,然后确保UI中显示的每个链接都有?useskin=附加到URL。这可能是确保UI中的所有链接都具有useskin参数的最轻量级/最简单的方法。这也将有助于将此行为限制在iframe中。您可以创建一个服务于JS的容器,或者您甚至可以使用它来保存JS


您提到您希望“在不干扰未使用参数的页面缓存的情况下”执行此操作。你在说什么样的缓存?如果您使用的是基本的反向代理缓存,比如squid或varnish,它们自然会独立地缓存具有不同URL的页面。因此,将以不同的方式进行缓存。

谢谢。这是一个合理的想法,尽管也许我应该在输出之前使用PHPDOM来处理它(比如通过OutputPageBeforeHTML?)这样链接就可以在文档准备就绪之前将皮肤连接到链接上,而没有添加onclick处理程序的不完美解决方案,该处理程序不会更改链接悬停状态栏附近显示的工具提示。至于缓存,我想我应该只使用Mediawiki的默认缓存——没有其他,但它并没有像我在使用
GetLocalURL
钩子时所期望的那样缓存它(当我访问带有
useskin
的页面时,它缓存了该版本,因此显示了不带
useskin
的版本)。