Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Check if the current theme has a product-archive block template in the absence of a product taxonomy block template. #5380

Merged

Conversation

tjcafferkey
Copy link
Contributor

@tjcafferkey tjcafferkey commented Dec 14, 2021

This change means that if a theme has a product-archive.html block template, but not more taxonomy specific ones we will use the archive-product.html template for taxonomy frontend instead of the Woo Blocks taxonomy-product_cat/taxonomy-product_tag files.

Fixes #5230

Testing

Manual Testing

How to test the changes in this Pull Request:

To make this easier to test, add the following block markup to the following templates so you know which one is getting rendered:

<!-- wp:paragraph -->
<p>Woo Blocks: [template-filename].html</p>
<!-- /wp:paragraph -->
  • woo-blocks/archive-product.html
  • woo-blocks/taxonomy-product_tag.html
  • woo-blocks/taxonomy-product_cat.html
  1. Install Gutenberg plugin and Blockbase theme to activate Site Editor and FSE.
  2. Go to a product category page and check that woo-blocks/taxonomy-product_cat.html is the template being used.
  3. Duplicate woo-blocks/archive-product.html into blockbase/block-templates/ and change the markup you added above to say "Blockbase" instead of "Woo Blocks" so we can differentiate.
  4. Reload the product category page, product tag page, and main shop page/product archive page and check that the archive-product.html from Blockbase is being loaded.
  5. Go into Site Editor > All Templates and check that "Product Archive Page", "Product Category Page" and "Product Tag Page" are all in the list and it states they're being loaded from the Blockbase theme
  6. Customise the Product Category Page template and save your changes
  7. Reload the product category page on the frontend and check the customised version of this template is being rendered.

User Facing Testing

These are steps for user testing (where "user" is someone interacting with this change that is not editing any code).

  • Same as above, or
  • See steps below.

Changelog

Use the themes product archive block template for product category & product tag pages if the theme does not have more specific templates for those.

@rubikuserbot rubikuserbot requested review from a team and Aljullu and removed request for a team December 14, 2021 14:30
@tjcafferkey tjcafferkey changed the title product-archive block template is used for product taxonomies if taxonomy block template doesnt exist. Check if the current theme has a product-archive block template in the absence of a product taxonomy block template. Dec 14, 2021
@github-actions
Copy link
Contributor

github-actions bot commented Dec 14, 2021

Size Change: -189 B (0%)

Total Size: 819 kB

Filename Size Change
build/cart-blocks/order-summary-frontend.js 8.95 kB -27 B (0%)
build/cart-frontend.js 45.5 kB -8 B (0%)
build/cart.js 44.3 kB -64 B (0%)
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.22 kB -18 B (0%)
build/checkout-blocks/contact-information-frontend.js 2.94 kB -16 B (-1%)
build/checkout-blocks/order-summary-frontend.js 11.4 kB -23 B (0%)
build/checkout-frontend.js 47.6 kB +2 B (0%)
build/checkout.js 47.1 kB -35 B (0%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 6.22 kB
build/active-filters.js 7.05 kB
build/all-products-frontend.js 18.6 kB
build/all-products.js 34.4 kB
build/all-reviews.js 8.35 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---a7e2bb9b.js 2.76 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button.js 1.48 kB
build/atomic-block-components/add-to-cart-frontend.js 6.87 kB
build/atomic-block-components/add-to-cart.js 6.42 kB
build/atomic-block-components/button-frontend.js 1.48 kB
build/atomic-block-components/button.js 851 B
build/atomic-block-components/category-list-frontend.js 457 B
build/atomic-block-components/category-list.js 458 B
build/atomic-block-components/image-frontend.js 1.37 kB
build/atomic-block-components/image.js 1.05 kB
build/atomic-block-components/price-frontend.js 1.74 kB
build/atomic-block-components/price.js 1.7 kB
build/atomic-block-components/rating-frontend.js 552 B
build/atomic-block-components/rating.js 554 B
build/atomic-block-components/sale-badge-frontend.js 625 B
build/atomic-block-components/sale-badge.js 622 B
build/atomic-block-components/sku-frontend.js 386 B
build/atomic-block-components/sku.js 385 B
build/atomic-block-components/stock-indicator-frontend.js 584 B
build/atomic-block-components/stock-indicator.js 585 B
build/atomic-block-components/summary-frontend.js 872 B
build/atomic-block-components/summary.js 871 B
build/atomic-block-components/tag-list-frontend.js 458 B
build/atomic-block-components/tag-list.js 458 B
build/atomic-block-components/title-frontend.js 1.11 kB
build/atomic-block-components/title.js 1.1 kB
build/attribute-filter-frontend.js 16.3 kB
build/attribute-filter.js 12.6 kB
build/blocks-checkout.js 17.6 kB
build/cart-blocks/accepted-payment-methods-frontend.js 1.15 kB
build/cart-blocks/checkout-button-frontend.js 1.14 kB
build/cart-blocks/empty-cart-frontend.js 345 B
build/cart-blocks/express-payment-frontend.js 4.86 kB
build/cart-blocks/filled-cart-frontend.js 766 B
build/cart-blocks/items-frontend.js 298 B
build/cart-blocks/line-items-frontend.js 5.13 kB
build/cart-blocks/totals-frontend.js 320 B
build/checkout-blocks/actions-frontend.js 1.44 kB
build/checkout-blocks/billing-address-frontend.js 884 B
build/checkout-blocks/express-payment-frontend.js 5.15 kB
build/checkout-blocks/fields-frontend.js 343 B
build/checkout-blocks/order-note-frontend.js 1.13 kB
build/checkout-blocks/payment-frontend.js 7.41 kB
build/checkout-blocks/shipping-address-frontend.js 971 B
build/checkout-blocks/shipping-methods-frontend.js 4.81 kB
build/checkout-blocks/terms-frontend.js 1.21 kB
build/checkout-blocks/totals-frontend.js 324 B
build/featured-category.js 8.55 kB
build/featured-product.js 9.9 kB
build/handpicked-products.js 7.32 kB
build/legacy-template.js 2.08 kB
build/mini-cart-component-frontend.js 14.2 kB
build/mini-cart-contents.js 3.59 kB
build/mini-cart-frontend.js 1.76 kB
build/mini-cart.js 6.46 kB
build/price-filter-frontend.js 12.4 kB
build/price-filter.js 8.6 kB
build/price-format.js 1.18 kB
build/product-best-sellers.js 7.51 kB
build/product-categories.js 3.47 kB
build/product-category.js 8.36 kB
build/product-new.js 7.66 kB
build/product-on-sale.js 8.05 kB
build/product-search.js 2.47 kB
build/product-tag.js 7.76 kB
build/product-top-rated.js 7.63 kB
build/products-by-attribute.js 8.48 kB
build/reviews-by-category.js 11.9 kB
build/reviews-by-product.js 12.9 kB
build/reviews-frontend.js 7.25 kB
build/single-product-frontend.js 22.1 kB
build/single-product.js 10.4 kB
build/stock-filter-frontend.js 6.81 kB
build/stock-filter.js 6.82 kB
build/vendors--atomic-block-components/add-to-cart--cart-blocks/order-summary--checkout-blocks/billing-ad--c5eb4dcd-frontend.js 19 kB
build/vendors--atomic-block-components/add-to-cart-frontend.js 6.82 kB
build/vendors--atomic-block-components/price--cart-blocks/line-items--cart-blocks/order-summary--checkout--8a3571de-frontend.js 5.71 kB
build/vendors--cart-blocks/line-items--checkout-blocks/order-summary-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---eb4d2cec-frontend.js 4.75 kB
build/wc-blocks-data.js 8.84 kB
build/wc-blocks-editor-style-rtl.css 4.47 kB
build/wc-blocks-editor-style.css 4.47 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 949 B
build/wc-blocks-registry.js 2.7 kB
build/wc-blocks-shared-context.js 1.51 kB
build/wc-blocks-shared-hocs.js 1.14 kB
build/wc-blocks-style-rtl.css 21.7 kB
build/wc-blocks-style.css 21.6 kB
build/wc-blocks-vendors-style-rtl.css 1.28 kB
build/wc-blocks-vendors-style.css 1.28 kB
build/wc-blocks-vendors.js 65.5 kB
build/wc-blocks.js 2.96 kB
build/wc-payment-method-bacs.js 820 B
build/wc-payment-method-cheque.js 816 B
build/wc-payment-method-cod.js 912 B
build/wc-payment-method-paypal.js 838 B
build/wc-payment-method-stripe.js 11.1 kB
build/wc-settings.js 2.61 kB

compressed-size-action

@tjcafferkey tjcafferkey self-assigned this Dec 14, 2021
@tjcafferkey tjcafferkey reopened this Dec 15, 2021
@tjcafferkey tjcafferkey added focus: FSE Work related to prepare WooCommerce for FSE. type: bug The issue/PR concerns a confirmed bug. focus: template Related to API powering block template functionality in the Site Editor labels Dec 16, 2021
@tjcafferkey tjcafferkey marked this pull request as ready for review December 16, 2021 10:25
Copy link
Contributor

@Aljullu Aljullu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall this is testing well, thanks for investigating this issue @tjcafferkey!

One thing I noticed is that if I delete the Product Category and Product Tag templates from the theme, they still appear in the Template list as being owned by the theme:

imatge

If I try to edit them, the editor opens the Product Archive template. Can you reproduce it too? Maybe we need to limit the logic from this PR to only happen in the frontend?

src/Utils/BlockTemplateUtils.php Outdated Show resolved Hide resolved
src/Utils/BlockTemplateUtils.php Show resolved Hide resolved
@tjcafferkey
Copy link
Contributor Author

tjcafferkey commented Dec 17, 2021

One thing I noticed is that if I delete the Product Category and Product Tag templates from the theme, they still appear in the Template list as being owned by the theme:

If I try to edit them, the editor opens the Product Archive template. Can you reproduce it too? Maybe we need to limit the logic from this PR to only happen in the frontend?

I did this intentionally. If we limit this PR to on the frontend then:

  • It will load the Woo Blocks templates into the Site Editor templates list, but will be loading the Themes Product Archive template on the frontend. This could be very confusing
  • Presumably if the user wants to edit their Product Category/Tag templates they will want it to be a variation of the themes Product Archive template not the one from Woo Blocks

I hope this makes sense.

Copy link
Contributor

@Aljullu Aljullu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hope this makes sense.

Ah, right, I tested it again and it makes a lot of sense. Following my previous example, if I edit the Product Tag template, in the editor I see the Product Archive template, but any edit I do will only impact the Product Tag template. I missed that in my first review!

Btw, I left a couple of extra comments that I noticed during this second round of testing. 👇

$template->id = 'woocommerce//' . $template_file->slug;
$template->theme = 'woocommerce/woocommerce';
$template->id = $template_is_from_theme ? strtolower( $theme_name ) . '//' . $template_file->slug : 'woocommerce//' . $template_file->slug;
$template->theme = $template_is_from_theme ? $theme_name : 'woocommerce/woocommerce';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think theme should be the theme slug, not the name. Ie, when using Twenty Twenty-Two it makes a Rest API request to an endpoint with a space and capital letters:

imatge

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch Ive used TextDomain instead of Name instead and this fixes this.

src/Utils/BlockTemplateUtils.php Show resolved Hide resolved
@gigitux gigitux self-requested a review December 20, 2021 09:18
Copy link
Contributor

@gigitux gigitux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🚢

@github-actions github-actions bot added this to the 6.6.0 milestone Dec 20, 2021
@tjcafferkey tjcafferkey merged commit bb975c6 into trunk Dec 20, 2021
@tjcafferkey tjcafferkey deleted the fix/product-taxonomy-uses-product-archive-replacement branch December 20, 2021 12:53
@tjcafferkey tjcafferkey modified the milestones: 6.6.0, 6.5.1 Dec 22, 2021
tjcafferkey added a commit that referenced this pull request Dec 22, 2021
…e absence of a product taxonomy block template. (#5380)

* Add archive-product template into block template hieachy

* Add archive-product condition to product tag block template render method

* Move taxonomy hierarchy filter to WC core

* Undo template amends

* Duplicate the themes archive-product template if it has one for taxonomy block templates

* Review feedback

* Use TextDomain instead of Name

* use correct if/else syntax

* Remove unncessary boolean syntax
tjcafferkey added a commit that referenced this pull request Dec 22, 2021
* Empty commit for release pull request

* Fix saving WooCommerce templates in WP 5.9 beta 3 (#5408)

* fix not found template for the template editor (#5425)

* Check for woocommerce as the theme before rendering with a more user friendly plugin name (#5420)

* Make it so WooCommerce template names are not editable (#5385)

* Make it so WooCommerce template names is not editable

* Remove source='plugin' from templates

* Load required scripts in LegacyTemplate.php render method (#5346)

* Fix reverting WC templates (#5342)

* Update block theme conditionals in BlockTemplateController (#5335)

* Check if the current theme has a product-archive block template in the absence of a product taxonomy block template. (#5380)

* Add archive-product template into block template hieachy

* Add archive-product condition to product tag block template render method

* Move taxonomy hierarchy filter to WC core

* Undo template amends

* Duplicate the themes archive-product template if it has one for taxonomy block templates

* Review feedback

* Use TextDomain instead of Name

* use correct if/else syntax

* Remove unncessary boolean syntax

* Update readme.txt for 6.5.1 changelog

* Testing notes for 6.5.1

* Bumping version strings to new version.

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
Co-authored-by: Luigi Teschio <gigitux@gmail.com>
Co-authored-by: Tom Cafferkey <tjcafferkey@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
focus: FSE Work related to prepare WooCommerce for FSE. focus: template Related to API powering block template functionality in the Site Editor type: bug The issue/PR concerns a confirmed bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Legacy template block: themes can't override the archive-product.html only
4 participants