English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
# 翻译警告
本文档已自动翻译。如果有翻译错误,请在项目中打开一个
拉取请求,并将翻译后的文件添加到 docs/{ISO 639-1 Code}.md
。
# 介绍
这个包简化了在你的 Laravel 应用程序中添加分享链接的过程。如果你发现我们缺少某个服务,请随时提交一个 pull 请求!
分享链接是一个 URL,它将社交媒体的基础 URL 与用于分享你网站或应用内容的查询参数结合在一起。参数通常包括内容 URL 和预设消息。正如示例中所示,这些链接让用户可以轻松地在 Twitter、Facebook 和 Telegram 等平台上分享帖子。使用这个开源包,可以通过 Laravel 的 blade 组件系统快速创建分享链接。
<x-link-sharer service="twitter" text="分享我!" url="https://www.defectivecode.com" hashtags="awesome,links" class="p-4"> <!-- 你的 HTML 代码在这里控制分享按钮的外观和感觉 --> <span class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">点击我!</span></x-link-sharer>
composer require defectivecode/link-sharer
服务提供商有时会在没有事先通知的情况下更新他们的分享链接。我们会尽最大努力跟进这些变化。然而,如果您遇到无法使用的服务,请打开一个问题或提交一个拉取请求。有关添加新服务,请参阅下面的贡献部分。
一些服务提供了可以传递给组件的额外参数。这些参数记录在下表中。
服务 | 支持文本 | 支持URL | 备注 |
---|---|---|---|
Blogger | ✔️ | ✔️ | t 博客文章的文本。 |
Diaspora | ✔️ | ✔️ | |
Diigo | ✔️ | ✔️ | description 添加到文章中的描述。 |
Douban | ✔️ | ✔️ | comment 添加到文章中的评论。 |
Evernote | ✔️ | ✔️ | |
❌ | ✔️ | ||
✔️ | ✔️ | quote 添加到文章中的引用。 |
|
Gmail | ✔️ | ✔️ | bcc 以逗号分隔的密送电子邮件地址列表。cc 以逗号分隔的抄送电子邮件地址列表。su 电子邮件的主题。to 以逗号分隔的收件人电子邮件地址列表。 |
HackNews | ✔️ | ✔️ | |
Instapaper | ✔️ | ✔️ | description 文章的描述。 |
LineMe | ❌️ | ✔️ | |
❌ | ✔️ | ||
LiveJournal | ✔️ | ✔️ | |
Meneame | ❌️ | ✔️ | |
Okru | ❌️ | ✔️ | |
Outlook | ✔️ | ✔️ | |
✔️ | ✔️ | media 在文章中显示的图片URL。 |
|
Plurk | ❌️ | ✔️ | |
✔️ | ✔️ | ||
QZone | ✔️ | ✔️ | summary 文章的摘要。 |
✔️ | ✔️ | ||
Renren | ✔️ | ✔️ | description 文章的描述。srcUrl 文章的原始URL。 |
Skype | ✔️ | ✔️ | |
Telegram | ✔️ | ✔️ | |
Threema | ❌ | ✔️ | id 要发送文章的人的ID。 |
Tumblr | ✔️ | ✔️ | caption 添加到文章中的标题。tags 应用于文章的以逗号分隔的标签列表。 |
✔️ | ✔️ | hastags 应用于推文的以逗号分隔的标签列表。via 要给予信用的推特用户。 |
|
Viber | ✔️ | ✔️ | |
VKontakte | ✔️ | ✔️ | description 文章的描述。image 在文章中显示的图片URL。 |
✔️ | ✔️ | ||
✔️ | ✔️ | ||
❌ | ✔️ | ||
YahooMail | ✔️ | ✔️ |
添加服务相对简单。首先,在 src/Services
文件夹中创建一个新的服务类。将类命名为你要添加的服务名称。系统会通过工厂自动注册服务,因此无需手动注册。
下面提供的 Gmail 服务是一个很好的例子。
<?php namespace DefectiveCode\LinkSharer\Services; use DefectiveCode\LinkSharer\Traits\AppendsLinks; class Gmail extends Service{ use AppendsLinks; protected string $baseUrl = 'https://mail.google.com/mail/u/0'; protected array $baseParameterMapping = [ 'text' => 'body', ]; protected array $additionalParameters = [ 'bcc', 'cc', 'su', 'to', ]; protected array $defaultParameters = [ 'view' => 'cm', ];}
请注意,只有 baseUrl
是必需的。baseParameterMapping
、additionalParameters
和 defaultParameters
是可选的,但可以增强功能。
$baseUrl
服务的 URL 不需要 以 HTTPS 开头。例如,Viber 使用
viber://forward
。
baseUrl
属性指定服务的主要 URL。此 URL 是生成分享链接的基础,查询参数会附加到该 URL 上。以 Gmail 为例,其基本 URL 是 https://mail.google.com/mail/u/0
。
$baseParameterMapping
此包识别两个主要属性:text
和 url
,因为它们在大多数服务提供商中都很常见。只有在服务使用不同命名约定时才需要定义这些属性。例如,Gmail 使用 body
代替 text
,因此需要显式映射。在使用 Gmail 时,传递给 blade 组件的任何 text
属性都会转换为分享链接中的 body
查询参数。
$additionalParameters
某些服务接受更具体的查询参数。以 Gmail 为例,它支持 bcc
、cc
、su
和 to
。在 additionalParameters
数组中定义这些参数。当用户在 blade 组件中包含这些属性时,它们会被添加到分享链接中。确保这些参数也列在支持的服务表中,并附有简明描述。
$defaultParameters
某些服务要求分享链接包含特定的查询参数才能正常工作。例如,Gmail 需要包含 view=cm
。这些必需的属性在 defaultParameters
数组中声明。它们总是会被附加到分享链接中,且无法省略。
prepareAttributes()
要在生成分享链接之前操作属性,可以在服务中引入 prepareAttributes
方法。此方法在将属性传递给 generateLink
方法之前激活,允许自定义属性修改。以下是使用 AppendsLinks
trait 的示例。
<?php namespace DefectiveCode\LinkSharer\Traits; trait AppendsLinks{ protected function prepareAttributes(): void { if (isset($this->attributes['text']) && isset($this->attributes['url'])) { $this->attributes['text'] = $this->attributes['text'] . "\n" . $this->attributes['url']; return; } if (isset($this->attributes['url'])) { $this->attributes['text'] = $this->attributes['url']; } }}
传递给服务的属性可以通过 $attributes
数组访问。在示例中:
text
和 url
属性,则 url
会附加到 text
属性中。url
属性可用,则 text
属性会取 url
的值。# 支持指南 感谢您选择我们的开源软件包!请花点时间查看这些支持指南。它们将帮助您充分利用我们的项目。 ## 社区驱动支持 我们的开源项目由我们出色的社区推动。如果您有问题或需要帮助,StackOverflow 和其他在线资源是您最好的选择。 ## 错误和功能优先级 管理开源项目的现实意味着我们不能立即解决每个报告的错误或功能请求。我们按以下顺序优先处理问题: ### 1. 影响我们付费产品的错误 影响我们付费产品的错误将始终是我们的首要任务。在某些情况下,我们可能只会解决直接影响我们的错误。 ### 2. 社区拉取请求 如果您发现了一个错误并有解决方案,请提交拉取请求。在解决影响我们产品的问题后,我们将优先处理这些社区驱动的修复。一旦审核并批准,我们将合并您的解决方案并感谢您的贡献。 ### 3. 财务支持 对于上述类别之外的问题,您可以选择资助其解决。每个未解决的问题都链接到一个订单表单,您可以在其中提供财务支持。我们根据提供的资助金额优先处理这些问题。 ### 社区贡献 开源在社区活跃时蓬勃发展。即使您没有修复错误,也可以通过代码改进、文档更新、教程或在社区渠道中帮助他人来贡献。我们强烈鼓励每个人作为一个社区来支持开源工作。 _重申一下,DefectiveCode 将根据错误对我们付费产品的影响、社区拉取请求以及收到的财务支持来优先处理错误。_
版权所有 © Defective Code, LLC。保留所有权利
特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人员使用本软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许向其提供本软件的人员在符合以下条件的情况下这样做:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于对适销性、特定用途适用性和非侵权的担保。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而产生的任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为或其他方面。