是否可以通过 TypoScript 自动生成混合的数字和字母字符串,例如12A54
或类似的东西?
问问题
1988 次
3 回答
7
我更喜欢 userFunc 到 php 包含脚本。例如,您可以将参数传递给用户函数。
排版:
includeLibs.generateInvoiceNo= fileadmin/scripts/generateInvoiceNo.php
temp.invoiceNo = USER
temp.invoiceNo {
userFunc =user_generateInvoiceNo->main
}
PHP:
文件管理/脚本/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;
}
}
?>
学分:
于 2012-10-21T13:36:44.320 回答
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
}
}
笔记:
pidInList
必须指向现有页面。- MySQL 命令实际上只是一个示例,因为字符串永远不会包含字母 GZ。我确信有可能想出一个由 MySQL 生成的更好的字符串。
于 2012-10-19T12:33:07.220 回答
3
为这样简单的任务修补 TYPO3 源是错误的想法。在下一次源升级后,您将丢失所做的更改。
相反,最好包含一个简单的 PHP 脚本,您可以在其中呈现您需要的内容检查 TSREF
于 2012-10-19T11:45:34.367 回答