function rdf_rdfa_attributes
Same name in other branches
- 7.x modules/rdf/rdf.module \rdf_rdfa_attributes()
- 8.9.x core/modules/rdf/rdf.module \rdf_rdfa_attributes()
Builds an array of RDFa attributes for a given mapping.
This array will typically be passed through Drupal\Core\Template\Attribute to create the attributes variables that are available to template files. These include $attributes, $title_attributes, $content_attributes and the field-specific $item_attributes variables.
Parameters
array $mapping: An array containing a mandatory 'properties' key and optional 'datatype', 'datatype_callback' and 'type' keys. For example:
array(
'properties' => array(
'schema:interactionCount',
),
'datatype' => 'xsd:integer',
'datatype_callback' => array(
'callable' => 'Drupal\\rdf\\SchemaOrgDataConverter::interactionCount',
'arguments' => array(
'interaction_type' => 'UserComments',
),
),
);
mixed $data: (optional) A value that needs to be converted by the provided callback function.
Return value
array RDFa attributes suitable for Drupal\Core\Template\Attribute.
Related topics
4 calls to rdf_rdfa_attributes()
- RdfaAttributesTest::_testAttributes in core/
modules/ rdf/ tests/ src/ Kernel/ RdfaAttributesTest.php - Helper function to test attribute generation.
- rdf_comment_storage_load in core/
modules/ rdf/ rdf.module - Implements hook_ENTITY_TYPE_storage_load() for comment entities.
- rdf_entity_prepare_view in core/
modules/ rdf/ rdf.module - Implements hook_entity_prepare_view().
- rdf_preprocess_node in core/
modules/ rdf/ rdf.module - Implements hook_preprocess_HOOK() for node templates.
File
-
core/
modules/ rdf/ rdf.module, line 173
Code
function rdf_rdfa_attributes($mapping, $data = NULL) {
$attributes = [];
// The type of mapping defaults to 'property'.
$type = $mapping['mapping_type'] ?? 'property';
switch ($type) {
// The mapping expresses the relationship between two resources.
case 'rel':
case 'rev':
$attributes[$type] = $mapping['properties'];
break;
// The mapping expresses the relationship between a resource and some
// literal text.
case 'property':
if (!empty($mapping['properties'])) {
$attributes['property'] = $mapping['properties'];
// Convert $data to a specific format as per the callback function.
if (isset($data) && !empty($mapping['datatype_callback'])) {
$callback = $mapping['datatype_callback']['callable'];
$arguments = $mapping['datatype_callback']['arguments'] ?? NULL;
$attributes['content'] = call_user_func($callback, $data, $arguments);
}
if (isset($mapping['datatype'])) {
$attributes['datatype'] = $mapping['datatype'];
}
break;
}
}
return $attributes;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.