diff --git a/plugins/FeedsNodeProcessor.inc b/plugins/FeedsNodeProcessor.inc index 2df4b35..41ec275 100644 --- a/plugins/FeedsNodeProcessor.inc +++ b/plugins/FeedsNodeProcessor.inc @@ -219,6 +219,17 @@ class FeedsNodeProcessor extends FeedsProcessor { $target_node->feeds['suppress_import'] = TRUE; } break; + case 'path_alias': + $target_node->path = array(); + + // Check for existing aliases. + if (!empty($target_node->nid)) { + if ($path = path_load('node/' . $target_node->nid)) { + $target_node->path = $path; + } + } + $target_node->path['alias'] = $value; + break; default: parent::setTargetElement($source, $target_node, $target_element, $value); break; @@ -280,6 +291,13 @@ class FeedsNodeProcessor extends FeedsProcessor { ); } + // If path is enabled expose path alias. + if (module_exists('path')) { + $targets['path_alias'] = array( + 'name' => t('Path alias'), + 'description' => t('URL path alias of the node.'), + ); + } // If the target content type is a Feed node, expose its source field. if ($id = feeds_get_importer_id($this->config['content_type'])) { diff --git a/plugins/FeedsTermProcessor.inc b/plugins/FeedsTermProcessor.inc index 28577a8..2059cda 100644 --- a/plugins/FeedsTermProcessor.inc +++ b/plugins/FeedsTermProcessor.inc @@ -105,6 +105,28 @@ class FeedsTermProcessor extends FeedsProcessor { } } + /** + * Override setTargetElement to operate on a target item that is a taxonomy term. + */ + public function setTargetElement(FeedsSource $source, $target_term, $target_element, $value) { + switch ($target_element) { + case 'path_alias': + $target_term->path = array(); + + // Check for existing aliases. + if (!empty($target_term->tid)) { + if ($path = path_load('taxonomy/term/' . $target_term->tid)) { + $target_term->path = $path; + } + } + $target_term->path['alias'] = $value; + break; + default: + parent::setTargetElement($source, $target_term, $target_element, $value); + break; + } + } + /** * Return available mapping targets. */ @@ -121,6 +143,15 @@ class FeedsTermProcessor extends FeedsProcessor { 'description' => t('Description of the taxonomy term.'), ), ); + + // If path is enabled expose path alias. + if (module_exists('path')) { + $targets['path_alias'] = array( + 'name' => t('Path alias'), + 'description' => t('URL path alias for the taxonomy term.'), + ); + } + // Let implementers of hook_feeds_term_processor_targets() add their targets. try { self::loadMappers();