nystudio107 / disqus
将Disqus评论系统集成到Craft CMS网站中,包括单点登录(SSO)和自定义登录/注销URL。
Requires
- composer/installers: ~1.0
This package is auto-updated.
Last update: 2024-08-29 04:32:59 UTC
README
已弃用
此Craft CMS 2.x插件不再受支持,但它完全功能正常,您可以继续按需使用。许可证还允许您将其分支出来,并根据需要对其进行更改,以支持旧版。
此插件的Craft CMS 3.x版本可在以下位置找到:craft-disqus,并且也可以通过Craft CP中的Craft插件商店进行安装。
Craft CMS的Disqus插件
将Disqus评论系统集成到Craft CMS网站中,包括单点登录(SSO)和自定义登录/注销URL。
安装
- 下载并解压缩文件,将
disqus
目录放入您的craft/plugins
目录中 - - 或者直接在
craft/plugins
文件夹中执行git clone https://github.com/nystudio107/disqus.git
。然后您可以使用git pull
进行更新 - - 或者使用Composer通过
composer require nystudio107/disqus
进行安装 - 在Craft控制面板的设置>插件下安装插件
- 插件文件夹应命名为
disqus
,以便Craft能够识别。GitHub最近开始在zip文件下载的文件夹名称中附加-master
(分支名称)。
配置Disqus
首先,确保您已经设置了一个Disqus账户。
接下来在Craft管理控制面板中,转到设置>插件>Disqus,并输入您的Disqus网站的简称。这是Disqus插件的唯一必需设置。
所有设置也可以通过config.php
文件进行配置,这是一个多环境友好的方式来存储默认设置。不要编辑此文件,而是将其复制到craft/config
作为disqus.php
,并在那里进行更改。
单点登录(SSO)
Disqus插件的实际用途是处理与您的Craft站点的单点登录(SSO)集成。
在您可以使用此功能之前,您需要根据集成单点登录网页上的说明设置Disqus SSO API。
然后复制并粘贴API密钥和API密钥到Disqus插件设置中,并打开“用户单点登录”开关。
自定义登录/注销URL
如果需要,Disqus插件还将处理自定义登录/注销URL。请参阅添加您自己的SSO登录和注销链接以获取详细信息。
如果您想在Disqus UI本身中显示自定义登录按钮,则需要此功能。
url
应该是您登录页面的地址。页面将在新窗口中打开,并在认证完成后自行关闭。这就是我们如何知道操作已完成并重新加载页面的方式。
logout
应设置为 http://example.com/actions/disqus/logoutRedirect
以调用处理注销和重定向的Disqus控制器。
在您的模板中使用Disqus插件
所有这些方法都实现了相同的功能
{# Output the Disqus embed code using the 'disqusEmbed' function #}
{{ disqusEmbed( DISQUS_IDENTIFIER, DISQUS_TITLE, DISQUS_URL, DISQUS_CATEGORY_ID, DISQUS_LANGUAGE) }}
{# Output the Disqus embed code using the 'disqusEmbed' filter #}
{{ DISQUS_IDENTIFIER | disqusEmbed(DISQUS_TITLE, DISQUS_URL, DISQUS_CATEGORY_ID, DISQUS_LANGUAGE) }}
{# Output the Disqus embed code using the 'disqusEmbed' variable #}
{{ craft.disqus.disqusEmbed( DISQUS_IDENTIFIER, DISQUS_TITLE, DISQUS_URL, DISQUS_CATEGORY_ID, DISQUS_LANGUAGE) }}
除了 DISQUS_IDENTIFIER
之外的所有参数都是可选的。有关这些参数的更多信息,请参阅 JavaScript配置变量
Disqus会忽略所有空字符串设置,例如:''
您将使用的典型Twig标签如下
{{ disqusEmbed(entry.slug, entry.title, entry.url) }}
...这将导致每个条目都有独特的评论。
在其最基本的情况下,这将导致Craft模板的输出如下所示
<div id="disqus_thread"></div>
<script data-cfasync="false" type="text/javascript">
/**
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables
*/
if (typeof disqus_config !== 'undefined') {
var _old_disqus_config = disqus_config;
}
var disqus_config = function() {
if (typeof _old_disqus_config !== 'undefined') {
_old_disqus_config.apply(this);
}
this.page.url = 'DISQUS_URL';
this.page.identifier = 'DISQUS_IDENTIFIER';
this.page.title = 'DISQUS_TITLE';
this.page.category_id = 'DISQUS_CATEGORY_ID';
this.language = 'DISQUS_LANGUAGE';
};
(function() { // REQUIRED CONFIGURATION VARIABLE: EDIT THE SHORTNAME BELOW
var d = document, s = d.createElement('script');
s.src = '//DISQUS_SHORTNAME.disqus.com/embed.js'; // IMPORTANT: Replace EXAMPLE with your forum shortname!
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
DISQUS_SHORTNAME
设置是从Admin CP或 config.php
设置中获取的,其余的 DISQUS_*
设置作为变量从 disqusEmbed
Twig过滤器/函数传递。
如果您已启用“用户单点登录”,则在上面的标签内还会输出类似的内容
this.page.remote_auth_s3 = "eyJpZCI6IjEiLCJ1c2VybmFtZSI6IkFkbWluIiwiZW1haWwiOiJhbmRyZXdAbWVnYWxvbWFuaWFjLmNvbSJ9 c0e4b8f2eca3c0e995cdd64ba2dedd720820ab5b 1431214361";
this.page.api_key = "GTX1r1JBbiJah3hzZkBO06hI71VxjyWxgdurckHYBWLiELkHDidVmnDkBW0XeROe";
假设您已正确设置了Disqus SSO,这将允许您的Craft用户使用Craft网站凭据登录Disqus。
如果您已启用“使用自定义登录/注销URL”,它还将为您生成 this.sso
设置,如本处所述
Disqus多语言网站
默认情况下,Disqus将使用您在 Disqus Admin > 设置 > 外观
中设置的语种,但是您也可以在 多语言网站 上使用它。
您可以向 {{ disqusEmbed() }}
提供的 DISQUS_LANGUAGE
参数允许您控制Disqus嵌入显示的语种。但是,评论对于所有语种仍然是相同的。
如果您希望评论本身根据语种而不同,您可以这样做
{{ disqusEmbed(entry.slug ~ "_" ~ entry.locale, entry.title, entry.url, '', entry.locale ) }}
这将导致不同语言的评论,并且Disqus嵌入将使用与评论相同的语种显示。
由 nystudio107 提供