我正在尝试编辑插件 http://xenforo.com/community/threads/xf-lightboxed-attachments-on-forumhome.12009/
我只想获取附件的帖子网址并将其放在图片下方。喜欢
附件图片查看帖子链接
这是模板代码
<xen:foreach loop="$attachments" value="$attachment">
<td class="Format-Images-Td">
<a href="{xen:link attachments, $attachment}" target="_blank"
class="LbTrigger<xen:if is="!{$attachment.can_view}">_no</xen:if>"
data-href="{xen:link misc/lightbox}"><img
src="{$attachment.thumbnailUrl}" alt="{$attachment.filename}"
class="bbCodeImage LbImage"
data-src="{xen:link attachments, $attachment, 'embedded=1'}" /></a>
</td>
</xen:foreach>
这是我正在使用的 php 代码
<?php
class LightboxFiles_LightboxStatic
{
public static function listener($name, &$contents, array $params, XenForo_Template_Abstract $template)
{
if ($name === 'forum_list_nodes')
{
//$option = XenForo_Application::get('options')->option_name; // hmm, add any options?
//$attachModel = WTFgoesHere::getModelFromCache('XenForo_Model_Attachment'); // figures
function LightboxStaticThumbnailUrl($data)
{
// assume $externalDataPath is safe? wtf does it come from? seems static
return XenForo_Application::$externalDataPath . '/attachments/' .
floor($data['data_id'] / 1000) . '/' . $data['data_id'] . '-' . $data['file_hash'] . '.jpg';
}
$db = XenForo_Application::get('db');
$results = $db->fetchRow("
SELECT
COUNT(attachment_id) AS num1,
MAX(attachment_id) AS num2,
MIN(attachment_id) AS num3
FROM xf_attachment
");
if ($results['num1'])
{
$limit = 12; // change if you want another max amount of thumbs
$excess = intval($limit * 0.2); // grab excess number from each side
$count = 0;
$attachments = array();
$visitor = XenForo_Visitor::getInstance();
$visitor_id = $visitor['user_id']; // = XenForo_Visitor::getUserId();
$can_view = $visitor['permissions']['forum']['viewAttachment'];
$delta = $results['num2'] - $results['num3'];
$rand = rand(0, max(0, $results['num1'] - $limit));
$start = max(intval($results['num3'] + ($rand - $excess) * $delta / $results['num1']), 1);
$end = min(intval($start + ($limit + 2 * $excess) * $delta / $results['num1']), $results['num2']);
$results = $db->fetchAll("
SELECT attach.*, data.*, user.username
FROM xf_attachment AS attach
INNER JOIN xf_attachment_data AS data ON
(data.data_id = attach.data_id)
INNER JOIN xf_user AS user ON
(user.user_id = data.user_id)
INNER JOIN xf_post AS tPost ON tPost.Post_id = attach.content_id
INNER JOIN xf_thread AS tThread ON tThread.thread_id = tPost.thread_id
INNER JOIN xf_node AS tNode ON tNode.node_id = tThread.node_id AND
WHERE attach.content_type = 'post'
ORDER BY attach.attachment_id desc LIMIT " . $limit . "
");
foreach ($results AS $key => $data)
{
$count ++;
$attachments['attachments'][$count] = $data;
$attachments['attachments'][$count]['visitor_id'] = $visitor_id; // meh! so it's in each array
$attachments['attachments'][$count]['can_view'] = $can_view; // meh! so it's in each array
$attachments['attachments'][$count]['thumbnailUrl'] = LightboxStaticThumbnailUrl($data);
//$attachments['attachments'][$count]['thumbnailUrl'] = $attachModel->getAttachmentThumbnailUrl($data);
}
if ($count)
{
shuffle($attachments['attachments']);
$filebits = $template->create('lightbox_files_bits', $attachments)->render();
$contents = $template->create('lightbox_files_list', array('filebits' => $filebits))->render() . $contents;
}
}
}
}
}
任何帮助,将不胜感激。谢谢