1

我正在尝试编辑插件 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;
                }
            }
        }
    }
}

任何帮助,将不胜感激。谢谢

4

0 回答 0