在MediaWiki皮肤定义中,获得扩展的BaseTemplate
有几个用于创建链接到wiki中其他页面的链接的属性,但是我有一种情况,我需要皮肤目录的路径来拉取用于创建UI。默认情况下,默认情况下,这只是/skins/mySkin/images/foo.png
,但如果有人更改了$wgStylePath
变量,或者重命名了皮肤,那将是一个问题。是否有一个现有的变量具有构建该URL的变量,隐藏在BaseTemplate
方法中的某处?如何在Mediawiki中获取当前皮肤的文件路径?
2
A
回答
1
是的,SkinTemplate类包含在执行模板之前设置模板变量的代码,可通过'stylepath'
模板变量提供对$wgStylePath
的访问。
当您继承SkinTemplate以定义皮肤的主类时,您还需要覆盖$stylename
成员变量,该成员变量指定您的皮肤自己的样式表和图像所在的子目录。 (这个通常是与小写的皮肤名称相同,但它不具有有;使用来自同一目录的图像有两个相关的皮肤是完全正确的)。也作为模板变量提供,令人惊讶地命名为'stylename'
。因此,在您的模板中指定图像路径的一种方法可能类似于:
<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/images/foo.png
另一种方式,例如,皮肤,皮肤,将使用Skin类(这是SkinTemplate的超类;由于历史原因,这是一种凌乱和纠结的类型,但基本上你可以几乎把它们当作一个类拆分成两个文件)的getSkinStylePath()
方法。
要使用它,你的文件作为参数的名称传递和方法自动会预先$wgStylePath
和$stylename
它(并附加$wgStyleVersion
作为查询字符串)。请注意,这是不是一个模板方法,所以你要逃跑,并打印自己返回的URL:
<?php echo htmlspecialchars($this->getSkin()->getSkinStylePath('images/foo.png')) ?>
还有一个getCommonStylePath()
方法,做同样的事情,不同的是它采用了串"common"
代替$stylename
。
相关问题
- 1. 在Magento中获取皮肤路径?
- 2. 无响应的MediaWiki皮肤
- 3. 如何在战争中获取当前的jsp文件路径?
- 4. 获取当前文件的路径
- 5. 如何在AngularJS中获取当前路径的路径名?
- 6. 如何在颤动中获取当前的路径路径?
- 7. 如何在win98批处理文件中获取当前路径?
- 8. MediaWiki:在皮肤中显示用户名
- 9. 获取当前文件夹路径
- 10. 如何获得magento中的当前皮肤网址?
- 11. 如何获取当前html的路径?
- 12. 获取路径的路径,当前类文件
- 13. 如何在使用ERB的YAML文件中获取当前文件路径?
- 14. 获取当前项目中文件的文件路径
- 15. MediaWiki无法获取路径
- 16. 如何获取当前连接的数据库文件路径?
- 17. 如何获取当前javascript文件名的绝对路径
- 18. 如何获取当前InnoSetup脚本文件的路径?
- 19. 如何获取当前没有文件名的虚拟路径?
- 20. 如何从eclipse IDE获取当前打开文件的路径?
- 21. 如何获取%CD的父路径%如何获取当前%CD%的父路径%
- 22. 在Haskell中获取当前源文件的绝对路径
- 23. 在Eclipse中获取当前编辑文件的绝对路径
- 24. Java获取当前路径
- 25. 在ApplicationRoute中获取当前路径
- 26. mediawiki的水平滚动皮肤
- 27. PHP FCKeditor皮肤路径问题?
- 28. 如何在Eclipse插件开发中获取当前所选文件的路径
- 29. 如何获取当前文件中可执行文件的路径?
- 30. 如何在函数中获取当前包含的cmake文件的路径?