繁体   English   中英

Drupal:具有起始值的内容类型的自动编号字段

[英]Drupal: Auto number field for content-type with starting value

我需要一个自动编号我的内容类型的字段,但必须以2000之类的值开始。我尝试了“串行字段”和“计算字段”。 无法弄清楚该怎么做。 该数字(使用“串行字段”)不会自动递增,但是我无法定义起始数字。

反正有这样做吗?

非常感谢!

您可以使用计算字段来执行此操作。 将计算字段添加到您的内容类型,并将数据类型设置为整数。 在“计算字段(PHP)”文本区域中,此代码将为您工作:

if (empty($entity_field[0]['value'])) {
  $count = db_select('node')->fields('node')->condition('type', $entity->type)->execute()->rowCount();
  $entity_field[0]['value'] = $count + 2000;
}

这将检查是否已经为此节点设置了该字段的值,如果没有,则获取该内容类型的节点总数,添加一个常量(在此示例中为2000),并将结果设置为您的字段的值。

我们在Drupal 6系统中的几种自定义记录类型上使用自定义自动编号(以下内容也适用于Drupal 7)。 为了使它起作用,我们使用“规则”模块实现了一个规则,该规则会在保存记录时触发。

规则运行ON事件保存内容后 ,应该验证您是否正在保存您感兴趣的内容类型。(例如,如果您要自动编号Widget,则为Content type添加一个IF 就是Widget

对于您的操作,在规则上放置*填充创建的内容的'custom_number'字段*操作(其中'custom_number'是您的自动编号字段),然后按照以下示例操作:

$number = db_result(db_query(
    "SELECT MAX(field_custom_number_value) FROM {content_type_widget}"));

if(empty($number) || $number < 200) { // Replace 200 with your starting value
    $number = 200;
} else {
    $number++;
}

return array( 0 => array('value' => $number) );

每次保存新的窗口小部件时,系统都会运行查询以查找已分配的最大custom_number。 如果未分配,或分配的数字小于200,则系统将分配200;否则,系统将分配200。 否则,它将分配比当前分配的最大数量多1的数量。

如果您愿意,还可以添加一行调试代码,以在发现小于所需最小值的事件时添加看门狗行或其他调试事件。

串行模块生成一个表束“ 乔布斯 ”则表“serial_jobs_field_job_id”他的名字是serial_bundlename_fieldname也就是说,如果你已经添加了一个字段名“field_job_id”将被创建。

该表中包含2场“SID”“NID“SID”是自动递增领域。

您可以使用phpMyAdmin之类的工具并执行以下查询

ALTER TABLE serial_jobs_field_job_id AUTO_INCREMENT = 2000;

这可能应该设置自动增量字段的起始值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM