diff --git a/src/Feeds/MetatagFieldTargetDefinition.php b/src/Feeds/MetatagFieldTargetDefinition.php new file mode 100644 index 0000000..6caeccb --- /dev/null +++ b/src/Feeds/MetatagFieldTargetDefinition.php @@ -0,0 +1,27 @@ +properties[$property]['label']; + } + + /** + * {@inheritdoc} + */ + public function getPropertyDescription($property) { + return $this->properties[$property]['description']; + } + +} diff --git a/src/Feeds/Target/Metatag.php b/src/Feeds/Target/Metatag.php new file mode 100644 index 0000000..6708457 --- /dev/null +++ b/src/Feeds/Target/Metatag.php @@ -0,0 +1,69 @@ +sortedGroupsWithTags()['basic']['tags']; + + // Create a field target definition. + // Can't use default FieldTargetDefinition because of https://www.drupal.org/project/feeds/issues/3173942. + $definition = MetatagFieldTargetDefinition::createFromFieldDefinition($field_definition); + + // Loop over basic tags. + foreach ($metatag_tags as $tag_key => $tag_value) { + // Add tag as property + $definition->addProperty($tag_key,$tag_value['label'],$tag_value['label']); + } + + return $definition; + } + + /** + * {@inheritdoc} + */ + public function setTarget(FeedInterface $feed, EntityInterface $entity, $field_name, array $values) { + + if ($values = $this->prepareValues($values)) { + $entity_target = $this->getEntityTarget($feed, $entity); + if (!empty($entity_target)) { + $item_list = $entity_target->get($field_name); + + // Append these values to the existing values. + $values = array_merge($item_list->getValue(), $values)[0]; + + // Serialize values + $values = serialize($values); + + $item_list->setValue($values); + } + } + } + +}