通过TypoScript生成随机字符串

时间:2012-10-19 11:01:41

标签: typo3 typoscript

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

3 个答案:

答案 0 :(得分:5)

正如已经提到的,Typoscript中没有这样的功能,因此首选方法是使用其他答案中建议的一些simle 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
  }
}

备注:

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

答案 1 :(得分:4)

我更喜欢userFunc到php include脚本。例如,您可以将参数传递给用户函数。

<强>的TypoScript:

includeLibs.generateInvoiceNo= fileadmin/scripts/generateInvoiceNo.php
temp.invoiceNo = USER
temp.invoiceNo {
  userFunc =user_generateInvoiceNo->main
}

<强> PHP:
fileadmin /脚本/ 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;
    }
}
?>

致谢:

答案 2 :(得分:3)

为这样简单的任务修补TYPO3来源是错误的想法。在下一次源升级后,您将丢失更改。

相反,最好包含一个简单的PHP脚本,您可以在其中呈现所需内容check TSREF