修复summerdawn网站几个小问题

linxiaoyun 2018.2.3 13:55 109 0
summerdawn Django

一、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

暂无评论

您尚未登录,请先才能评论。