rdf_preprocess_comment(&$variables)
Implements hook_preprocess_HOOK() for comment templates.
File
- core/modules/rdf/rdf.module, line 447
- Enables semantically enriched output for Drupal sites in the form of RDFa.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | function rdf_preprocess_comment(& $variables ) { $comment = $variables [ 'comment' ]; $mapping = rdf_get_mapping( 'comment' , $comment ->bundle()); $bundle_mapping = $mapping ->getPreparedBundleMapping(); if (! empty ( $bundle_mapping [ 'types' ]) && !isset( $comment ->in_preview)) { // Adds RDFa markup to the comment container. The about attribute specifies // the URI of the resource described within the HTML element, while the // typeof attribute indicates its RDF type (e.g., sioc:Post, foaf:Document, // and so on.) $variables [ 'attributes' ][ 'about' ] = $comment ->url(); $variables [ 'attributes' ][ 'typeof' ] = $bundle_mapping [ 'types' ]; } // Adds RDFa markup for the relation between the comment and its author. $author_mapping = $mapping ->getPreparedFieldMapping( 'uid' ); if (! empty ( $author_mapping )) { $author_attributes = [ 'rel' => $author_mapping [ 'properties' ]]; // Wraps the 'author' and 'submitted' variables which are both available in // comment.html.twig. $variables [ 'author' ] = [ '#theme' => 'rdf_wrapper' , '#content' => $variables [ 'author' ], '#attributes' => $author_attributes , ]; $variables [ 'submitted' ] = [ '#theme' => 'rdf_wrapper' , '#content' => $variables [ 'submitted' ], '#attributes' => $author_attributes , ]; } // Adds RDFa markup for the date of the comment. $created_mapping = $mapping ->getPreparedFieldMapping( 'created' ); if (! empty ( $created_mapping )) { // The comment date is precomputed as part of the rdf_data so that it can be // cached as part of the entity. $date_attributes = $comment ->rdf_data[ 'date' ]; $rdf_metadata = array ( '#theme' => 'rdf_metadata' , '#metadata' => array ( $date_attributes ), ); // Ensure the original variable is represented as a render array. $created = ! is_array ( $variables [ 'created' ]) ? [ '#markup' => $variables [ 'created' ]] : $variables [ 'created' ]; $submitted = ! is_array ( $variables [ 'submitted' ]) ? [ '#markup' => $variables [ 'submitted' ]] : $variables [ 'submitted' ]; // Make render array and RDF metadata available in comment.html.twig. $variables [ 'created' ] = [ $created , $rdf_metadata ]; $variables [ 'submitted' ] = [ $submitted , $rdf_metadata ]; } $title_mapping = $mapping ->getPreparedFieldMapping( 'subject' ); if (! empty ( $title_mapping )) { // Adds RDFa markup to the subject of the comment. Because the RDFa markup // is added to an <h3> tag which might contain HTML code, we specify an // empty datatype to ensure the value of the title read by the RDFa parsers // is a literal. $variables [ 'title_attributes' ][ 'property' ] = $title_mapping [ 'properties' ]; $variables [ 'title_attributes' ][ 'datatype' ] = '' ; } // Annotates the parent relationship between the current comment and the node // it belongs to. If available, the parent comment is also annotated. // @todo When comments are turned into fields, this should be changed. // Currently there is no mapping relating a comment to its node. $pid_mapping = $mapping ->getPreparedFieldMapping( 'pid' ); if (! empty ( $pid_mapping )) { // Adds the relation to the parent entity. $parent_entity_attributes [ 'rel' ] = $pid_mapping [ 'properties' ]; // The parent entity URI is precomputed as part of the rdf_data so that it // can be cached as part of the entity. $parent_entity_attributes [ 'resource' ] = $comment ->rdf_data[ 'entity_uri' ]; $variables [ 'rdf_metadata_attributes' ][] = $parent_entity_attributes ; // Adds the relation to parent comment, if it exists. if ( $comment ->hasParentComment()) { $parent_comment_attributes [ 'rel' ] = $pid_mapping [ 'properties' ]; // The parent comment URI is precomputed as part of the rdf_data so that // it can be cached as part of the entity. $parent_comment_attributes [ 'resource' ] = $comment ->rdf_data[ 'pid_uri' ]; $variables [ 'rdf_metadata_attributes' ][] = $parent_comment_attributes ; } } // Adds RDF metadata markup above comment body if any. if (! empty ( $variables [ 'rdf_metadata_attributes' ]) && isset( $variables [ 'content' ][ 'comment_body' ])) { $rdf_metadata = array ( '#theme' => 'rdf_metadata' , '#metadata' => $variables [ 'rdf_metadata_attributes' ], ); if (! empty ( $variables [ 'content' ][ 'comment_body' ][ '#prefix' ])) { $rdf_metadata [ '#suffix' ] = $variables [ 'content' ][ 'comment_body' ][ '#prefix' ]; } $variables [ 'content' ][ 'comment_body' ][ '#prefix' ] = drupal_render( $rdf_metadata ); } } |
Please login to continue.