sudhaus7 / shortlink
一个灵活的TYPO3 URL缩短器,包含FLUID ViewHelpers和Encodeservice
Requires
- php: 7.4.* || 8.0.* || 8.1.*
- tuupola/base62: ^2.0.0
- typo3/cms-core: 11.5.*
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-phpbrowser: ^1.0.0
- codeception/module-rest: ^1.0.0
- codeception/phpbuiltinserver: *
- helhum/typo3-console: ^6.0
- typo3/cms-backend: ^11.5
- typo3/cms-fluid: ^11.5
- typo3/cms-fluid-styled-content: ^11.5
- typo3/cms-lowlevel: ^11.5
- typo3/cms-t3editor: ^11.5
- typo3/cms-tstemplate: ^11.5
README
一个TYPO3的URL缩短器
它做什么
此扩展将以类似bit.ly或类似服务的方式轻松创建缩短的URL。对于集成者来说,这意味着用于创建链接的常用Viewhelper已被扩展,并且缩短器可以透明地用于由FLUID Viewhelper创建的任何链接。
另外,还提供了一个Service类,可以创建动态缩短的URL,例如在插件或Extbase控制器中。
可用的FLUID Viewhelper
导入命名空间如下
<html xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers" xmlns:scl="http://typo3.org/ns/SUDHAUS7/Shortcutlink/ViewHelpers" data-namespace-typo3-fluid="true" >
或者这样
{namespace scl=SUDHAUS7\Shortcutlink\ViewHelpers}
以下Viewhelper可用
- uri.action
- uri.external
- uri.page
- uri.typolink
- link.action
- link.external
- link.page
这些Viewhelper具有所有属性,并且表现方式与它们的正常对应物相同,只是它们将生成缩短的URL
这意味着你现在可以用以下方式替换任何
<f:link.page pageId="15">The link</f:link.page>
简单地用以下内容替换
<scl:link.page pageId="15">The link</scl:link.page>
PHP中的使用
缩短URL的一个简单示例
$url = 'https://google.com/'; $shortener = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\SUDHAUS7\Shortcutlink\Service\ShortlinkService::class); $shortener->setUrl($url); $shortlink = $shortener->getShorturlWithDomain();
将缩短的URL锁定到前端用户
可以将前端用户ID锁定到缩短的URL上,这意味着缩短链接只能通过具有相同用户ID的前端用户会话打开。
为此,所有Viewhelper都有一个额外的属性 chainToUserid
,它接受要连接的前端用户ID。
例如
<scl:link.page pageId="15" chainToUserid="42">The link</scl:link.page>
生成的缩短链接只能在ID为42的用户登录时打开。
PHP中的对应代码将是
$url = 'https://google.com/'; $shortener = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\SUDHAUS7\Shortcutlink\Service\ShortlinkService::class); $shortener->setUrl($url); $shortener->setFeuser(42); $shortlink = $shortener->getShorturlWithDomain();
REST接口
在扩展设置中定义的入口点(默认:/goto/)可以用作创建、更新和删除缩短URL的RESTful接口API。
要启用此功能,您需要转到TYPO3后端,进入设置模块,并打开“配置扩展”对话框。
在这里,您将打开“shortcutlink”扩展的配置选项。
您将找到一个按钮“生成新的API密钥”。点击该按钮,将生成一个新的密钥。确保生成后立即复制,因为它无法恢复。然后保存配置。
现在,可以将此密钥用于POST、PUT和DELETE操作,只需将其作为名为“ApiKey”的HTTP请求头中的值添加即可。
要创建新的缩短URL,请使用不带密钥的POST方法在/goto/后。
以下是一个使用curl的示例
curl -X POST \ -d "url=https://google.com" \ -H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \ http://mysite/goto/
响应将是文本/plain格式的缩短链接URL。例如
http://mysite/goto/4J5tqQUkVnc
或者,您可以使用JSON编码的字符串作为负载,如果将Content-type设置为application/json。尽管如此,答案仍然是text/plain。
curl -X POST \ -d '{"url":"https://google.com"}' \ -H "Content-type: application/json" \ -H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \ http://mysite/goto/
负载中可能的字段有
- url = 要缩短的URL(必需)
- feuser = 此缩短码锁定到的前端用户ID(可选)
可能的返回代码有
- 200 - 成功
- 304 Forbidden - 当ApiKey错误或缺失时
- 500 Invalid Payload - 当负载无效时
要更新缩短的URL,请使用PUT方法在缩短的URL上。PUT支持POST和PUT操作,支持JSON编码和查询编码的负载。
例如
curl -X PUT \ -d '{"url":"https://bing.com"}' \ -H "Content-type: application/json" \ -H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \ http://mysite/goto/4J5tqQUkVnc
在更新成功的情况下,主体将只包含OK
。如果短链接被锁定给用户,则需要提供用户ID。只能更新URL,不能更新用户。
可能的返回代码有
- 200 - 成功
- 304 Forbidden - 当ApiKey错误或缺失时
- 500 Invalid Payload - 当负载无效时
- 404 - 如果短链接无效
- 403 - 如果提供了一个feuser但与存储的用户不匹配
相应地,DELETE方法将删除一个短链接。DELETE不需要负载。
curl -X DELETE \
-H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \
http://mysite/goto/4J5tqQUkVnc
在成功删除的情况下,主体将只包含OK
。
可能的返回代码有
- 200 - 成功
- 304 Forbidden - 当ApiKey错误或缺失时
- 404 - 如果短链接无效
待办事项:文档