通过TypoScript生成随机字符串

Adr*_*ian 4 typo3 typoscript

是否可以通过TypoScript自动生成混合的数字和字母串,例如12A54类似的东西?

Mat*_*eng 7

与 php 包含脚本相比,我更喜欢 userFunc。例如,您可以将参数传递给用户函数。

排版:

includeLibs.generateInvoiceNo= fileadmin/scripts/generateInvoiceNo.php
temp.invoiceNo = USER
temp.invoiceNo {
  userFunc =user_generateInvoiceNo->main
}
Run Code Online (Sandbox Code Playgroud)

PHP:
fileadmin/scripts/generateInvoiceNo.php

<?
class user_generateInvoiceNo {
    var $cObj;// The backReference to the mother cObj object set at call time
    /**
    * Call it from a USER cObject with 'userFunc = user_generateInvoiceNo->main'
    */
    function main($content,$conf){
        $length = 6;
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $number=substr(str_shuffle($chars),0,$length);
        return $number;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

学分:


tmt*_*tmt 5

如已经提到的,存在的TypoScript没有这样的功能并且因此优选的方法是使用一些笑着PHP函数在其他的答案提示.

但是,有一个作弊,那就是使用MySQL.记住,这只是一个解决方案,只有你绝对不能(因为我真的想不到的原因)编写一个自定义PHP.把它当作学术答案而不是实际答案.

temp.random = CONTENT
temp.random {
  table = tt_content
  select {
    pidInList = 1
    recursive = 99
    max = 1
    selectFields = SUBSTRING(MD5(RAND()) FROM 1 FOR 6) AS random_string
  }
  renderObj = TEXT
  renderObj {
    field = random_string
    case = upper
  }
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. pidInList 必须指向现有页面.
  2. MySQL命令实际上只是一个例子,因为字符串永远不会包含字母GZ.我确信有可能想出一个由MySQL生成的更好的字符串.


bie*_*ior 3

为如此简单的任务修补 TYPO3 源代码是错误的想法。下次源升级后,您将丢失所做的更改。

相反,最好包含一个简单的 PHP 脚本,您可以在其中渲染所需的内容检查 TSREF