V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jackqian
V2EX  ›  Java

个人博客,文章列表的每个标题下面有一段正文内容,到了一定的字数然后就会加上... 请问这是怎么实现的

  •  
  •   jackqian · 2018-03-14 10:19:45 +08:00 · 4443 次点击
    这是一个创建于 2448 天前的主题,其中的信息可能已经有所发展或是发生改变。

    编辑是用网页上的 markdown 编辑器,然后保存到数据库的是 markdown 转换后的 html 代码,用户点击首页的标题后,跳转到我从数据库里拿出来的 html,现在就是不知道首页标题列表下的一段文字怎么搞的了

    14 条回复    2018-03-15 10:05:21 +08:00
    ylsc633
        1
    ylsc633  
       2018-03-14 10:28:06 +08:00
    我博客用到了.. 不过是 php 写的...

    且不是我写的..

    我是找网上有人写好的!

    至于 JAVA 的,不太清楚有木有!

    源码: https://github.com/Yela528/laravel-5-myblog/blob/master/app/Helpers/functions.php 最后那个函数...

    我用的时候,留了原作者的信息!你可以问问他...
    cloudzqy
        2
    cloudzqy  
       2018-03-14 10:29:37 +08:00
    Hexo 的话,在 markdown 里加段 <!-- more --> 的注释就行了。你自己实现的话,不就看具体需求吗?截一段 markdown 然后生成 html 存起来之类的。
    ixx
        3
    ixx  
       2018-03-14 10:33:35 +08:00
    事后处理不好弄,因为你库里是带样式的,随便截取样式就乱了,建议参考 hexo 的方式,编辑 markdown 正文的时候插入一个不会显示的特殊标记 如 hexo 使用的<!-- mroe -->,标记以上的部分是你想显示在标题下的文字 这样你再取出来的时候直接截取就行了,当然 为了效率优化应该在保存的时候把标记以上的部分单独保存,这样显示的时候就不用单独处理了
    l0o0
        4
    l0o0  
       2018-03-14 10:35:31 +08:00
    我之前博客用 Python 写的,简单截取了 html 前面多少个字符,然后用 bs4 的 prettify 把截取得到的不完整 html 修复一下。感觉有点简单粗暴
    coffeSlider
        5
    coffeSlider  
       2018-03-14 10:36:08 +08:00 via Android
    直接用 div
    style 加个 text-overflow:ellipsis
    unique
        6
    unique  
       2018-03-14 10:36:21 +08:00
    我用的 https://github.com/atlassian/commonmark-java 来解决你的问题。
    hheedat
        7
    hheedat  
       2018-03-14 10:51:31 +08:00
    css
    jackqian
        8
    jackqian  
    OP
       2018-03-14 11:03:43 +08:00
    @ixx @cloudzqy 谢谢,我尝试一下

    @coffeSlider 用 overflow 确实比较简单,但是应该很占资源
    coffeSlider
        9
    coffeSlider  
       2018-03-14 11:36:57 +08:00 via Android
    @jackqian

    求解,什么叫“应该很占资源”?
    请你摆出事实说话。
    满脸黑人问号❓❓❓


    再者说了,你这博客是给小霸王机看的吗?
    jackqian
        10
    jackqian  
    OP
       2018-03-14 16:18:02 +08:00 via iPhone
    @coffeSlider 这个方法实际上不是把整个文章都放进去了,只是 overflow 让他超出 div 的没显示呀
    Hopetree
        11
    Hopetree  
       2018-03-14 16:36:18 +08:00
    我的博客网站就有这个功能,这个功能在 Django 里面很好实现,有专门的标签模板可以用,当然,自己其实也可以写啊,不知道你用的什么语言做后端的,如果你想从后端实现,我推荐你用切片啊,字符串的切片,只要文字数量多于 N 个就把后端的切掉,然后加上。。。就行 了

    我网站的效果,你看文章列表,应该是你要的效果:[http://www.seoerzone.com/]( http://www.seoerzone.com/)
    zjj19950716
        12
    zjj19950716  
       2018-03-14 20:10:59 +08:00
    flask
    <p>{{ article.body|striptags|truncate(length=200, killwords=False, end="......") }}</p>
    zjj19950716
        13
    zjj19950716  
       2018-03-14 20:16:35 +08:00
    jinja2 过滤器 自动转义什么的
    yzmm
        14
    yzmm  
       2018-03-15 10:05:21 +08:00
    我是用 jsoup 把文章的 html 解析后再获取 text 然后再用标签截取固定的长度,超出部分就用“...”表示。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6105 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 06:13 · PVG 14:13 · LAX 22:13 · JFK 01:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.