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

Add Product Search Results Template #6219

Merged
merged 11 commits into from
Apr 14, 2022

Conversation

gigitux
Copy link
Contributor

@gigitux gigitux commented Apr 8, 2022

This PR adds a new template called Product Search Results. This template will be rendered only on the block themes when the user lands on ?s={keyword}&post_type=product.

Fixes #6218

Screenshots

image
Product Search Results in the template list

image
Editor view when the user edits the Product Search Result template

image
Frontend side when the user lands on ?s=shirt&post_type=product url. The template Product Search Results is rendered

Testing

Automated Tests

  • Changes in this PR are covered by Automated Tests.
    • Unit tests
    • E2E tests

Manual Testing

How to test the changes in this Pull Request:

Check out this branch

  1. Be sure that you are using a block theme (as Twenty Twenty-Two).
  2. Append this ?s={product_to_search}&post_type=product to your website URL. For example http://dev.local/?s=shirt&post_type=product. You should see a grid with the products that match the keyword (or a not found message if any product matches the keyword). Keep this page open.
  3. On the Dashboard, click on Appearance->Editor.
  4. On the Site Editor, click on the WordPress Logo on the top left and after that click on Templates.
  5. Be sure that the Search Result Template is visible. If yes, click on it.
  6. Add new blocks and save the template.
  7. Refresh the page that you opened in step 2. Be sure that the customizations are reflected on the frontend side.
  8. Back on the templates list and restore the template. Be sure that the customizations are gone.
  9. Enable a classic theme (as Storefront). Check that if you visit ?s={product_to_search}&post_type=product everything works well. IMPORTANT: Remember that for the classic themes the templates are not loaded. So the implementation of this page depends on the theme.

Extendibility for the themes

With these steps, we will check that the themes can extend the new template:

  1. Be sure that you are using a block theme (as Twenty Twenty-Two).
  2. Open the folder related to the active block theme in your website folder. For Twenty Twenty-Two the path is /themes/twentytwentytwo/.
  3. Open the folder templates and create a file search-results-product.html with this content.
  4. Append this ?s={product_to_search}&post_type=product to your website URL. For example http://dev.local/?s=shirt&post_type=product. You should see a grid with the products that match the keyword (or a not found message if any product matches the keyword) and a paragraph with the text Column One, Paragraph One.
  5. On the Dashboard, click on Appearance->Editor.
  6. On the Site Editor, click on the WordPress Logo on the top left and after that click on Templates.
  7. Be sure that the Product Search Results template is visible and added by the theme.
  8. Edit the Product Search Results template.
  9. Be sure that the customizations are reflected on the frontend side.
  10. Enable a classic theme (as Storefront). Check that if you visit ?s={product_to_search}&post_type=product everything works well. IMPORTANT: Remember that for the classic themes the templates are not loaded. So the implementation of this page depends on the theme.

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.
  1. Be sure that you are using a block theme (as Twenty Twenty-Two).
  2. Append this ?s={product_to_search}&post_type=product to your website URL. For example http://dev.local/?s=shirt&post_type=product. You should see a grid with the products that match the keyword (or a not found message if any product matches the keyword). Keep this page open.
  3. On the Dashboard, click on Appearance->Editor
  4. On the Site Editor, click on the WordPress Logo on the top left and after that click on Templates.
  5. Be sure that the Search Result Template is visible. If yes, click on it.
  6. Add new blocks and save the template.
  7. Refresh the page that you opened in step 2.
  8. Back on the templates list and restore the template.
  9. Enable a classic theme (as Storefront). Check that if you visit ?s={product_to_search}&post_type=product everything works well. IMPORTANT: Remember that for the classic themes the templates are not loaded. So the implementation of this page depends on the theme.

Changelog

Add Product Search Results template.

@gigitux gigitux self-assigned this Apr 8, 2022
…products-block into add/6218-search-result-product-template
@rubikuserbot rubikuserbot requested review from a team and Aljullu and removed request for a team April 8, 2022 14:11
@github-actions
Copy link
Contributor

github-actions bot commented Apr 8, 2022

Size Change: 0 B

Total Size: 862 kB

ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 5.92 kB
build/active-filters.js 6.59 kB
build/all-products-frontend.js 18.1 kB
build/all-products.js 33.5 kB
build/all-reviews.js 7.78 kB
build/attribute-filter-frontend.js 16.9 kB
build/attribute-filter.js 12.8 kB
build/blocks-checkout.js 17.4 kB
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.16 kB
build/cart-blocks/cart-express-payment-frontend.js 5.23 kB
build/cart-blocks/cart-items-frontend.js 298 B
build/cart-blocks/cart-line-items--mini-cart-contents-block/products-table-frontend.js 5.27 kB
build/cart-blocks/cart-line-items-frontend.js 430 B
build/cart-blocks/cart-order-summary-frontend.js 1.1 kB
build/cart-blocks/cart-totals-frontend.js 321 B
build/cart-blocks/empty-cart-frontend.js 345 B
build/cart-blocks/filled-cart-frontend.js 772 B
build/cart-blocks/order-summary-coupon-form-frontend.js 2.81 kB
build/cart-blocks/order-summary-discount-frontend.js 2.31 kB
build/cart-blocks/order-summary-fee-frontend.js 273 B
build/cart-blocks/order-summary-heading-frontend.js 454 B
build/cart-blocks/order-summary-shipping--checkout-blocks/order-summary-shipping-frontend.js 6.34 kB
build/cart-blocks/order-summary-shipping-frontend.js 428 B
build/cart-blocks/order-summary-subtotal-frontend.js 273 B
build/cart-blocks/order-summary-taxes-frontend.js 433 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.15 kB
build/cart-frontend.js 45.5 kB
build/cart.js 44.3 kB
build/checkout-blocks/actions-frontend.js 1.41 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.12 kB
build/checkout-blocks/billing-address-frontend.js 893 B
build/checkout-blocks/contact-information-frontend.js 2.83 kB
build/checkout-blocks/express-payment-frontend.js 5.53 kB
build/checkout-blocks/fields-frontend.js 345 B
build/checkout-blocks/order-note-frontend.js 1.08 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 3.66 kB
build/checkout-blocks/order-summary-coupon-form-frontend.js 2.96 kB
build/checkout-blocks/order-summary-discount-frontend.js 2.43 kB
build/checkout-blocks/order-summary-fee-frontend.js 275 B
build/checkout-blocks/order-summary-frontend.js 1.1 kB
build/checkout-blocks/order-summary-shipping-frontend.js 606 B
build/checkout-blocks/order-summary-subtotal-frontend.js 273 B
build/checkout-blocks/order-summary-taxes-frontend.js 432 B
build/checkout-blocks/payment-frontend.js 7.82 kB
build/checkout-blocks/shipping-address-frontend.js 995 B
build/checkout-blocks/shipping-methods-frontend.js 4.72 kB
build/checkout-blocks/terms-frontend.js 1.22 kB
build/checkout-blocks/totals-frontend.js 326 B
build/checkout-frontend.js 47.7 kB
build/checkout.js 45.6 kB
build/featured-category.js 8.67 kB
build/featured-product.js 10.5 kB
build/handpicked-products.js 7.14 kB
build/legacy-template.js 2.19 kB
build/mini-cart-component-frontend.js 16.6 kB
build/mini-cart-contents-block/empty-cart-frontend.js 327 B
build/mini-cart-contents-block/filled-cart-frontend.js 230 B
build/mini-cart-contents-block/footer--mini-cart-contents-block/products-table-frontend.js 4.68 kB
build/mini-cart-contents-block/footer-frontend.js 5.64 kB
build/mini-cart-contents-block/items-frontend.js 226 B
build/mini-cart-contents-block/products-table-frontend.js 288 B
build/mini-cart-contents-block/shopping-button-frontend.js 287 B
build/mini-cart-contents-block/title-frontend.js 367 B
build/mini-cart-contents.js 22.7 kB
build/mini-cart-frontend.js 1.72 kB
build/mini-cart.js 6.1 kB
build/price-filter-frontend.js 12.3 kB
build/price-filter.js 8.41 kB
build/price-format.js 1.19 kB
build/product-add-to-cart--product-button--product-category-list--product-image--product-price--product-r--a0326d00.js 224 B
build/product-add-to-cart--product-button--product-image--product-title.js 2.65 kB
build/product-add-to-cart--product-button.js 565 B
build/product-add-to-cart-frontend.js 6.97 kB
build/product-add-to-cart.js 6.64 kB
build/product-best-sellers.js 7.41 kB
build/product-button--product-category-list--product-image--product-price--product-rating--product-sale-b--e17c7c01.js 501 B
build/product-button-frontend.js 1.84 kB
build/product-button.js 1.08 kB
build/product-categories.js 2.78 kB
build/product-category-list-frontend.js 924 B
build/product-category-list.js 500 B
build/product-category.js 8.52 kB
build/product-image-frontend.js 1.84 kB
build/product-image.js 1.07 kB
build/product-new.js 7.7 kB
build/product-on-sale.js 8.01 kB
build/product-price-frontend.js 1.94 kB
build/product-price.js 1.5 kB
build/product-rating-frontend.js 1.15 kB
build/product-rating.js 735 B
build/product-sale-badge-frontend.js 1.09 kB
build/product-sale-badge.js 679 B
build/product-search.js 2.18 kB
build/product-sku-frontend.js 380 B
build/product-sku.js 382 B
build/product-stock-indicator-frontend.js 1.03 kB
build/product-stock-indicator.js 620 B
build/product-summary-frontend.js 1.33 kB
build/product-summary.js 918 B
build/product-tag-list-frontend.js 918 B
build/product-tag-list.js 495 B
build/product-tag.js 7.83 kB
build/product-title-frontend.js 1.29 kB
build/product-title.js 910 B
build/product-top-rated.js 7.94 kB
build/products-by-attribute.js 8.42 kB
build/reviews-by-category.js 11.2 kB
build/reviews-by-product.js 12.3 kB
build/reviews-frontend.js 7 kB
build/single-product-frontend.js 21.5 kB
build/single-product.js 10.1 kB
build/stock-filter-frontend.js 6.5 kB
build/stock-filter.js 6.56 kB
build/vendors--cart-blocks/cart-line-items--cart-blocks/cart-order-summary--cart-blocks/order-summary-shi--c02aad66-frontend.js 5.26 kB
build/vendors--cart-blocks/cart-line-items--checkout-blocks/order-summary-cart-items--mini-cart-contents---233ab542-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--5b8feb0b-frontend.js 4.74 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--decc3dc6-frontend.js 20.5 kB
build/vendors--mini-cart-contents-block/footer-frontend.js 6.86 kB
build/vendors--product-add-to-cart-frontend.js 7.53 kB
build/wc-blocks-data.js 9.87 kB
build/wc-blocks-editor-style-rtl.css 4.92 kB
build/wc-blocks-editor-style.css 4.92 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 930 B
build/wc-blocks-registry.js 2.7 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.14 kB
build/wc-blocks-style-rtl.css 22 kB
build/wc-blocks-style.css 22 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 71.3 kB
build/wc-blocks.js 2.62 kB
build/wc-payment-method-bacs.js 816 B
build/wc-payment-method-cheque.js 811 B
build/wc-payment-method-cod.js 909 B
build/wc-payment-method-paypal.js 837 B
build/wc-settings.js 2.61 kB

compressed-size-action

@gigitux gigitux changed the title Add Product Search Results Template #6218 Add Product Search Results Template Apr 8, 2022
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.

Really excited with this PR! In combination with #6134 it will allow adding filters to the Search results template. 🥳 Good job!

It works great and code LGTM. I left some minor suggestions below related to the copy. 👇

*
* @internal
*/
class SearchResultsProductTemplate {
Copy link
Contributor

Choose a reason for hiding this comment

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

Just curious, any reason why this is named SearchResultsProductTemplate? ProductSearchResultsTemplate would seem more natural to me.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Not really. I'm not sure about the search-results-product.html filename too. I just used this for being consistent, but thinking about it, my assumption doesn't make a lot of sense 😅

image

namespace Automattic\WooCommerce\Blocks\Templates;

/**
* ProductSearchTemplate class.
Copy link
Contributor

Choose a reason for hiding this comment

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

I guess this comment should use the name of the class?

*/
class SearchResultsProductTemplate {

const SLUG = 'search-results-product';
Copy link
Contributor

Choose a reason for hiding this comment

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

If possible, I would change the slug as well:

Suggested change
const SLUG = 'search-results-product';
const SLUG = 'product-search-results';


const SLUG = 'search-results-product';
const TITLE = 'Product Search Results';
const DESCRIPTION = 'Template used to display search results for products';
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: missing dot in the description.

Suggested change
const DESCRIPTION = 'Template used to display search results for products';
const DESCRIPTION = 'Template used to display search results for products.';

Copy link
Contributor

Choose a reason for hiding this comment

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

Sidenote: it would be nice to add descriptions to all other WC templates, not in this PR, but maybe a follow-up good first issue?

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 point, created a new issue #6233

}

/**
* When the search is for products and it used a block theme the Product Search Template is rendered.
Copy link
Contributor

Choose a reason for hiding this comment

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

Small rewording suggestion:

Suggested change
* When the search is for products and it used a block theme the Product Search Template is rendered.
* When the search is for products and a block theme is active, render the Product Search Template.

@gigitux gigitux force-pushed the add/6218-search-result-product-template branch from a3b2f14 to a063c5a Compare April 12, 2022 16:10
@gigitux
Copy link
Contributor Author

gigitux commented Apr 12, 2022

Thanks for the review. I added your suggestions!

@gigitux gigitux requested a review from Aljullu April 12, 2022 16:15
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.

Now I'm getting a Saving failed error when trying to save the Product Search Results template. 😕 e2e tests related to this PR seem to be failing too.


it( 'should contain the "WooCommerce Product Grid Block" classic template', async () => {
await goToTemplateEditor( {
postId: 'woocommerce/woocommerce//search-results-product',
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we update the slug here too just for consistency?

…products-block into add/6218-search-result-product-template
@gigitux gigitux force-pushed the add/6218-search-result-product-template branch from 0a8f9fd to f1d51de Compare April 13, 2022 10:47
@gigitux gigitux force-pushed the add/6218-search-result-product-template branch from f1d51de to 392861b Compare April 13, 2022 10:52
@Aljullu Aljullu self-requested a review April 13, 2022 15:18
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.

LGTM, thanks for working on this @gigitux!

@github-actions github-actions bot added this to the 7.4.0 milestone Apr 14, 2022
@gigitux gigitux merged commit c597937 into trunk Apr 14, 2022
@gigitux gigitux deleted the add/6218-search-result-product-template branch April 14, 2022 09:45
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add Product Search Results Template
2 participants