蓝雨 发表于 2012-5-4 00:49:59

Discuz官方图片区瀑布流的x2.5修改方法

分享下X2.5修改和实现的方法
一、打开你使用的模板下common目录中的common.css或者extend_common.css,在最下面添加/* 瀑布流布局 by Pony 瞳祭阁官网(www.tjgqq.net)提供 */
.waterfall { position: relative; margin-top: 15px; }
.waterfall li { margin: 0 10px 10px 0; padding: 0 0 3px; text-align: left; border-width: 1px 0 0; border-top: 1px solid #EAEAEA; background: url({STYLEIMGDIR}/bg_waterfall.png) no-repeat 100% 100%; }
.waterfall .c, .waterfall h3 { padding: 10px; border: solid #EAEAEA; border-width: 0 1px; background-color: #F8F8F8; }
.waterfall .c { overflow: hidden; padding-bottom: 0; max-height: 800px; }
.waterfall .c .nopic { display: block; background:{WRAPBG} url({IMGDIR}/nophototiny.png) no-repeat 50% 50%; cursor: pointer; }
.waterfall .auth { padding: 0 10px 10px; border-width: 0 1px 1px; border-style: solid; border-color: transparent #EAEAEA #B9B9B9; background: #F8F8F8; }
.waterfall .auth img { display: inline-block; margin: 0 1px; }二、打开使用模板中的forum目录下的forumdisplay_list.htm文件,查找代码<ul class="ml mlt mtw cl">
<!--{loop $_G['forum_threadlist'] $key $thread}-->
<!--{if !$thread['forumstick'] && ($thread['isgroup'] == 1 || $thread['fid'] != $_G['fid'])}-->
<!--{if $thread['related_group'] == 0 && $thread['closed'] > 1}-->
<!--{eval $thread=$thread;}-->
<!--{/if}-->
<!--{/if}-->
<li style="width:{$_G}px;">
<!--{if !$_GET['archiveid'] && $_G['forum']['ismoderator']}-->
<div style="position: absolute;padding:2px;background:#FFF">
<!--{if $thread['fid'] == $_G}-->
<!--{if $thread['displayorder'] <= 3 || $_G['adminid'] == 1}-->
<input onclick="tmodclick(this)" type="checkbox" name="moderate[]" value="$thread" />
<!--{else}-->
<input type="checkbox" disabled="disabled" />
<!--{/if}-->
<!--{else}-->
<input type="checkbox" disabled="disabled" />
<!--{/if}-->
</div>
<!--{/if}-->
<div class="c cl">
<a href="forum.php?mod=viewthread&tid=$thread&{if $_GET['archiveid']}archiveid={$_GET['archiveid']}&{/if}extra=$extra" {if $thread['isgroup'] == 1 || $thread['forumstick'] || CURMODULE == 'guide'} target="_blank"{else} onclick="atarget(this)"{/if} title="$thread" class="z">
<!--{if $thread['cover']}-->
<img src="$thread" alt="$thread" width="{$_G}" height="{$_G}" />
<!--{else}-->
<span class="nopic" style="width:{$_G}px; height:{$_G}px;"></span>
<!--{/if}-->
</a>
</div>
<h3 class="ptn" style="width: {$_G}px;">
<!--{hook/forumdisplay_thread $key}-->
<!--{if in_array($thread['displayorder'], array(1, 2, 3, 4))}--><em class="sum pin">{lang thread_stick}</em> <!--{/if}--><!--{if in_array($thread['digest'], array(1, 2, 3))}--><em class="sum digest">{lang thread_digest}</em> <!--{/if}--><a href="forum.php?mod=viewthread&tid=$thread&{if $_GET['archiveid']}archiveid={$_GET['archiveid']}&{/if}extra=$extra"$thread{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else} onclick="atarget(this)"{/if} title="$thread">$thread</a>
</h3>
<div class="cl">
<!--{hook/forumdisplay_author $key}-->
<!--{if $thread['cover']}--><em class="sum y xs0 xi1 xw1" title="$thread {lang pics}">$thread</em><!--{/if}-->
<!--{if $thread['authorid'] && $thread['author']}-->
<a href="home.php?mod=space&uid=$thread">$thread</a><!--{if !empty($verify[$thread['authorid']])}--> $verify[$thread]<!--{/if}-->
<!--{else}-->
$_G
<!--{/if}-->
</div>
<div class="cl">
<em class="y xs0"><a href="forum.php?mod=viewthread&tid=$thread&extra=$extra" class="xi2" title="$thread {lang reply}">$thread</a> / <em title="{if $thread['isgroup'] != 1}$thread{else}{$groupnames[$thread]}{/if} {lang show}"><!--{if $thread['isgroup'] != 1}-->$thread<!--{else}-->{$groupnames[$thread]}<!--{/if}--></em></em>
<em class="xs0{if $thread['istoday']} xi1{/if}">$thread</em>
</div>
</li>
<!--{/loop}-->
</ul>修改代替为<ul id="waterfall" class="ml waterfall cl">
<!--{loop $_G['forum_threadlist'] $key $thread}-->
<!--{if !$thread['forumstick'] && ($thread['isgroup'] == 1 || $thread['fid'] != $_G['fid'])}-->
<!--{if $thread['related_group'] == 0 && $thread['closed'] > 1}-->
<!--{eval $thread=$thread;}-->
<!--{/if}-->
<!--{/if}-->
<!--{eval $waterfallwidth = $_G + 24; }-->
<li style="width:{$waterfallwidth}px;">
<!--{if !$_GET['archiveid'] && $_G['forum']['ismoderator']}-->
<div style="position:absolute;margin:1px;padding:2px;background:#FFF">
<!--{if $thread['fid'] == $_G}-->
<!--{if $thread['displayorder'] <= 3 || $_G['adminid'] == 1}-->
<input onclick="tmodclick(this)" type="checkbox" name="moderate[]" value="$thread" />
<!--{else}-->
<input type="checkbox" disabled="disabled" />
<!--{/if}-->
<!--{else}-->
<input type="checkbox" disabled="disabled" />
<!--{/if}-->
</div>
<!--{/if}-->
<div class="c cl">
<a href="forum.php?mod=viewthread&tid=$thread&{if $_GET['archiveid']}archiveid={$_GET['archiveid']}&{/if}extra=$extra" {if $thread['isgroup'] == 1 || $thread['forumstick'] || CURMODULE == 'guide'} target="_blank"{else} onclick="atarget(this)"{/if} title="$thread" class="z">
<!--{if $thread['cover']}-->
<img src="$thread" alt="$thread" width="{$_G}" />
<!--{else}-->
<span class="nopic" style="width:{$_G}px; height:{$_G}px;"></span>
<!--{/if}-->
</a>
</div>
<h3 class="xw0">
<!--{hook/forumdisplay_thread $key}-->
<a href="forum.php?mod=viewthread&tid=$thread&{if $_GET['archiveid']}archiveid={$_GET['archiveid']}&{/if}extra=$extra"$thread{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else} onclick="atarget(this)"{/if} title="$thread">$thread</a>
</h3>
<div class="auth cl">
<cite class="xg1 y">
{echo '喜欢'}: <!--{if $thread}-->$thread<!--{else}-->0<!--{/if}-->
{lang reply}: <a href="forum.php?mod=viewthread&tid=$thread&extra=$extra" title="$thread {lang reply}">$thread</a>
</cite>
<!--{hook/forumdisplay_author $key}-->
<!--{if $thread['authorid'] && $thread['author']}-->
<a href="home.php?mod=space&uid=$thread">$thread</a><!--{if !empty($verify[$thread['authorid']])}--> $verify[$thread]<!--{/if}-->
<!--{else}-->
$_G
<!--{/if}-->
</div>
</li>
<!--{/loop}-->
</ul>
<div id="tmppic" style="display: none;"></div>
<script type="text/javascript" src="static/js/redef.js?{VERHASH}"></script>
<script type="text/javascript" reload="1">
var wf = {};

_attachEvent(window, "load", function () {
if($("waterfall")) {
wf = waterfall();
}

<!--{if $page < $_G['page_next'] && !$subforumonly}-->
var page = $page + 1,
maxpage = $page + 10,
stopload = 0,
scrolltimer = null,
tmpelems = [],
tmpimgs = [],
markloaded = [],
imgsloaded = 0,
loadready = 0,
showready = 1,
nxtpgurl = 'forum.php?mod=forumdisplay&fid={$_G}&filter={$filter}&orderby={$_GET}{$forumdisplayadd}&page=',
wfloading = "<img src=\"{IMGDIR}/loading.gif\" alt=\"\" width=\"16\" height=\"16\" class=\"vm\" /> 加载中...",
pgbtn = $("pgbtn").getElementsByTagName("a");

function loadmore() {
var url = nxtpgurl + page + '&t=' + parseInt((+new Date()/1000)/(Math.random()*1000));
var x = new Ajax("HTML");
x.get(url, function (s) {
s = s.replace(/\n|\r/g, "");
if(s.indexOf("id=\"pgbtn\"") == -1) {
$("pgbtn").style.display = "none";
stopload++;
window.onscroll = null;
}

s = s.substring(s.indexOf("<ul id=\"waterfall\""), s.indexOf("<div id=\"tmppic\""));
s = s.replace("id=\"waterfall\"", "");
$("tmppic").innerHTML = s;
loadready = 1;
});
}

window.onscroll = function () {
if(scrolltimer == null) {
scrolltimer = setTimeout(function () {
try {
if(page < maxpage && stopload < 2 && showready && ((document.documentElement.scrollTop || document.body.scrollTop) + document.documentElement.clientHeight + 500) >= document.documentElement.scrollHeight) {
pgbtn.innerHTML = wfloading;
loadready = 0;
showready = 0;
loadmore();
tmpelems = $("tmppic").getElementsByTagName("li");
var waitingtimer = setInterval(function () {
stopload >= 2 && clearInterval(waitingtimer);
if(loadready && stopload < 2) {
if(!tmpelems.length) {
page++;
pgbtn.href = nxtpgurl + page;
pgbtn.innerHTML = "{echo '下一页 »'}";
showready = 1;
clearInterval(waitingtimer);
}
for(var i = 0, j = tmpelems.length; i < j; i++) {
if(tmpelems) {
tmpimgs = tmpelems.getElementsByTagName("img");
imgsloaded = 0;
for(var m = 0, n = tmpimgs.length; m < n; m++) {
tmpimgs.onerror = function () {
this.style.display = "none";
};
markloaded = tmpimgs.complete ? 1 : 0;
imgsloaded += markloaded;
}
if(imgsloaded == tmpimgs.length) {
$("waterfall").appendChild(tmpelems);
wf = waterfall({
"index": wf.index,
"totalwidth": wf.totalwidth,
"totalheight": wf.totalheight,
"columnsheight": wf.columnsheight
});
}
}
}
}
}, 40);
}
} catch(e) {}
scrolltimer = null;
}, 320);
}
};
<!--{/if}-->
});
</script>三、把2个修改好的文件上传覆盖,然后下载附件

,解压后上传到static\js目录下,再进入界面--风格管理--更新CSS缓存,到此修改就完成了。

四、进行如下2点设置:
1、到后台“界面”->“界面设置”->“主题列表页”页面,设置“主题封面高度”为一个比较大的数值,建议设置为 9999,“主题封面宽度”建议设置为:200;

2、到后台“工具”->“更新统计”页面,进行“重建主题封面”操作,这样生成的缩略图就都是按比例缩放的了。

现在刷新看看图片区是不是成瀑布流的样式了。



页: [1]
查看完整版本: Discuz官方图片区瀑布流的x2.5修改方法