2

如何在 MediaWiki 站点上找到图像的文件名?
我不想手动输入文件名。我需要 PHP 代码来获取文件名。
我可以使用$f = wfFindFile( '$filename' );,但如何获取 $filename?
我一直在查看 FILE 类,但我不知道如何使用File::getFilename();我不断收到错误消息call to undefined method

我究竟做错了什么?

更详细地解释:我想将 pin it 按钮添加到我的网站,因此当您单击该按钮时,它会将其发布在 pin it board 上,并附有图像和图像描述。我需要使用 php 来发送图像信息,以便它适用于我网站上的每个页面。我不能每次都手动编码图像名称。到目前为止,我有代码:

        <a href="http://pinterest.com/pin/create/button/?url=' . urlencode($f->getFullURL()).'&media='.urlencode($f->getCanonicalUrl() ).'&description='.urlencode($f->getDescription()) .'" class="pin-it-button" count-layout="horizontal"><img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a>

除了我需要为 $f (图像名称)输入一个值之外,这很好用。我的问题是如何获得 $f 的值而不必输入例如 $f = wfFindFile('Sunset.jpg'); 我原以为这对于任何试图将 pinterest 添加到他们的网站的人来说都是一个非常普遍的请求。谢谢

4

1 回答 1

4

您要查找的 $filename 基本上是它在上传时在 MediaWiki 中的命名方式,例如 Landscape-plain.jpg。您将只使用 wfFindFile() 辅助函数来获取 File 对象。然后调用方法:

$ php 维护/eval.php

> $file = wfFindFile('风景-plain.jpg');

> 打印 $file->getName();

风景-plain.jpg

> 打印 $file->getPath();

mwstore://local-backend/local-public/b/b0/Landscape-plain.jpg

> 打印 $file->getFullPath();

/path/to/images/b/b0/Landscape-plain.jpg

> 打印 $file->getTitle();

文件:风景-平原.jpg

> 退出

API 文档:

在下面编辑

文件信息可以通过 File 对象获得,因此您肯定需要使用 wfFindFile() 来获取这样的对象。

要真正找到用户正在浏览的页面的文件名,您需要使用查询上下文并获取其标题:

$context = RequestContext::getMain();
$t = $context->getTitle();


if( $title->getNamespace == 'NS_FILE' ) {
  $filename = $title->getPrefixedText;
 // do your stuff.
}
于 2012-07-05T16:36:40.230 回答