sudhaus7 / shortcutlink
一个灵活的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类,可以在插件或Extbase控制器中动态创建缩短的URL。
可用的FLUID Viewhelpers
按照这种方式导入命名空间
<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}
以下ViewHelpers可用
- uri.action
- uri.external
- uri.page
- uri.typolink
- link.action
- link.external
- link.page
这些ViewHelpers具有所有可用属性,并且行为与它们的常规对应物相同,只是它们将生成缩短的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密钥”按钮。点击该按钮,将生成一个新的密钥。确保在生成后立即复制它,因为它无法恢复。之后保存配置。
现在,您可以通过将API密钥作为名为“ApiKey”的HTTP请求头添加,使用该密钥进行POST、PUT和DELETE操作。
要创建新的缩短URL,请使用不带密钥的POST方法访问/goto/
以下是一个curl的示例
curl -X POST \ -d "url=https://google.com" \ -H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \ http://mysite/goto/
响应将是文本/plain格式的短链接URL。例如
http://mysite/goto/4J5tqQUkVnc
或者,如果您将内容类型设置为application/json,则可以使用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 禁止 - 当ApiKey错误或缺失时
- 500 无效有效载荷 - 当有效载荷无效时
要更新缩短的URL,您需要在缩短的URL上使用PUT方法。PUT支持像POST一样,可以发送JSON编码和查询编码的有效负载。
例如
curl -X PUT \ -d '{"url":"https://bing.com"}' \ -H "Content-type: application/json" \ -H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \ http://mysite/goto/4J5tqQUkVnc
成功更新后,正文将简单地包含OK
。如果缩短的URL被锁定给某个用户,还需要提供用户ID。只能更新URL,不能更新用户。
可能的返回代码是
- 200 - 成功
- 304 禁止 - 当ApiKey错误或缺失时
- 500 无效有效载荷 - 当有效载荷无效时
- 404 - 如果缩短的URL无效
- 403 - 如果提供的feuser与存储的用户不匹配
相应地,方法DELETE将删除缩短的URL。DELETE不需要有效负载。
curl -X DELETE \
-H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \
http://mysite/goto/4J5tqQUkVnc
成功删除后,正文将简单地包含OK
。
可能的返回代码是
- 200 - 成功
- 304 禁止 - 当ApiKey错误或缺失时
- 404 - 如果缩短的URL无效
待办事项:文档