duoshuo / airpub

a pure front-end blog engine powered by duoshuo API
http://airpub.io
MIT License
359 stars 41 forks source link

无法在 airpub 中使用多说评论小组件 #22

Open banrikun opened 9 years ago

banrikun commented 9 years ago

https://github.com/airpub/chill/blob/master/admin.html

 <editor-ninja ng-model="article.content"></editor-ninja>

这个文件中,editor-ninja已经被拆分开来了 - - 我下载的这个默认的主题,按照上面的结构制作新主题,结果后台一直不加载输入框。。。。。。。。。

然后下载了 http://airpub.qiniudn.com/themes/chill/admin.html 这个文件……发现

<textarea editor ng-model="article.content"></textarea>

。。。。。。。。。。。。。。。。。。。。

banrikun commented 9 years ago

还有几个疑问

1.40行构建方式是否不支持更换主题路径,只会读取/chill/下的模板文件…哪怕不能改,也希望这个文件夹可以叫theme什么的……当然这只是细节问题

2.已经实测40行方式不支持翻页,点翻页按钮无效。。。已经用云端默认主题,只改了id的index.html测试,均无法正常翻页

3.多说评论数经常读不出,原因不知,我其它网站正常,唯独用airpub的不行。代码正确。

4.在另一个帖子里提到的p标签输出问题(guoyu.me和airpub.io的差别)

主题已经基本完工了,就差后台和正文部分的CSS了,伸手怒求拆分的,自己写好累的而且后台完全摸不透。loading和login样式貌似可玩性也不错,所以建议基础css文件有正文排版和后台部分就好了 ^^

另外……丢个主题预览链接:http://www.brdev.org 我已经删掉了基础css还有各种less……技术不足实在是只能用原始的方式。。。

banrikun commented 9 years ago

5.和4差不多的一个问题。airpub.io和40行的输出方式,img标签外面会自动嵌套p标签,很不方便写样式……TUT

响应式部分还没写不知道会不会有更多问题,暂时先坑着……

banrikun commented 9 years ago

多说评论数读不出的问题是否是因为代码的执行顺序?两个数据都是从多说服务器发出,但是读取评论数的请求早于data-thread-key的请求,所以没有读取成功呢?

以上纯脑补……最新评论也容易读不出,但是成功率比评论数略高

guo-yu commented 9 years ago

回北京了,我一个一个解释一下吧。

  1. Chill 主题 master 分支上的代码版本是 v0.3.0 这个版本和我们最早在七牛上提供的 CDN 的版本是不一致的,七牛的 CDN 后来并没有更新到新版本,airpub 提供的 CDN 列表,可以查看 airpub/cdn 这个仓库 如果想要使用新的特性,最好是使用多说的 CDN 或者 托管在 GitHub 的 airpub.io 的 CDN 文件。
  2. 这个问题应该也是用七牛 CDN 的问题,代码是以前的代码。airpub 是支持传入 airpubConfigs.theme 或者 airpubConfigs.themePath 的方式来指定主题文件的路径和版本路径的~ 具体代码可以参考 airpub/airpub.io 这个仓库index.html 文件配置,注意这里使用的是 v0.4.0-unstable 的 airpub 核心版本,推荐使用这个版本(拆分了主要业务逻辑对编辑器模块的依赖)
  3. 多说评论读不出是之前老版本的一个 bug,这个已经在 v0.3.0 之上都修复了。
  4. 标签输出的问题与主题无关,这个是在核心逻辑的 filter 里处理的。这里确实处理的不好,但尚未找到比较好的处理方法。具体代码可以参见 /src/filters/marked.js 的第 48 行。
guo-yu commented 9 years ago

你的主题开源了吗?如果开源了我看看代码是如何工作的~ 这样更有利于解决问题。

banrikun commented 9 years ago

@turingou 还没有制作完毕,admin部分的css还没有复制过来,所以后台现在没样式。
地址是:https://github.com/banrikun/Air-For-Airpub

另外和这个版本保持同步的页面是:http://www.brdev.org
翻页问题更换了cdn已经解决了,但是依然读不出基础多说通用代码的最新评论和评论数,偶尔可以读出来,但是大部分时候都出不来

banrikun commented 9 years ago

至于标签的输出问题我可能没解释清楚,就是airpub.io和我所引用CDN后建立的页面,所打出的文章,在每个段落p标签外边,都会包围section标签(下面还有3个div标签),而guoyu.me是直接输出p标签,外面没有包裹那么多东西。个人建议后者更合适,我接触过的blog系统中都是使用后者的方式输出的

guo-yu commented 9 years ago

@banrikun 嗯,再确认一下你现在正在 index.html 中使用的 airpub 的版本是?

banrikun commented 9 years ago

@turingou

<script src="http://static.duoshuo.com/airpub/airpub-dependencies.min.js"></script>
<script src="http://static.duoshuo.com/airpub/airpub.min.js"></script>

引用的这两个JS文件

guo-yu commented 9 years ago

@banrikun 我看看具体是什么版本的问题。看来给打包后的文件打个版本好还是有必要的。。

guo-yu commented 9 years ago

@banrikun 找到了。这上边最新的版本是 v0.3.2,我看了一下我的博客,比如在这个页面,还是会输出 paragraph-section 作为 img 标签的父层:http://guoyu.me/article/1175527463674788800

而第一篇文章的图片之所以没有这个标签作为父层,是因为那个文章不是我自己编写的,是多说的爬虫抓取的正文,所以包裹在 html-section 当中了。

这个问题,当时其实是想用 CSS 来做一个 workaround,用包含选择器来做判断,以此定义文章中插入图片的样式,现在看起来这种方法应该不太现实,还是应该在 filter 中处理好最后输出的 DOM 结构,这个问题会在 v0.5.0 里得到解决~

banrikun commented 9 years ago

@turingou 辛苦了,现在这样不是很影响一般使用,只是个人有点在这种细节上比较纠结……囧

另外就是那个读取评论数和评论数的问题,貌似更新版本后并没有解决……依然读不出 0_0

guo-yu commented 9 years ago

@banrikun 关于读取评论数的代码,你具体是写在哪里?

banrikun commented 9 years ago

@turingou archive.html中27行

        <span class="info">
            <a ui-sref="layout.single({uri: article.thread_id})">
                <span class="ds-thread-count" data-thread-key="{{article.thread_key}}"></span>
            </a>
        </span>

审查元素获得的信息好像没问题

<span class="ds-thread-count" data-thread-key="24a37ed0-8f14-11e4-b9ba-b1c716e1f10a"></span>
guo-yu commented 9 years ago

@banrikun 我看到代码了。原因是这样的,多说的 embed.js 会在页面刷新时判断是否有组件的钩子,然后获取数据,再填充钩子所在的区域成相应的 DOM。但是 angular.js 编写的应用是不会刷新的。也就无法在 dom ready 事件中触发对钩子的检查。这个是我当时在写 airpub 没有想到的问题之一。

解决办法是我们在 airpub 中在相应的路由触发之后,手动告知 duoshuo embed.js 检查是否有钩子存在,然后填充 DOM。我标记这个为一个 bug

banrikun commented 9 years ago

@turingou 感谢解答,坐等新版本。

guo-yu commented 9 years ago

@banrikun 不客气,应该感谢你 :)

banrikun commented 9 years ago

@turingou 刚好今天给另一个站折腾instantclick的时候,遇到了同样的问题。由于instantclick会使得全站不刷新,从而无法触发多说,于是很期待解决方案~我相信也会有其他人需要的^^

guo-yu commented 9 years ago

@banrikun Hi,无法在 Web App 中使用多说组件的问题已经在 angular-duoshuov0.5.0 版本中解决了。可以去 duoshuo/angular-duoshuo 项目的 example/directives.html 查看一下范例的效果,所有组件的命名还是按照多说之前通用代码的规范,data 参数的配置也是按照那个规范来做,具体代码的实现可以看 duoshuo/angular-duoshuo 项目的 src/duoshuo.js 中的代码实现。

Airpub 会在 v0.4.0 之后依赖 angular-duoshuo 的 0.5+ 版本

banrikun commented 9 years ago

@turingou 好效率!感谢XD 我去折腾啦