| New file |
| | |
| | | <?php |
| | | |
| | | use JVBase\managers\Cache; |
| | | use JVBase\meta\Meta; |
| | | use JVBase\meta\Render; |
| | | use JVBase\registrar\Registrar; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; // Exit if accessed directly |
| | | } |
| | | /** |
| | | * Summary Block Render |
| | | * |
| | | * @package Edmonton_Ink |
| | | */ |
| | | |
| | | function jvbRenderSummaryBlock(array $attributes):string |
| | | { |
| | | |
| | | // Buffer output |
| | | if (is_tax()) { |
| | | switch (get_queried_object()->taxonomy) { |
| | | case BASE.'shop': |
| | | return jvbRenderShopSummary(); |
| | | default: |
| | | return jvbRenderTermSummary(); |
| | | } |
| | | } elseif (is_singular()) { |
| | | return jvbRenderArtistSummary(); |
| | | } |
| | | return ''; |
| | | } |
| | | |
| | | function jvbRenderArtistSummary():string |
| | | { |
| | | $current = get_queried_object(); |
| | | $cache = Cache::for('artistSummary', WEEK_IN_SECONDS); |
| | | $key = $current->ID; |
| | | $cached = $cache->get($key); |
| | | if ($cached !== false) { |
| | | return $cached; |
| | | } |
| | | |
| | | ob_start(); |
| | | $meta = Meta::forPost($current->ID); |
| | | $artist = jvbContentFromUser((int)$current->post_author); |
| | | |
| | | $registrar = Registrar::getInstance($current->post_type)); |
| | | $sections = []; |
| | | if ($registrar) { |
| | | $sections = $registrar->getSections(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | // $handler = JVB()->getContent(str_replace(BASE,'', $current->post_type)); |
| | | ?> |
| | | <nav id="artist" class="on-this-page index"> |
| | | <label>Jump to: |
| | | <button type="button" aria-label="Show Index" title="Show Index" class="toggle" aria-expanded="false"> |
| | | <?= jvbIcon('plus-square')?> |
| | | </button> |
| | | </label> |
| | | <ul> |
| | | <li><a href="#top" title="Back to Top"><?=jvbIcon('caret-circle-up')?></a></li> |
| | | <li><a href="#about">About</a></li> |
| | | <li><a href="#styles">Styles</a></li> |
| | | <li><a href="#contact">Contact</a></li> |
| | | <li><a href="#work">Work</a></li> |
| | | </ul> |
| | | </nav> |
| | | <header id="top"> |
| | | <h1><small><?=(!empty($artist['city'])) ? $artist['city']['name'] :'Edmonton'?>'s Best <?= (!empty($artist['type'])) ? |
| | | $artist['type']['name']:'Tattoo Artists'?>: |
| | | </small><?=$artist['display_name']?></h1> |
| | | <div> |
| | | <?php if (!empty($artist['shop'])) : ?> |
| | | <ul class="term-list shop"> |
| | | <li> |
| | | <a href="<?=$artist['shop']['url']?>" title="Learn more about <?=$artist['shop']['name']?>"> |
| | | <?= strtolower($artist['shop']['name'])?> |
| | | </a> |
| | | </li> |
| | | </ul> |
| | | <?php endif; ?> |
| | | <?php if (!empty($artist['city'])): ?> |
| | | <ul class="term-list city"> |
| | | <li> |
| | | <a href="<?=$artist['city']['url']?>" title="See who else is rocking out of <?=$artist['city']['name']?>"> |
| | | <?= strtolower($artist['city']['name'])?> |
| | | </a> |
| | | </li> |
| | | </ul> |
| | | <?php endif; ?> |
| | | <?php $styles = $meta->get('top_styles'); |
| | | if (!empty($styles)) { |
| | | ?> |
| | | <ul class="term-list style"> |
| | | <?php |
| | | foreach ($styles as $style) { |
| | | $term = get_term((int)$style, BASE.'style'); |
| | | if ($term && !is_wp_error($term)) { |
| | | $link = get_term_link((int)$style, BASE.'style'); |
| | | ?> |
| | | <li> |
| | | <a href="<?=$link?>" title="Learn more about <?=html_entity_decode($term->name)?>"> |
| | | <?=strtolower(html_entity_decode($term->name))?> |
| | | </a> |
| | | </li> |
| | | <?php |
| | | } |
| | | } |
| | | ?> |
| | | </ul> |
| | | <?php |
| | | } |
| | | ?> |
| | | </div> |
| | | </header> |
| | | <section> |
| | | <details class="bio-info"> |
| | | <summary class="row x-btw"> |
| | | <h2>About <?= ($artist['name'] !== '') ? $artist['name'] : strtok($artist['display_name'], ' ')?></h2> |
| | | </summary> |
| | | <div class="columns stack-small"> |
| | | <div class="column"> |
| | | <?= Render::renderFrom($meta, 'image_portrait'); ?> |
| | | </div> |
| | | <div class="column"> |
| | | <?= Render::renderFrom($meta, 'short_bio'); ?> |
| | | </div> |
| | | </div> |
| | | <div id="styles"> |
| | | <h3>Works In</h3> |
| | | <?= jvbGetTheTerms('style', $current->ID) ?> |
| | | </div> |
| | | <div class="contact"> |
| | | <h3>Contact:</h3> |
| | | <?php |
| | | echo jvbRenderContactInfo($current->ID, $meta); |
| | | echo jvbRenderLinks($current->ID, $meta); |
| | | ?> |
| | | </div> |
| | | |
| | | <div id="about"> |
| | | <?= Render::renderFrom($meta, 'bio')?> |
| | | </div> |
| | | </details> |
| | | </section> |
| | | <section id="contact" class=""> |
| | | <h2>Contact <?=$artist['name']?></h2> |
| | | <?php |
| | | echo jvbRenderContactInfo($current->ID, 'post'); |
| | | echo jvbRenderLinks($current->ID, 'post'); |
| | | ?> |
| | | </section> |
| | | <?php |
| | | $finished = ob_get_clean(); |
| | | $cache->set($key, $finished); |
| | | return $finished; |
| | | } |
| | | |
| | | function jvbRenderShopSummary() |
| | | { |
| | | $current = get_queried_object(); |
| | | |
| | | $cache = Cache::for('shop_bio', WEEK_IN_SECONDS)->connect('taxonomy'); |
| | | $key = $current->term_id; |
| | | $cached = $cache->get($key); |
| | | if ($cached !== false) { |
| | | return $cached; |
| | | } |
| | | |
| | | ob_start(); |
| | | |
| | | $meta = Meta::forTerm($current->term_id); |
| | | $fields = $meta->getAll(['average_rating', 'established', 'bio','location','hours','specialties','awards','reviews']); |
| | | ?> |
| | | <nav id="shop" class="on-this-page index"> |
| | | <label>Jump to: |
| | | <button type="button" aria-label="Show Index" title="Show Index" class="toggle" aria-expanded="false"> |
| | | <?= jvbIcon('plus-square')?> |
| | | </button> |
| | | </label> |
| | | <ul> |
| | | <li><a href="#top" title="Back to Top"><?=jvbIcon('caret-circle-up')?></a></li> <?php |
| | | if ($fields['rating'] !== 'none') { |
| | | ?> |
| | | <li><a href="#rating">Rating</a></li> |
| | | <?php |
| | | } elseif ($fields['opened'] !== '') { |
| | | ?> |
| | | <li><a href="#opened">Opened</a></li> |
| | | <?php |
| | | } elseif ($fields['location'] !== '') { |
| | | ?> |
| | | <li><a href="#location">Location</a></li> |
| | | <?php |
| | | } elseif ($fields['about'] !== '') { |
| | | ?> |
| | | <li><a href="#about">About</a></li> |
| | | <?php |
| | | } elseif ($fields['hours'] !== '') { |
| | | ?> |
| | | <li><a href="#hours">Hours</a></li> |
| | | <?php |
| | | } elseif ($fields['specialties'] !== '') { |
| | | ?> |
| | | <li><a href="#specialties">Specialties</a></li> |
| | | <?php |
| | | } elseif ($fields['awards'] !== '') { |
| | | ?> |
| | | <li><a href="#awards">Awards</a></li> |
| | | <?php |
| | | } elseif ($fields['reviews'] !== '') { |
| | | ?> |
| | | <li><a href="#reviews">Reviews</a></li> |
| | | <?php |
| | | } |
| | | ?> |
| | | <li><a href="#contact">Contact</a></li> |
| | | <li><a href="#artists">Artists</a></li> |
| | | </ul> |
| | | </nav> |
| | | <header id="top"> |
| | | <div class="columns stack-small"> |
| | | <div class="column"> |
| | | <?=jvbFormatImage($meta->get('image'))?> |
| | | </div> |
| | | <div class="column"> |
| | | <h1> |
| | | <small><?= (get_term((int)$meta->get('city'), BASE.'city')) ? |
| | | get_term((int)$meta->get('city'), BASE.'city')->name : |
| | | 'Edmonton'?>'s Best Tattoo Shops</small> |
| | | <?=$current->name?> |
| | | </h1> |
| | | <?= jvbFormatRating($current->term_id, 'term') ?> |
| | | <?= Render::renderFrom($meta, 'slogan'); ?> |
| | | </div> |
| | | </div> |
| | | </header> |
| | | <section> |
| | | <details class="bio-info"> |
| | | <summary class="row x-btw"> |
| | | <h2>Learn More About <?=$current->name?></h2> |
| | | </summary> |
| | | <div class="map"> |
| | | <?= Render::renderFrom($meta, 'location'); ?> |
| | | </div> |
| | | <div class="short-bio"> |
| | | <?= Render::renderFrom($meta, 'short_bio'); ?> |
| | | </div> |
| | | |
| | | <div class="contact"> |
| | | <h3>Contact:</h3> |
| | | <?php |
| | | echo jvbRenderContactInfo($current->term_id, 'term'); |
| | | echo jvbRenderLinks($current->term_id, 'term'); |
| | | ?> |
| | | </div> |
| | | |
| | | <div id="about"> |
| | | <?= Render::renderFrom($meta, 'bio')?> |
| | | </div> |
| | | </details> |
| | | </section> |
| | | <section id="contact" class=""> |
| | | <h2>Contact </h2> |
| | | <?php |
| | | echo jvbRenderContactInfo($current->term_id, 'term'); |
| | | echo jvbRenderLinks($current->term_id, 'term'); |
| | | ?> |
| | | </section> |
| | | <?= jvbRenderHours($current->term_id, 'term')?> |
| | | |
| | | |
| | | <?php |
| | | $finished = ob_get_clean(); |
| | | $cache->set($key, $finished); |
| | | return $finished; |
| | | } |
| | | |
| | | |
| | | function jvbRenderTermSummary() |
| | | { |
| | | $current = get_queried_object(); |
| | | $cache = Cache::for('term_summary', WEEK_IN_SECONDS)->connect('taxonomy'); |
| | | $key = $current->ID; |
| | | $cached = $cache->get($key); |
| | | if ($cached !== false) { |
| | | return $cached; |
| | | } |
| | | |
| | | ob_start(); |
| | | $tax = jvbNoBase($current->taxonomy); |
| | | switch ($tax) { |
| | | case 'style': |
| | | $title = 'Tattoo Artists'; |
| | | break; |
| | | case 'theme': |
| | | $title = 'Tattoos'; |
| | | break; |
| | | default: |
| | | $title = ''; |
| | | } |
| | | |
| | | $meta = Meta::forTerm($current->ID); |
| | | $fields = $meta->getAll(); |
| | | |
| | | ?> |
| | | <header id="top"> |
| | | <h1><?= get_the_archive_title() ?></h1> |
| | | </header> |
| | | |
| | | <?php |
| | | $finished = ob_get_clean(); |
| | | $cache->set($key, $finished); |
| | | return $finished; |
| | | } |