我正在尝试将Disqus添加到我正在撰写的博客中。为了处理Seaside会话,我需要为JS添加一个独特的discus_identifier或disqus_url。我覆盖了我的组件的#script方法,但它只能返回一个字符串文字。
我看到两个选项:
有更简单的方法吗?或者这些方法中的一个(或两个)容易做到?我是Smalltalk和Seaside的新手,我不确定如何完成这两件事。
答案 0 :(得分:1)
是的,有一种更简单的方法。您可以直接在#script方法中生成正确的Discus JS代码。它应该返回一个String文字但你可以动态创建这个String。例如,通过使用WriteStream。
您的博客条目也需要永久链接。您可以使用#initialRequest:方法来处理这些永久链接。
答案 1 :(得分:1)
如果我是对的,那就是转发按钮之类的东西。 (这是我手边的事情,为你提供例子)。
我在博客中所做的是一个名为BITRetweet的专业海边组件,您可以使用永久链接(以及用户名和样式首选项)进行配置。忘记文件的东西(只会使事情变得复杂),一切都在飞行中。它渲染与此:
BITRetweet>>renderContentOn: html
html script with: self customizedJavascript.
html script url: self buttonJavascriptSource.
BITRetweet>>customizedJavascript
| script |
script := JSScript new.
script add: (('"',self permalink,'"') asJSObject assignTo: 'tweetmeme_url').
isCompact ifTrue:[
script add: ('"compact"' asJSObject assignTo: 'tweetmeme_style')].
script add: (('"',username,'"') asJSObject assignTo: 'tweetmeme_source').
script add: (('"',shortener,'"') asJSObject assignTo: 'tweetmeme_service').
^ script
BITRetweet>>>buttonJavascriptSource
"Answers the url to the source of the script for the button.
See:
http://help.tweetmeme.com/2009/04/06/tweetmeme-button/"
^ 'http://tweetmeme.com/i/scripts/button.js'
and finally a little hack for String, like this:
String>>asJSObject
^ JSObject new alias: self
html script with: self customizedJavascript.
html script url: self buttonJavascriptSource.
对于固定链接部分,有两件事:
1你可以这样做:
| script |
script := JSScript new.
script add: (('"',self permalink,'"') asJSObject assignTo: 'tweetmeme_url').
isCompact ifTrue:[
script add: ('"compact"' asJSObject assignTo: 'tweetmeme_style')].
script add: (('"',username,'"') asJSObject assignTo: 'tweetmeme_source').
script add: (('"',shortener,'"') asJSObject assignTo: 'tweetmeme_service').
^ script
"Answers the url to the source of the script for the button.
See:
http://help.tweetmeme.com/2009/04/06/tweetmeme-button/"
^ 'http://tweetmeme.com/i/scripts/button.js'
^ JSObject new alias: self
和 for 2你必须在你的主应用程序组件中做这样的事情:
PostComponent>>updateUrl: anUrl
Post>>asURLNice
super updateUrl: anUrl.
anUrl addToPath: model asURLNice
"Answers the receiver in an (destructive) encoded
way which is url friendly"
^ String streamContents: [:stream|
self do:[:char|
char isSeparator
ifTrue:[stream nextPut: $-]
ifFalse:[
char isAlphaNumeric ifTrue:[
stream nextPut: char asLowercase asNonDiacritical]]]]
您可以在my blog或selective creativity中查看所有相关信息 asNonDiacritical对我来说是必要的,因为我有三种语言的博客,但如果你需要,可以在squeaksource中找到DiacriticalSupport
玩得开心
O /