Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.MD
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## [Unreleased]

- TMS-1173:
- Add hero-image field for blog-category taxonomy
- Add hero-layout for blog-article archive & blog-category taxonomy archive

## [1.9.6] - 2025-05-14

- TMS-1144: Change aria-attribute for menu-item
Expand Down
86 changes: 86 additions & 0 deletions lib/ACF/BlogCategoryGroup.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<?php
namespace TMS\Theme\Tredu\ACF;

use Geniem\ACF\Exception;
use Geniem\ACF\Group;
use Geniem\ACF\RuleGroup;
use Geniem\ACF\Field;
use TMS\Theme\Tredu\Logger;

/**
* Class BlogCategoryGroup
*
* @package TMS\Theme\Tredu\ACF
*/
class BlogCategoryGroup {

/**
* BlogCategoryGroup constructor.
*/
public function __construct() {
add_action(
'init',
\Closure::fromCallable( [ $this, 'register_fields' ] )
);
}

/**
* Register fields for blog-category taxonomy.
*/
protected function register_fields() : void {
try {
$field_group = ( new Group( 'Blogikategoria' ) )
->set_key( 'fg_blog_category_fields' );

$rule_group = ( new RuleGroup() )
->add_rule( 'taxonomy', '==', 'blog-category' );

$field_group
->add_rule_group( $rule_group )
->set_position( 'normal' );

$field_group->add_fields(
\apply_filters(
'tms/acf/group/' . $field_group->get_key() . '/fields',
[
$this->get_image_field( $field_group->get_key() ),
]
)
);

$field_group = \apply_filters(
'tms/acf/group/' . $field_group->get_key(),
$field_group
);

$field_group->register();
}
catch ( Exception $e ) {
( new Logger() )->error( $e->getMessage(), $e->getTraceAsString() );
}
}

/**
* Get image field.
*
* @param string $key Field group key.
*
* @return Field\Image
* @throws Exception In case of invalid option.
*/
protected function get_image_field( string $key ) : Field\Image {
$strings = [
'image' => [
'title' => \_x( 'Kuva', 'theme ACF', 'tms-theme-tredu' ),
'instructions' => 'Kuvaa käytetään kategorian listaus-sivulla hero-kuvana',
],
];

return ( new Field\Image( $strings['image']['title'] ) )
->set_key( "{$key}_image" )
->set_name( 'image' )
->set_instructions( $strings['image']['instructions'] );
}
}

( new BlogCategoryGroup() );
37 changes: 31 additions & 6 deletions models/archive.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class Archive extends Home {
/**
* Hooks
*/
public static function hooks() : void {
public static function hooks(): void {
add_action(
'pre_get_posts',
[ __CLASS__, 'modify_query' ]
Expand All @@ -27,7 +27,7 @@ public static function hooks() : void {
*
* @return int|null
*/
protected static function get_filter_category() : ?int {
protected static function get_filter_category(): ?int {
return is_tax() || is_category()
? get_queried_object_id()
: null;
Expand All @@ -40,7 +40,7 @@ protected static function get_filter_category() : ?int {
*
* @return void
*/
public static function modify_query( WP_Query $wp_query ) : void {
public static function modify_query( WP_Query $wp_query ): void {
if ( is_admin() || ( ! $wp_query->is_main_query() || ! $wp_query->is_archive() ) ) {
return;
}
Expand All @@ -57,8 +57,33 @@ public static function modify_query( WP_Query $wp_query ) : void {
*
* @return string|null
*/
public function page_title() : ?string {
return single_term_title( '', false );
public function page_title(): ?string {
return \single_term_title( '', false );
}

/**
* Get the page description.
*
* @return string|null
*/
public function page_description(): ?string {
return \term_description( \get_queried_object() );
}

/**
* Get the blog-category image.
*
* @return int|null
*/
public function blog_category_image(): ?int {
$queried_object = \get_queried_object();
$image_field = \get_field( 'image', $queried_object );

if ( ! $image_field ) {
return null;
}

return $image_field['ID'];
}

/**
Expand All @@ -75,7 +100,7 @@ public function highlight() : ?object {
*
* @return array
*/
protected function get_filter_categories() : array {
protected function get_filter_categories(): array {
$queried_object = get_queried_object();
$taxonomy = '';

Expand Down
60 changes: 40 additions & 20 deletions partials/archive-blog-article.dust
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,56 @@
{<content}
<main class="main-content pb-8" id="main-content">
{#ArchiveBlogArticle}
{?page_logo}
<section class="page__hero section has-text-centered is-relative pt-0 pb-0 has-background-cover" {@inlinebg id=page_logo size="fullhd" /}>
<div class="overlay overlay--dark-50"></div>
<div class="is-absolute has-top-50 has-right-0 has-left-0 has-transform-y--50 is-clipped">
<div class="container">
<div class="columns">
<div class="column is-8 is-offset-2">
{?page_title}
<h1 class="mt-0 mb-8 has-text-white">
{page_title|html}
</h1>
{/page_title}

{?page_subtitle}
<p class="mb-0 has-text-white">
{page_subtitle|html}
</p>
{/page_subtitle}
</div>
</div>
</div>
</div>
</section>
{/page_logo}
<section class="section">
<div class="container">
<div class="columns">
{?page_logo}
<div class="column is-2 has-text-centered-mobile">
{@image id=page_logo size="thumbnail" /}
</div>
{/page_logo}

<div class="column is-8 has-text-centered {^page_logo}is-offset-2{/page_logo}">
{?page_title}
<h1 class="mt-0 mb-8">
{page_title|s}
</h1>
{/page_title}
<div class="column is-8 is-offset-2 has-text-centered">
{^page_logo}
{?page_title}
<h1 class="mt-0 mb-8">
{page_title|html}
</h1>
{/page_title}

{?page_subtitle}
<p class="mb-6">
{page_subtitle|s}
</p>
{/page_subtitle}
{?page_subtitle}
<p class="mb-6">
{page_subtitle|html}
</p>
{/page_subtitle}
{/page_logo}

{?page_description}
<div class="container">
<div class="columns">
<div class="column is-10 is-offset-1">
<div class="column">
{>"ui/button-toggle" class="mb-5" text=Strings.s.blog_article.toggle_details target="js-archive-description-toggle-target" /}

<p id="js-archive-description-toggle-target"
class="is-hidden has-text-left">{page_description|s}</p>
class="is-hidden has-text-left">{page_description|html}</p>
</div>
</div>
</div>
Expand All @@ -52,7 +72,7 @@
{:else}
<div class="column">
<div class="pt-6 pb-6 h4 has-text-centered">
{Strings.s.home.no_results|s}
{Strings.s.home.no_results|html}
</div>
</div>
{/articles}
Expand Down
45 changes: 38 additions & 7 deletions partials/archive-inner.dust
Original file line number Diff line number Diff line change
@@ -1,12 +1,43 @@
{?blog_category_image}
<section class="page__hero section has-text-centered is-relative pt-0 pb-0 has-background-cover" {@inlinebg id=blog_category_image size="fullhd" /}>
<div class="overlay overlay--dark-50"></div>
<div class="is-absolute has-top-50 has-right-0 has-left-0 has-transform-y--50 is-clipped">
<div class="container">
<div class="columns">
<div class="column is-8 is-offset-2">
{?page_title}
<h1 class="mt-0 mb-8 has-text-white">
{page_title|html}
</h1>
{/page_title}

{?page_description}
<div class="mb-0 has-text-white">
{page_description|kses}
</div>
{/page_description}
</div>
</div>
</div>
</div>
</section>
{/blog_category_image}

<section class="section">
<div class="container">
<div class="columns">
<div class="column has-text-centered">
<h1 class="mt-0 mb-8">
{page_title|s}
</h1>
{^blog_category_image}
<div class="columns">
<div class="column has-text-centered">
<h1 class="mt-0 mb-8">
{page_title|html}
</h1>

{?page_description}
{page_description|kses}
{/page_description}
</div>
</div>
</div>
{/blog_category_image}

{>"views/home/home-highlight" category_link_classes="is-primary-invert is-borderless" /}

Expand All @@ -20,7 +51,7 @@
{:else}
<div class="column">
<div class="pt-6 pb-6 h4 has-text-centered">
{Strings.s.home.no_results|s}
{Strings.s.home.no_results|html}
</div>
</div>
{/articles}
Expand Down