0

我正在尝试更改此 php 代码以在每个标题而不是第一个标题旁边显示图像。

更新代码

global $cache;

$count_limit = 5;
$title_limit = 30;
$title_limit2 = 48;
$time_limit = 86400;
$forum_ids_arr = array(4,5,7,19,10,11); // separate with commas e.g. 1,2,3

@ini_set('memory_limit', '256M');

if ( !empty($forum_ids_arr) ) {
foreach($forum_ids_arr as $fid) {
    $topic_with_img = array();
    $i = 0;

    while ( empty($topic_with_img) && $i < 20 ) {
        $sql = 'SELECT t.topic_id, t.topic_title, t.topic_poster,    t.topic_first_poster_name, t.topic_first_poster_colour, t.topic_replies, p.post_text, p.bbcode_uid, p.poster_id
                        FROM ' . TOPICS_TABLE . ' t
                  LEFT JOIN ' . POSTS_TABLE . ' p
                              ON t.topic_first_post_id = p.post_id
                    WHERE t.forum_id = ' . $fid . '
                                AND p.bbcode_uid <> ""
                    ORDER BY t.topic_time DESC';

        $result = $db->sql_query_limit($sql, $count_limit, $count_limit*$i, $time_limit);

        while ($row = $db->sql_fetchrow($result)) {
            decode_message($row['post_text'], $row['bbcode_uid']);

            if ( strpos($row['post_text'], '[img]') === FALSE || strpos($row['post_text'], '[/img]') === FALSE ) {
                continue;
            } else {
                $row['post_text'] = " " . $row['post_text'];
              $ini = strpos($row['post_text'], "[img]");
              if ($ini == 0) {
                    $img_url = "";
                }
              $ini += strlen("[img]");
              $len = strpos($row['post_text'], "[/img]", $ini) - $ini;
              $img_url = substr($row['post_text'], $ini, $len);

                $topic_with_img['topic_id'] = $row['topic_id'];
                $topic_with_img['topic_title'] = $row['topic_title'];
                $topic_with_img['img_url'] = $img_url;


                $sql3 = 'SELECT forum_name
                                FROM ' . FORUMS_TABLE . '
                                WHERE forum_id = ' . $fid;
                $db->sql_query($sql3);
                $forum_name = $db->sql_fetchfield('forum_name');

                $topic_author_img       = get_username_string('full', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']);
                $topic_replies_img = ($auth->acl_get('is_registered', $topic_forum_id)) ? strval($row['topic_replies_real']) : strval($row['topic_replies']);
                $comment = (intval($topic_replies) == 1) ? $user->lang['TT_COMMENT'] : $user->lang['TT_COMMENTS'];
                $topic_replies_img .= $comment;

                $template->assign_block_vars('img_top_topic', array(
                    'TITLE'        => (strlen($row['topic_title']) > $title_limit) ? substr($row['topic_title'], 0, $title_limit).'…' : $row['topic_title'],
                    'U_LINK'  => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't='.$row['topic_id']),
                    'IMG'     => $img_url,
                    'FORUM_NAME'  => $forum_name,
                    'FORUM_LINK'  => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f='.$fid),
                    'TOPIC_AUTHOR_IMG'       => $topic_author_img,
                    'TOPIC_REPLIES_IMG'         => $topic_replies_img,
                ));

                $sql5 = 'SELECT t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_first_poster_colour, t.topic_replies, p.post_text, p.bbcode_uid, p.poster_id
                        FROM ' . TOPICS_TABLE . ' t
                  LEFT JOIN ' . POSTS_TABLE . ' p
                              ON t.topic_first_post_id = p.post_id
                    WHERE t.forum_id = ' . $fid . '
                                AND p.bbcode_uid <> ""
                    ORDER BY t.topic_time DESC';
                    $result2 = $db->sql_query_limit($sql5, $count_limit - 1, 1, $time_limit);


                while ($row2 = $db->sql_fetchrow($result2)) {
                    decode_message($row2['post_text'], $row2['bbcode_uid']);

                if ( strpos($row2['post_text'], '[img]') === FALSE || strpos($row2['post_text'], '[/img]') === FALSE ) {
                continue;
                } else {

                    $row2['post_text'] = " " . $row2['post_text'];
              $ini1 = strpos($row2['post_text'], "[img]");
              if ($ini1 == 0) {
                    $img_url1 = "";
                }
              $ini1 += strlen("[img]");
              $len1 = strpos($row2['post_text'], "[/img]", $ini1) - $ini1;
              $img_url1 = substr($row2['post_text'], $ini1, $len1);

                $topic_with_img1['topic_id'] = $row2['topic_id'];
                $topic_with_img1['topic_title'] = $row2['topic_title'];
                $topic_with_img1['img_url'] = $img_url1;


                $sql4 = 'SELECT forum_name
                                FROM ' . FORUMS_TABLE . '
                                WHERE forum_id = ' . $fid;
                $db->sql_query($sql4);
                $forum_name1 = $db->sql_fetchfield('forum_name');

                    $topic_author       = get_username_string('full', $row2['topic_poster'], $row2['topic_first_poster_name'], $row2['topic_first_poster_colour']);
                    $topic_replies = ($auth->acl_get('is_registered', $topic_forum_id)) ? strval($row2['topic_replies_real']) : strval($row2['topic_replies']);
                    $comment = (intval($topic_replies) == 1) ? $user->lang['TT_COMMENT'] : $user->lang['TT_COMMENTS'];
                    $topic_replies .= $comment;

                  $template->assign_block_vars('img_top_topic.last_top_topics', array(
                        'TITLE'        => (strlen($row2['topic_title']) > $title_limit2) ? substr($row2['topic_title'], 0, $title_limit2).'…' : $row2['topic_title'],
                        'TOPIC_AUTHOR'       => $topic_author,
                        'TOPIC_REPLIES'         => $topic_replies,  
                        'U_LINK'  => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't='.$row2['topic_id']),
                        'LAST_IMG'     => $img_url1,
                    ));
                    }
                }
                $db->sql_freeresult($result2);

                break;

            }
        }
        $db->sql_freeresult($result);

        if (empty($topic_with_img)) {
            $cache->destroy('sql');
        }

        $i++;
    }
}
}

我能够得到我想要的结果,但是有没有办法简化上面的代码?我所做的只是将代码的顶部与底部重复。

这是此代码的新结果:

http://i1056.photobucket.com/albums/t365/iamthestreets/img_zps5732c7ed.png

这是此代码的新结果:

http://i1056.photobucket.com/albums/t365/iamthestreets/newimg_zps36fdd004.png

我希望每个标题旁边都有一个图像。

我不是要求有人编写代码(除非你也想),而是请人帮我弄清楚。我对 PHP 还是很陌生。

编辑:这是HTML

<div class="tt">
<!-- BEGIN img_top_topic -->
<div class="tt_column<!-- IF img_top_topic.S_ROW_COUNT == 0 or     img_top_topic.S_ROW_COUNT == 3 --> one<!-- ELSEIF img_top_topic.S_ROW_COUNT == 1 or img_top_topic.S_ROW_COUNT == 4 --> two<!-- ELSEIF img_top_topic.S_ROW_COUNT == 2 or img_top_topic.S_ROW_COUNT == 5 --> three<!-- ENDIF -->">
    <h3 <!-- IF img_top_topic.S_ROW_COUNT > 2 -->style="margin-top: 20px;"<!-- ENDIF -->><a href="{img_top_topic.FORUM_LINK}">{img_top_topic.FORUM_NAME}</a></h3>


        <ul>
        <div class="imgresize"><a href="{img_top_topic.U_LINK}"><img src="{img_top_topic.IMG}" alt="{img_top_topic.TITLE}" /></a></div>
        <li class="one"><a class="img_title" href="{img_top_topic.U_LINK}">{img_top_topic.TITLE}</a></li>
        <li class="topic_title_span"><span>by {img_top_topic.TOPIC_AUTHOR_IMG} |{img_top_topic.TOPIC_REPLIES_IMG}</span></li>
        </ul>


    <!-- BEGIN last_top_topics -->
        <ul>
        <div class="imgresize"><a href="{last_top_topics.U_LINK}"><img src="{last_top_topics.LAST_IMG}" alt="{last_top_topics.TITLE}" /></a></div>
        <li class="one"><a class="img_title" href="{last_top_topics.U_LINK}">{last_top_topics.TITLE}</a></li>
        <li class="topic_title_span"><span>by {last_top_topics.TOPIC_AUTHOR} |{last_top_topics.TOPIC_REPLIES}</span></li>
        </ul>

    <!-- END last_top_topics -->        

</div>

4

0 回答 0