getArticleType()); $vars['node_type'] = str_replace('_', '-', $adapter->value()->type); if ($node->type == 'projekt') { $build[] = [ '#theme' => 'mkbh_block_inline_project_information', '#node' => $node, ]; } $body_content = field_view_field('node', $node, 'body', 'default'); $build[] = $body_content; if ($node->type == 'projekt') { $build[] = [ '#theme' => 'mkbh_block_inline_project_bottom_section', '#node' => $node, ]; } if ($node->type == 'vision') { $build[] = [ '#theme' => 'mkbh_block_inline_vision_rate_widget', '#node' => $node, ]; } // sponsored articles if ($articleSubType && $articleSubType->tid == 7) { $build[] = [ '#theme' => 'mkbh_block_inline_sponsored_bottom_section', '#node' => $vars['node'], ]; } // The block must be not empty if (!empty($node->field_article_tags['und'])) { $tag_buttons = mkbh_article_page_tag_buttons(); //position content after $tag_buttons['#weight'] = isset($body_content['#weight']) ? $body_content['#weight'] : 0; $build[] = $tag_buttons; } if (in_array($node->type, ['article', 'vision']) && $inArticleSupportBlock = module_invoke('mkbh_blocks', 'block_view', 'mkbh_block_article_support_block')) { $blockContent = $inArticleSupportBlock['content']; $build[] = [ '#markup' => trim( render($blockContent) ), ]; } $vars['content'] = [ '#markup' => _mkbh_article_page_tokens_replace( render($build), ['node' => $node] ), ]; $vars['sub_type'] = FALSE; if ($articleSubType) { $vars['sub_type'] = 'article-sub-type-' . str_replace(['_', ' '], '-', drupal_strtolower($articleSubType->name)); } $vars['lang_lesser_class'] = (isset($adapter->adapter->field_article_lang_laeser) && $adapter->adapter->field_article_lang_laeser->value() == TRUE) ? 'article-lang-lesser' : ''; $vars['paywall'] = mkbh_paywall_is_user_has_access($node) ? 'paywall-has-access' : 'paywall-denied'; if ($vars['paywall'] === 'paywall-denied') { drupal_page_is_cacheable(false); } } /** * Returns renderable tag buttons * * @return array */ function mkbh_article_page_tag_buttons() { //Insert Tag Buttons before support block. $buttonBlock = module_invoke('mkbh_blocks', 'block_view', 'mkbh_block_node_tag_buttons'); if (!empty($buttonBlock['content'])) { return [ '#type' => 'container', '#attributes' => array( 'class' => array( 'custom-block', 'custom-block-tag-buttons-container', ), ), 'subject' => [ '#type' => 'html_tag', '#tag' => 'h2', '#value' => $buttonBlock['subject'] ], 'content' => $buttonBlock['content'] ]; } } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_photo_series_content(&$vars) { $node = $vars['node']; /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterProxy $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($node); $nodeWrapper = $adapter->adapter; $photoFieldCollectionItems = $nodeWrapper->field_photo_images->value(); $build['body_before_photos'] = field_view_field('node', $node, 'body_before_photos', 'default'); $build['body_before_photos']['#attributes']['class'] = ['asd']; if (!empty($photoFieldCollectionItems)) { $build['photos'] = [ '#theme' => 'mkbh_photo_series_photos', '#node' => $node, '#photo_field_collection_items' => $photoFieldCollectionItems, ]; } $build['body'] = field_view_field('node', $node, 'body', 'default'); $build['body_before_photos']['#weight'] = 0; $build['photos']['#weight'] = 1; $build['body']['#weight'] = 2; $vars['content'] = [ '#markup' => _mkbh_article_page_tokens_replace(render($build), ['node' => $node]), ]; $articleSubType = taxonomy_term_load($adapter->getArticleType()); $vars['node_type'] = str_replace('_', '-', $adapter->value()->type); $vars['sub_type'] = FALSE; if ($articleSubType) { $vars['sub_type'] = 'article-sub-type-' . str_replace(['_', ' '], '-', drupal_strtolower($articleSubType->name)); } $vars['lang_lesser_class'] = (isset($adapter->adapter->field_article_lang_laeser) && $adapter->adapter->field_article_lang_laeser->value() == TRUE) ? 'article-lang-lesser' : ''; } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_preprocess_mkbh_article_content_sidebar(&$vars) { $classes =& $vars['sidebar_classes']; $classes = []; $items =& $vars['items']; $staticItems =& $vars['static_items']; $node = $vars['node']; $nodeWrapper = entity_metadata_wrapper('node', $node); /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterProxy $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($node); if ($node->type == 'photo_series') { $photoSeriesPhotosCount = (int)$adapter->adapter->field_photo_images->count(); $classes['photo_series_size'] = $photoSeriesPhotosCount >= 2 ? 'photo-series-long' : 'photo-series-short'; } $file = isset($nodeWrapper->field_article_writer_photo) ? $nodeWrapper->field_article_writer_photo->value() : NULL; if (!empty($file)) { $items['writer_photo'] = [ 'attributes' => [ 'class' => ['item-writer-photo'], ], 'data' => [ '#markup' => theme('image_style', ['style_name' => '480x480', 'path' => $file['uri']]), ], ]; } if ($node->type == 'vision') { $visionSubType = $nodeWrapper->field_vision_sub_type->value(); if ($visionSubType == 'læservision') { $items['vision_sub_type_læservision'] = [ 'attributes' => [ 'class' => [ 'item-vision-sub-type', 'item-vision-sub-type-læservision', 'active', ], ], 'data' => [ '#markup' => 'LÆSERVISION', ], ]; } elseif ($visionSubType == 'tegnestuevision') { $items['vision_sub_type_tegnestuevision'] = [ 'attributes' => [ 'class' => [ 'item-vision-sub-type', 'item-vision-sub-type-tegnestuevision', 'active', ], ], 'data' => [ '#markup' => 'TEGNESTUEVISION', ], ]; } } $authorName = $adapter->getRenderableWriterName(FALSE); $authorNamePlain = trim(strip_tags(render($authorName))); if (!empty($authorNamePlain)) { // Add SEO specific markup $authorName['#prefix'] = ''; $authorName['#suffix'] = ''; $page_keywords = array( '#type' => 'html_tag', '#tag' => 'meta', '#attributes' => array( 'name' => 'author', 'content' => $authorNamePlain, ) ); $rendered_author_name = render($authorName); if (!empty($nodeWrapper->field_node_writer_ref) && ($term = $nodeWrapper->field_node_writer_ref->value())) { $rendered_author_name = l($rendered_author_name, 'taxonomy/term/' . $term->tid,['html'=>TRUE]); } drupal_add_html_head($page_keywords, 'meta_tag_author'); $items['author'] = [ 'attributes' => [ 'class' => ['item-author'], 'itemprop' => "author", 'itemscope' => '', 'itemtype' => 'http://schema.org/Person' ], 'data' => [ '#children' => $rendered_author_name, ], ]; } $infoAboutWrite = $adapter->getRenderableInfoAboutWrite(FALSE); if (!empty($infoAboutWrite['#markup'])) { $items['info_about_write'] = [ 'attributes' => [ 'class' => ['item-info-about-write'], ], 'data' => [ '#markup' => render($infoAboutWrite), ], ]; } $post_date_month = [ '#prefix' => '
', '#suffix' => '
', '#markup' => format_date($node->created, 'month_only'), ]; $post_date_year = [ '#prefix' => '
', '#suffix' => '
', '#markup' => date('Y', $node->created), ]; $items['post-date'] = [ 'attributes' => [ 'class' => ['item-post-date'], ], 'data' => [ [ '#prefix' => '
', '#suffix' => '
', '#markup' => date('d', $node->created), ], [ '#prefix' => '
', '#suffix' => '
', '#markup' => render($post_date_month) . render($post_date_year), ], ], ]; $items['social_widget'] = [ 'attributes' => [ 'class' => ['item-social-widget'], ], 'data' => [ '#theme' => 'mkbh_social_share_share_widget', '#node' => $node, ], ]; if (isset($nodeWrapper->field_related_projects)) { $relatedProjects = []; foreach ($nodeWrapper->field_related_projects as $relatedProject) { $relatedProjects[$relatedProject->getIdentifier()] = l($relatedProject->value()->title, 'node/' . $relatedProject->getIdentifier()); } if (!empty($relatedProjects)) { $items['related_projects'] = [ 'attributes' => [ 'class' => ['item-related-projects'], ], 'data' => [ '#theme' => 'item_list', '#title' => 'Artiklen er relateret til projektet', '#items' => $relatedProjects, ], ]; } } if ($node->type == 'photo_series') { $staticItems['photo_series_cta_email_modal'] = [ 'attributes' => [ 'class' => ['item-photo-series-cta-email-modal'], ], 'data' => [ '#theme' => 'mkbh_token_mkbh_inline_photo_series_cta_email_modal', ], ]; } if ($node->type == 'projekt') { $items = array_intersect_key($items, ['social_widget' => 1]); } $articleSubType = taxonomy_term_load($adapter->getArticleType()); $vars['node_type'] = str_replace('_', '-', $adapter->value()->type); $vars['sub_type'] = FALSE; if ($articleSubType) { $vars['sub_type'] = 'article-sub-type-' . str_replace(['_', ' '], '-', drupal_strtolower($articleSubType->name)); } $vars['lang_lesser_class'] = (isset($adapter->adapter->field_article_lang_laeser) && $adapter->adapter->field_article_lang_laeser->value() == TRUE) ? 'article-lang-lesser' : ''; } /** * Implements hook_process_HOOK(). */ function mkbh_article_page_process_mkbh_photo_series_photos(&$vars) { $photos =& $vars['photos']; if (!empty($vars['photo_field_collection_items']) && !empty($vars['node'])) { foreach ($vars['photo_field_collection_items'] as $photoFieldCollectionItem) { $wrapper = entity_metadata_wrapper('field_collection_item', $photoFieldCollectionItem); if ($wrapper->value()) { $photos[$wrapper->getIdentifier()] = [ 'photo' => field_view_field('field_collection_item', $photoFieldCollectionItem, 'field_photo_i_image', 'default'), 'photo_file' => $wrapper->field_photo_i_image->value(), 'caption' => field_view_field('field_collection_item', $photoFieldCollectionItem, 'field_photo_i_caption', 'default'), 'photographer' => field_view_field('field_collection_item', $photoFieldCollectionItem, 'field_photo_i_photographer', 'default'), 'share_url' => url('node/' . $vars['node']->nid, [ 'absolute' => TRUE, 'alias' => TRUE, 'query' => ['photo' => $wrapper->getIdentifier()], ]), 'share_subject' => $vars['node']->title, 'share_body' => url('node/' . $vars['node']->nid, ['absolute' => TRUE]), ]; } } } $vars['attached_widgets'] = [ 'photo_series_cta_email_modal' => [ '#theme' => 'mkbh_token_mkbh_inline_photo_series_cta_email_modal', ], ]; } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_token_mkbh_inline_images(&$vars) { $node = $vars['node']; /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterProxy $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($node); $nodeInlineImages = $adapter->getInlineImages(); /** @var \Illuminate\Support\Collection $inlineImages */ $inlineImages = collect(); foreach ($vars['field_collection_items'] as $fieldCollectionItemId) { if (isset($nodeInlineImages[$fieldCollectionItemId])) { $inlineImages->push($nodeInlineImages[$fieldCollectionItemId]); } } $hasFullWidthImages = false; $vars['inline_images'] = $inlineImages->values()->map(function ($fieldCollection) use (&$hasFullWidthImages) { if (isset($fieldCollection['fields']['layout']) && $fieldCollection['fields']['layout'] === 'full-width') { $hasFullWidthImages = true; } return [ 'layout' => $fieldCollection['fields']['layout'], 'caption' => $fieldCollection['fields']['caption'], 'photographer' => $fieldCollection['fields']['photographer'], 'photo' => [ '#theme' => 'image_style', '#style_name' => '975x600_manual_crop', '#path' => $fieldCollection['fields']['image']['uri'], '#alt' => $fieldCollection['fields']['image']['alt'], '#title' => $fieldCollection['fields']['image']['title'], ], 'original_photo_url' => image_style_url('fresco_1200', $fieldCollection['fields']['image']['uri']), ]; }); $vars['has_full_width_images'] = $hasFullWidthImages; } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_token_mkbh_inline_quote(&$vars) { $node = $vars['node']; /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterProxy $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($node); $nodeQuotes = $adapter->getInlineQuotes(); $inlineQuote = array_intersect_key($nodeQuotes, array_flip([$vars['quote']])); $vars['quote'] = NULL; if (!empty($inlineQuote)) { $inlineQuote = array_map(function ($e) { return [ '#markup' => $e, ]; }, $inlineQuote); $vars['quote'] = reset($inlineQuote); } } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_token_mkbh_inline_fact(&$vars) { $node = $vars['node']; /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterInterface $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($node); $nodeFacts = $adapter->getInlineFacts(); $inlineFact = array_intersect_key($nodeFacts, array_flip([$vars['field_collection_items']])); $vars['fact'] = NULL; if (!empty($inlineFact)) { $inlineFact = array_map(function ($e) { $fact = [ 'title' => $e['fields']['title'], 'content' => $e['fields']['content'], 'image' => NULL, ]; if (!empty($e['fields']['image'])) { $fact['image'] = [ '#theme' => 'image_style', '#style_name' => 'w705', '#path' => $e['fields']['image']['uri'], '#alt' => $e['fields']['title'], '#title' => $e['fields']['title'], ]; } return $fact; }, $inlineFact); $vars['fact'] = reset($inlineFact); } } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_token_mkbh_inline_article(&$vars) { module_load_include('inc', 'mkbh_blocks', 'mkbh_blocks.helpers'); if (is_numeric($vars['article']) && $article = node_load($vars['article'])) { $vars['article'] = node_load($vars['article']); } else { $vars['article'] = NULL; } } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_token_mkbh_inline_map(&$vars) { _mkbh_article_page_include_leaflet(); $vars['map_id'] = sprintf('node-%s-inline-map-%s', $vars['node']->nid, sha1(uniqid(mt_rand(0, PHP_INT_MAX), TRUE))); $sourceNode = $vars['node']; if (is_numeric($vars['source']) && $node = node_load($vars['source'])) { $sourceNode = $node; } $vars['source_node'] = $sourceNode; if (!empty($sourceNode->location)) { $location = $sourceNode->location; $vars['location_lat'] = $location['latitude']; $vars['location_lng'] = $location['longitude']; } } function mkbh_article_page_process_mkbh_token_mkbh_inline_ad(&$vars) { $vars['ad_tag'] = mkbh_ads_dfp_tag($vars['ad_unit']); } function mkbh_article_page_process_mkbh_token_mkbh_inline_city_change_analytics(&$vars) { if (!isset($vars['node'])) { return; } $apiClient = new \Drupal\mkbh_article_page\CityChange\CityChangeApiClient(); $vars['analytics'] = $apiClient->getAnalyticsForNode($vars['node']); } function mkbh_article_page_process_mkbh_token_mkbh_inline_city_change_suggestions(&$vars) { if (!isset($vars['node'])) { return; } $apiClient = new \Drupal\mkbh_article_page\CityChange\CityChangeApiClient(); $vars['suggestions'] = $apiClient->getSuggestionsForNode($vars['node']); } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_block_inline_project_information(&$vars) { _mkbh_article_page_include_leaflet(); /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterInterface $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($vars['node']); $nodeWrapper = $adapter->getEntityMetadataWrapper(); $shortItems =& $vars['short_items']; $fullItems =& $vars['full_items']; if ($projectDistrict = $nodeWrapper->field_project_city_district->value()) { $shortItems['project_city_district'] = [ 'attributes' => [ 'class' => ['item-city-district'], ], 'data' => [ 'label' => 'Bydel', 'value' => $projectDistrict->name, ], ]; } if ($projectType = $nodeWrapper->field_project_type->value()) { $shortItems['project_type'] = [ 'attributes' => [ 'class' => ['item-type'], ], 'data' => [ 'label' => 'Type', 'value' => $projectType->name, ], ]; } $shortItems['project_status'] = [ 'attributes' => [ 'class' => ['item-status'], ], 'data' => [ 'label' => 'Status', 'value' => 'Plan', ], ]; $projectStartYear = $nodeWrapper->field_project_start_year->value(); $projectEndYear = $nodeWrapper->field_project_end_year->value(); if (!empty($projectStartYear)) { $shortItems['project_status']['data']['value'] = 'Under opførsel'; } if (!empty($projectStartYear) && !empty($projectEndYear)) { $shortItems['project_status']['data']['value'] = 'Afsluttet'; } if ($projectAddress = $nodeWrapper->field_project_address->value()) { $fullItems['project_address'] = [ 'attributes' => [ 'class' => ['item-address'], ], 'data' => [ 'label' => 'Adresse', 'value' => render($projectAddress), ], ]; } if ($projectFunction = $nodeWrapper->field_project_funktion->value()) { $functions = array_map(function ($e) { return drupal_strtolower($e->name); }, $projectFunction); $fullItems['project_functions'] = [ 'attributes' => [ 'class' => ['item-functions'], ], 'data' => [ 'label' => 'Funktion', 'value' => implode(', ', $functions), ], ]; } if (!empty($projectStartYear) || !empty($projectEndYear)) { $projectStartYearFormatted = date('Y', $projectStartYear); $projectEndYearFormatted = empty($projectEndYear) ? '' : date('Y', $projectEndYear); $fullItems['project_years'] = [ 'attributes' => [ 'class' => ['item-years'], ], 'data' => [ 'label' => 'Byggeår', 'value' => "{$projectStartYearFormatted}-{$projectEndYearFormatted}", ], ]; } if ($projectArchitect = $nodeWrapper->field_project_arkitekt->value()) { $fullItems['project_architect'] = [ 'attributes' => [ 'class' => ['item-architect'], ], 'data' => [ 'label' => 'Arkitekt', 'value' => render($projectArchitect), ], ]; } if ($projectBuilder = $nodeWrapper->field_project_bygherre->value()) { $fullItems['project_builder'] = [ 'attributes' => [ 'class' => ['item-builder'], ], 'data' => [ 'label' => 'Bygherre', 'value' => render($projectBuilder), ], ]; } $vars['map_id'] = sprintf('node-%s-project-information-map-%s', $vars['node']->nid, sha1(uniqid(mt_rand(0, PHP_INT_MAX), TRUE))); if (isset($vars['node']->location) && !empty($vars['node']->location)) { $location = $vars['node']->location; $vars['location_lat'] = $location['latitude']; $vars['location_lng'] = $location['longitude']; } } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_block_inline_project_bottom_section(&$vars) { // $vars['block_instagram'] = [ // '#theme' => 'mkbh_block_inline_project_bottom_section_block_instagram', // '#node' => $vars['node'], // ]; $vars['block_related_articles'] = [ '#theme' => 'mkbh_block_inline_project_bottom_section_block_related_articles', '#node' => $vars['node'], ]; $vars['block_project_photos'] = [ '#theme' => 'mkbh_block_inline_project_bottom_section_block_project_photos', '#node' => $vars['node'], ]; $vars['block_project_subscribe_block'] = drupal_get_form('mkbh_article_page_form_project_subscribe', $vars['user'], $vars['node']); } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_block_inline_sponsored_bottom_section(&$vars) { $vars['block_sponsored_highlight'] = [ '#theme' => 'mkbh_block_inline_sponsored_bottom_section_block_sponsored_highlight', '#node' => $vars['node'], ]; } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_block_inline_project_bottom_section_block_instagram(&$vars) { /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterInterface $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($vars['node']); $nodeWrapper = $adapter->getEntityMetadataWrapper(); $instagramTag =& $vars['instagram_tag']; if ($projectInstagramTag = $nodeWrapper->field_project_instagram_tags->value()) { $instagramTag = drupal_strtolower($projectInstagramTag->name); } $vars['instagram_link'] = format_string('https://www.flickr.com/search/?text=@tag', [ '@tag' => $instagramTag, ]); // try { // _mkbh_article_page_init_flickr_api_client(); // // $params = [ // 'method' => 'flickr.photos.search', // 'tags' => $instagramTag, // 'per_page' => 6, // ]; // // $flickrResults = json_decode(Flickr::makeCall($params), TRUE); // // if (empty($flickrResults['stat']) || $flickrResults['stat'] != 'ok') { // throw new RuntimeException('Failed to execute FlickrAPI request!'); // } elseif (!empty($flickrResults['photos']['photo'])) { // foreach ($flickrResults['photos']['photo'] as $flickrPhoto) { // $photoURL = format_string('https://farm@farm.staticflickr.com/@server/@id_@secret_c.jpg', [ // '@farm' => $flickrPhoto['farm'], // '@server' => $flickrPhoto['server'], // '@id' => $flickrPhoto['id'], // '@secret' => $flickrPhoto['secret'], // ]); // // $destination = 'public://flickr'; // $filePath = $destination . '/' . md5($photoURL) . '.' . pathinfo($photoURL, PATHINFO_EXTENSION); // // if (!is_file($filePath) || is_readable($filePath)) { // file_prepare_directory($destination, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS); // // $fileContents = file_get_contents($photoURL); // file_put_contents($filePath, $fileContents); // // $photoURL = image_style_url('640x640', $filePath); // } // // $photoPageURL = format_string('https://www.flickr.com/photos/@owner/@id', [ // '@owner' => $flickrPhoto['owner'], // '@id' => $flickrPhoto['id'], // ]); // // $build = [ // '#theme' => 'image', // '#path' => $photoURL, // '#width' => 150, // '#height' => 150, // '#alt' => $flickrPhoto['title'], // '#title' => $flickrPhoto['title'], // ]; // // $vars['instagram_photos'][] = (object)[ // 'link' => $photoPageURL, // 'build' => $build, // ]; // } // } // } catch (Exception $e) { // watchdog('mkbh_flickr', $e->getMessage(), [], WATCHDOG_ERROR); // } } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_block_inline_project_bottom_section_block_related_articles(&$vars) { /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterInterface $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($vars['node']); $nodeWrapper = $adapter->getEntityMetadataWrapper(); $relatedArticles =& $vars['related_articles']; $relatedArticles = []; $query = new EntityFieldQuery(); $query->entityCondition('entity_type', 'node') ->entityCondition('bundle', [ 'article', 'vision', 'you_write', 'projekt', 'review', 'photo_series', ]) ->propertyCondition('status', NODE_PUBLISHED) ->propertyOrderBy('created', 'DESC') ->propertyOrderBy('nid', 'DESC') ->fieldCondition('field_related_projects', 'target_id', $nodeWrapper->getIdentifier()); $result = $query->execute(); if (isset($result['node'])) { $nodeIds = array_keys($result['node']); $nodes = entity_load('node', $nodeIds); $articleCounter = 0; foreach ($nodes as $relatedArticleNode) { $articleCounter++; /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterInterface $relatedArticleAdapter */ $relatedArticleAdapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($relatedArticleNode); $relatedArticleSubType = taxonomy_term_load($relatedArticleAdapter->getArticleType()); $relatedArticles[$relatedArticleNode->nid]['#adapter'] = $relatedArticleAdapter; $relatedArticles[$relatedArticleNode->nid]['#node'] = $relatedArticleNode; $relatedArticles[$relatedArticleNode->nid]['#node_type'] = str_replace('_', '-', $relatedArticleAdapter->getEntityMetadataWrapper()->value()->type); $relatedArticles[$relatedArticleNode->nid]['#node_sub_type'] = $relatedArticleSubType ? str_replace([ '_', ' ', ], '-', drupal_strtolower($relatedArticleSubType->name)) : FALSE; $relatedArticles[$relatedArticleNode->nid]['#main_image'] = $relatedArticleAdapter->getRenderableMainImage('homepage_medium_image', TRUE); $relatedArticles[$relatedArticleNode->nid]['#title'] = $relatedArticleAdapter->getRenderableFullTitle(TRUE); $relatedArticles[$relatedArticleNode->nid]['#class'] = [ 'fade', $articleCounter <= 3 ? 'in visible' : '', ]; } } } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_block_inline_project_bottom_section_block_project_photos(&$vars) { /** @var \Drupal\mkbh_blocks\Adapter\NodeAdapterInterface $adapter */ $adapter = new Drupal\mkbh_blocks\Adapter\NodeAdapterProxy($vars['node']); $nodeWrapper = $adapter->getEntityMetadataWrapper(); $vars['has_photos'] = (boolean)!empty($nodeWrapper->field_project_inline_images->value()); } /** * Implements hook_process_hook * * @param $vars */ function mkbh_article_page_process_mkbh_block_inline_vision_rate_widget(&$vars) { $vars['rate_widget'] = rate_embed($vars['node'], 'vision_rate', RATE_FULL); }