在 Flarum 使用者頭像下新增等級條
4,549 0
又來一個並沒有什麼用處的功能,為帖子列表中的使用者頭像下新增等級進度條。首先感謝 4tabern.com 提供程式碼,演示效果就不發了,因為我自己的站上面也沒有使用,實在是累贅,實際效果請自行測試,歡迎回饋。
以下修改僅適用於 Flarum 0.1.0 beta7 - Flarum 0.1.0 beta7.1(其他版本請仔細查看其中的替換程式碼,新增部分請單獨插入)。
過程
編輯檔案 vendor/flarum/core/js/forum/dist/app.js
把這一部分
JavaScript JavaScript
var card = '';
if (!post.isHidden() && this.cardVisible) {
card = UserCard.component({
user: user,
className: 'UserCard--popover',
controlsButtonClassName: 'Button Button--icon Button--flat'
});
}
return m(
'div',
{ className: 'PostUser' },
m(
'h3',
null,
m(
'a',
{ href: app.route.user(user), config: m.route },
avatar(user, { className: 'PostUser-avatar' }),
userOnline(user),
username(user)
)
),
m(
'ul',
{ className: 'PostUser-badges badges' },
listItems(user.badges().toArray())
),
card
);
}
}, {
key: 'config',
value: function config(isInitialized) {
var _this2 = this;
if (isInitialized) return;
var timeout = void 0;
改為以下內容
JavaScript JavaScript
var card = '';
var exp_c = (user.data.attributes.commentsCount - user.data.attributes.discussionsCount) * 21;
var exp_d = user.data.attributes.discussionsCount * 33;
var exp_total = exp_c + exp_d;
var level = Math.floor(exp_total / 135);
var exp_percent = (100 / 135) * ((exp_total) - (level * 135));
if (!post.isHidden() && this.cardVisible) {
card = UserCard.component({
user: user,
className: 'UserCard--popover',
controlsButtonClassName: 'Button Button--icon Button--flat'
});
}
return m(
'div',
{ className: 'PostUser' },
userOnline(user),
m(
'h3',
null,
m(
'a',
{ href: app.route.user(user), config: m.route },
avatar(user, { className: 'PostUser-avatar' }),
' ',
username(user)
)
),
m(
'ul',
{ className: 'PostUser-badges badges' },
listItems(user.badges().toArray())
),
card,
m(
'div',
{ className: 'PostUser-level' },
'等级' + ' ' + level,
m(
'div',
{ className: 'levelbar-empty', style: 'width:100%' },
m(
'div',
{ className: 'levelbar', style: 'width:' + exp_percent + '%' }
)
)
)
);
}
}, {
key: 'config',
value: function config(isInitialized) {
var _this2 = this;
if (isInitialized) return;
var timeout = void 0;
var user = this.props.post.user();
if (user) {
var exp_c = (user.data.attributes.commentsCount - user.data.attributes.discussionsCount) * 21;
var exp_d = user.data.attributes.discussionsCount * 33;
var exp_total = exp_c + exp_d;
this.$('.levelbar-empty').tooltip({ container: 'body', title: exp_total + ' ' + '积分' });
}
主要內容提示:
在複製前,自行修改裡面的 等级 和 积分 為你想要的內容,等級是顯示在進度條上面的文字,積分是滑鼠移動到上面時顯示的提示。
變數說明:user.data.attributes.commentsCount 是使用者的回覆數,user.data.attributes.discussionsCount 是使用者的主題數。
上面使用這兩個變數進行加減乘除,請自行按照自己的需求修改,目前的演算法,等級提升還是比較輕鬆的。
最後你需要加入 LESS 樣式:
編輯 \vendor\flarum\core\less\forum\Post.less
在最後加入
Less Less
@media (max-width: 767px) {
.PostUser-level { display: none; }
.PostUser-level .levelbar-empty { display: none; }
.PostUser-level .levelbar { display: none; }
}
@media (min-width: 992px), (min-width: 768px) and (max-width: 991px) {
.PostUser-level { display: none; }
.DiscussionPage .PostUser-level {
display: block;
margin-left: -85px;
margin-top: 70px;
text-align: center;
float: left;
width: 64px;
}
.DiscussionPage .PostUser-level .levelbar-empty {
background: @control-bg;
border-radius: 10px;
height: 10px;
}
.DiscussionPage .PostUser-level .levelbar {
margin-top: 0;
z-index: 11;
background: @primary-color;
border-radius: 10px;
height: 10px;
}
}
.Post--hidden {
.PostUser-level { display: none; }
.PostUser-level .levelbar-empty { display: none; }
.PostUser-level .levelbar { display: none; }
}
修改完成後自行清除快取,一般 php flarum cache:clear 就可以了。
評論
(0)暫無評論,來說兩句吧