一、clean-blog 引用段前空白过大
summerdawn采用clean-blog前端模板,其标签‘blockquote’内的‘p’标签margin-top应修正为0。css代码如下:
blockquote p:first-child {
margin-top:0;
}
原自带css已对blockquote p:last-child的margin-bottom修正为0。
这样引用内段前后空白取得了一致,也不至于空白过大。
二、修正文章详情页的下一篇文章算法
发现文章末的上一篇文章未出错,而下一篇文章显示有误,显示为最新的一篇文章。在pycharm中设置断点,查得views.py文件detail方法定义中next_post计算出现问题,增加对id的排序即可。
next_post=Post.objects.filter(Q(author=request.user)|Q(status='p'),id__gt=pk).order_by('id')
原pre_post计算已有id的排序,故未有问题。
pre_post=Post.objects.filter(Q(author=request.user)|Q(status='p'),id__lt=pk).order_by('-id')
三、完善自动目录方法中的jQuery判断
网上自动目录生成代码buildCTable方法中对h1等标签内的序号等内容进行的调整,经研究,标题设置应自带序号,故无需调整,取消该代码。同时,对于h1等标签已有a节点和name属性的,直接取其name。调整代码如下:
function buildCTable() {
var hs = $('#article_body').find('h2,h3,h4,h5');
if (hs.length < 2)
return;
var s = '';
//s += '<div style="clear:both"></div>';
s += '<div class="cnblogs_toc col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">';
s += '<p style="text-align:right;margin:20px 0;"><span style="float:left;">目录<a href="#" title="系统根据文章中H1到H6标签自动生成文章目录">(?)</a></span><a href="#" onclick="javascript:return openct(this);" title="展开">[+]</a></p>';
s += '<ol style="display:none;line-height:140%;">';
var old_h = 0, ol_cnt = 0;
for (var i = 0; i < hs.length; i++) {
var h = parseInt(hs[i].tagName.substr(1), 10);
if (!old_h)
old_h = h;
if (h > old_h) {
s += '<ol>';
ol_cnt++;
}
else if (h < old_h && ol_cnt > 0) {
s += '</ol>';
ol_cnt--;
}
if (h == 1) {
while (ol_cnt > 0) {
s += '</ol>';
ol_cnt--;
}
}
old_h = h;
// var tit = hs.eq(i).text().replace(/^\d+[.、\s]+/g, '');
// tit = tit.replace(/[^a-zA-Z0-9_\-\s\u4e00-\u9fa5]+/g, '');
var tit = hs.eq(i).text();
if ( tit.length < 100 && tit.length > 1) {
if ($(hs[i]).has("a").length>0){
var ha=hs[i].getElementsByTagName("a")[0];
if($(ha).attr('name')){
var as=$(ha).attr('name');
s += '<li><a href="#' + as + '">' + tit + '</a></li>';
}
else {
$(ha).attr('name','t'+i)
s += '<li><a href="#t' + i + '">' + tit + '</a></li>';
}
}
else {
s += '<li><a href="#t' + i + '">' + tit + '</a></li>';
hs.eq(i).html('<a name="t' + i + '"></a>' + hs.eq(i).html());
}
}
}
while (ol_cnt > 0) {
s += '</ol>';
ol_cnt--;
}
s += '</ol></div>';
//s += '<div style="clear:both"><br></div>';
$(s).insertBefore($('#article_body2'));
}
在这里用到ha=hs[i].getElementsByTagName("a")[0],取得hs[i]的a元素,实在不知道jQuery方式了,经查,用$(hs[i]).children('a')语句可。另外语句var tit = hs.eq(i).text();增加trim(),即var tit = hs.eq(i).text().trim();可以去除两端多余空格。
Last Modified·2018年2月4日 21:45
您尚未登录,请先登录才能评论。