Drupal 7 Drupal 7规则自定义操作将返回数据分配给替换模式
如何创建一个自定义规则操作,该操作将成功地将值保存为替换模式,以便在其他操作中使用? 在从产品订单检索产品显示信息方面,我得到了一些非常好的帮助 正如我所说,链接的答案帮助很大,但是产品显示返回的路径数据返回到Drupal 7 Drupal 7规则自定义操作将返回数据分配给替换模式,drupal-7,action,drupal-commerce,drupal-rules,Drupal 7,Action,Drupal Commerce,Drupal Rules,如何创建一个自定义规则操作,该操作将成功地将值保存为替换模式,以便在其他操作中使用? 在从产品订单检索产品显示信息方面,我得到了一些非常好的帮助 正如我所说,链接的答案帮助很大,但是产品显示返回的路径数据返回到http://www.mysite/node/77格式。但是,我实际上只需要数值,这样我就可以通过执行按id获取实体操作来加载节点,提供数值并发布产品显示节点等 因此,我实现了一个自定义操作,它将获取产品显示URL(node/77)并返回77。 我复制了id获取实体的代码,并对其进行了修改
http://www.mysite/node/77
格式。但是,我实际上只需要数值,这样我就可以通过执行按id获取实体操作来加载节点,提供数值并发布产品显示节点等
因此,我实现了一个自定义操作,它将获取产品显示URL(node/77)并返回77。
我复制了id获取实体的代码,并对其进行了修改,以便保存返回的数值并用于其他操作。代码如下:
function my_custom_action_info(){
$actions['publish_product_display_node'] = array(
'label' => t('Fetch product-display id'),
'parameter' => array(
'type' => array(
'type' => 'uri',
'label' => t('My Action'),
'options list' => 'rules_entity_action_type_options2',
'description' => t('Specifies the product-display url.'),
),
),
'provides' => array(
'entity_fetched' => array('type' => 'integer', 'label' => t('Fetched entity')),
),
'group' => t('Entities'),
'access callback' => 'rules_entity_action_access',
);
return $actions;
}
function publish_product_display_node($path = null){
$parts = explode('node/', $path);
return $parts[1];
}
function rules_entity_action_type_options2($element, $name = NULL) {
// We allow calling this function with just the element name too. That way
// we ease manual re-use.
$name = is_object($element) ? $element->getElementName() : $element;
return ($name == 'entity_create') ? rules_entity_type_options2('create') : rules_entity_type_options2();
}
function rules_entity_type_options2($key = NULL) {
$info = entity_get_info();
$types = array();
foreach ($info as $type => $entity_info) {
if (empty($entity_info['configuration']) && empty($entity_info['exportable'])) {
if (!isset($key) || entity_type_supports($type, $key)) {
$types[$type] = $entity_info['label'];
}
}
}
return $types;
}
function rules_action_entity_createfetch_access2(RulesAbstractPlugin $element) {
$op = $element->getElementName() == 'entity_create' ? 'create' : 'view';
return entity_access($op, $element->settings['type']);
}
正如我所说,我复制了修改后的代码,因此我并不声称自己完全理解了除发布、产品、显示节点之外的所有功能
我的代码修改的工作范围包括将产品显示URL标记设置为参数,以及设置实体变量标签(Display NID)和值(Display_NID)。
问题是,当我在新创建的操作中选中“显示”时,该值为空
我需要帮助了解如何成功保存我的实体值,以便在以下操作中使用它。在功能
发布\u产品\u显示\u节点
中,您是否可以验证不需要返回$parts[0]
,而不是$[parts[1]
只是Drupal路径的格式通常为“node/7”或“taxonomy/term/6”,如果以“node/”作为分隔符进行分解,那么对于节点,只有一个从索引0开始的值
所以,我想知道这是否能解决你的问题…你好,Boriana。我明白你的意思。$parts[1]是以前代码的遗留内容,您是对的,它应该是索引0。我将尽快对此进行调查,并返回youHi Boriana,我查看了我的代码,并使用完整的URL格式更新了我的问题。完整的URL格式为:。因此,$parts[1]实际上是正确的。而且,即使我从代码中返回了一个静态数字,我仍然无法在规则操作中获得该数字