solidus_seo 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b59bc10f88b145907a907757d59bfa0ddfc1991e7e20313bb4b2b7bb522935f
4
- data.tar.gz: 879ddd7cbc5884f6eefcfd027d266e8a8c17a707f9312cdf6367970bc9c47d33
3
+ metadata.gz: 51670eddac384997661e9012323cd72a8d53f93d49798c125a0cdf6090b209de
4
+ data.tar.gz: 0672d2f46cf997f24e6b9c9ded5943af3bf86fc7b2c50c30f4c79a363052b870
5
5
  SHA512:
6
- metadata.gz: b2f9462a55c124cc5eb2871a8fcdf5c0215bf7fc6280c50295da392f12169c4b2c93a9ca5a13f77291beb4a481fd7de38fb4c25b407e68b83614aab9efa5bbd9
7
- data.tar.gz: 41787840fd2c469c0103a2f76b53b93586a4c09febbabb9ff82ca1845dfa8c8ed7b035e386e53b2e0cb903873824cd119510784a1a5da53429fb2ae6e088e495
6
+ metadata.gz: 74fc866d03e824e4d02a0cf9f6ea398934b8f718ff07da6e8da08d6b124f46f1c1167d611f2f0c9dd31f5d03a23dd1db16965d1bc4e209dd612e67fad543be5b
7
+ data.tar.gz: 4f3b5e18a483447b87cd2cfe4771033e0d02e99fc873973760faeec526369b4dca0f1d2e97faabb2a4e5884eba31b0bc718b8f95ddedb3f6d094267cfba62099
data/README.md CHANGED
@@ -45,8 +45,10 @@ Here are the changes we make, via deface, in the default Solidus views as part o
45
45
 
46
46
  - In `spree/layouts/spree_application.html.erb`
47
47
  - Insert `<%= render 'solidus_seo/analytics' %>` just before `</head>`.
48
+ - Insert `<%= render 'solidus_seo/noscript_tags' %>` immediately after the `<body>` opening tag.
48
49
  - Insert `<%= dump_jsonld %>` just before the `</body>` closing tag.
49
50
  - Replace `<%= taxon_breadcrumbs(@taxon) %>` with (`<%= taxon_breadcrumbs_jsonld(@taxon) %>`) which does the same as the original plus prints a JSON-LD tag.
51
+ - Replace `<%= flash_messages %>` with (`<%= flash_messages(ignore_types: 'added_to_cart') %>`) which does the same as the original plus prints a JSON-LD tag.
50
52
 
51
53
  - In `spree/products/show.html.erb`:
52
54
  - Insert `<%= jsonld @product %>` anywhere inside the `cache` block.
@@ -1,6 +1,10 @@
1
1
  <%
2
2
  return if ENV['FACEBOOK_PIXEL_ID'].blank?
3
3
 
4
+ product_data = {}
5
+ add_to_cart_data = {}
6
+ order_data = {}
7
+
4
8
  if just_purchased
5
9
  order_data = {
6
10
  value: order.total,
@@ -20,6 +24,24 @@ if just_purchased
20
24
  promo_total: order.promo_total
21
25
  }
22
26
  end
27
+
28
+ if flash[:added_to_cart].present?
29
+ add_to_cart_data = {
30
+ currency: order.currency,
31
+ content_type: 'product',
32
+ contents: flash[:added_to_cart].map do |variant_sku, variant|
33
+ { id: variant_sku, quantity: variant['quantity'] }
34
+ end
35
+ }
36
+ end
37
+
38
+ if @product
39
+ product_data = {
40
+ content_type: 'product',
41
+ content_name: @product.name,
42
+ content_ids: [@product.master.sku]
43
+ }
44
+ end
23
45
  %>
24
46
  <script type="text/javascript" data-tag="facebook">
25
47
  !function(f,b,e,v,n,t,s) {if (f.fbq) return;n = f.fbq = function() { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) };if (!f._fbq) f._fbq=n;n.push = n; n.loaded = !0; n.version = '2.0'; n.queue=[]; t = b.createElement(e); t.async = !0; t.src = v;s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s);}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js');
@@ -27,10 +49,20 @@ end
27
49
  fbq('init', '<%= ENV['FACEBOOK_PIXEL_ID'] %>');
28
50
  fbq('track', 'PageView');
29
51
 
30
- <% if just_purchased %>
52
+ <% if order_data.present? %>
31
53
  fbq('track', 'Purchase', <%== order_data.to_json %>);
32
54
  window.solidusSeoDataLayer('facebook', 'purchase');
33
55
  <% end %>
56
+
57
+ <% if add_to_cart_data.present? %>
58
+ fbq('track', 'AddToCart', <%== add_to_cart_data.to_json %>);
59
+ window.solidusSeoDataLayer('facebook', 'addtocart');
60
+ <% end %>
61
+
62
+ <% if product_data.present? %>
63
+ fbq('track', 'ViewContent', <%== product_data.to_json %>);
64
+ window.solidusSeoDataLayer('facebook', 'productview');
65
+ <% end %>
34
66
  </script>
35
67
  <noscript>
36
68
  <img height="1" width="1" src="https://www.facebook.com/tr?id=<%= ENV['FACEBOOK_PIXEL_ID'] %>&ev=PageView&noscript=1" />
@@ -36,6 +36,7 @@ module SolidusSeo
36
36
  copy_file 'insert_analytics_in_layout.html.erb.deface', 'app/overrides/spree/layouts/spree_application/insert_analytics_in_layout.html.erb.deface'
37
37
  copy_file 'replace_taxon_breadcrumbs_helper.html.erb.deface', 'app/overrides/spree/layouts/spree_application/replace_taxon_breadcrumbs_helper.html.erb.deface'
38
38
  copy_file 'insert_noscript_tags.html.erb.deface', 'app/overrides/spree/layouts/spree_application/insert_noscript_tags.html.erb.deface'
39
+ copy_file 'replace_flash_messages_helper.html.erb.deface', 'app/overrides/spree/layouts/spree_application/replace_flash_messages_helper.html.erb.deface'
39
40
  end
40
41
  end
41
42
  end
@@ -0,0 +1,5 @@
1
+ <!--
2
+ replace %{erb[loud]:contains("flash_messages")}
3
+ original "<%= flash_messages %>"
4
+ -->
5
+ <%= flash_messages(ignore_types: 'added_to_cart') %>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusSeo
4
- VERSION = '1.0.11'
4
+ VERSION = '1.0.12'
5
5
  end
data/spec/examples.txt CHANGED
@@ -1,33 +1,34 @@
1
1
  example_id | status | run_time |
2
2
  ------------------------------------------------ | ------ | --------------- |
3
- ./spec/features/add_to_cart_spec.rb[1:1:1] | passed | 2.14 seconds |
4
- ./spec/features/checkout_complete_spec.rb[1:1:1] | passed | 0.59035 seconds |
5
- ./spec/features/checkout_complete_spec.rb[1:2:1] | passed | 0.70409 seconds |
6
- ./spec/features/checkout_complete_spec.rb[1:3:1] | passed | 0.77986 seconds |
7
- ./spec/features/checkout_complete_spec.rb[1:4:1] | passed | 0.53269 seconds |
8
- ./spec/features/homepage_spec.rb[1:1:1] | passed | 0.27083 seconds |
9
- ./spec/features/homepage_spec.rb[1:1:2] | passed | 0.2846 seconds |
10
- ./spec/features/homepage_spec.rb[1:2:1] | passed | 0.26788 seconds |
11
- ./spec/features/homepage_spec.rb[1:2:2] | passed | 0.26357 seconds |
12
- ./spec/features/homepage_spec.rb[1:3:1] | passed | 0.2807 seconds |
13
- ./spec/features/homepage_spec.rb[1:3:2] | passed | 0.28623 seconds |
14
- ./spec/features/homepage_spec.rb[1:4:1:1] | passed | 0.55629 seconds |
15
- ./spec/features/product_page_spec.rb[1:1:1] | passed | 0.44472 seconds |
16
- ./spec/features/product_page_spec.rb[1:1:2] | passed | 0.37428 seconds |
17
- ./spec/features/product_page_spec.rb[1:1:3] | passed | 0.48305 seconds |
18
- ./spec/features/product_page_spec.rb[1:2:1] | passed | 0.37207 seconds |
19
- ./spec/features/product_page_spec.rb[1:2:2:1] | passed | 0.33481 seconds |
20
- ./spec/features/product_page_spec.rb[1:2:3:1] | passed | 0.35463 seconds |
21
- ./spec/features/product_page_spec.rb[1:3:1] | passed | 0.40858 seconds |
22
- ./spec/features/product_page_spec.rb[1:3:2] | passed | 0.39049 seconds |
23
- ./spec/features/product_page_spec.rb[1:3:3] | passed | 0.43994 seconds |
24
- ./spec/features/product_page_spec.rb[1:4:1:1] | passed | 4.3 seconds |
25
- ./spec/features/taxon_page_spec.rb[1:1:1] | passed | 0.40068 seconds |
26
- ./spec/features/taxon_page_spec.rb[1:1:2] | passed | 0.39674 seconds |
27
- ./spec/features/taxon_page_spec.rb[1:1:3] | passed | 0.36863 seconds |
28
- ./spec/features/taxon_page_spec.rb[1:2:1] | passed | 0.46435 seconds |
29
- ./spec/features/taxon_page_spec.rb[1:2:2:1] | passed | 0.38776 seconds |
30
- ./spec/features/taxon_page_spec.rb[1:2:3:1] | passed | 0.36313 seconds |
31
- ./spec/features/taxon_page_spec.rb[1:3:1] | passed | 0.39374 seconds |
32
- ./spec/features/taxon_page_spec.rb[1:3:2] | passed | 0.36606 seconds |
33
- ./spec/features/taxon_page_spec.rb[1:4:1] | passed | 0.585 seconds |
3
+ ./spec/features/add_to_cart_spec.rb[1:1:1] | passed | 1.07 seconds |
4
+ ./spec/features/add_to_cart_spec.rb[1:1:2] | passed | 1.37 seconds |
5
+ ./spec/features/checkout_complete_spec.rb[1:1:1] | passed | 0.53998 seconds |
6
+ ./spec/features/checkout_complete_spec.rb[1:2:1] | passed | 2.38 seconds |
7
+ ./spec/features/checkout_complete_spec.rb[1:3:1] | passed | 0.84872 seconds |
8
+ ./spec/features/checkout_complete_spec.rb[1:4:1] | passed | 1.24 seconds |
9
+ ./spec/features/homepage_spec.rb[1:1:1] | passed | 0.24724 seconds |
10
+ ./spec/features/homepage_spec.rb[1:1:2] | passed | 2.97 seconds |
11
+ ./spec/features/homepage_spec.rb[1:2:1] | passed | 0.2808 seconds |
12
+ ./spec/features/homepage_spec.rb[1:2:2] | passed | 0.29667 seconds |
13
+ ./spec/features/homepage_spec.rb[1:3:1] | passed | 0.30094 seconds |
14
+ ./spec/features/homepage_spec.rb[1:3:2] | passed | 0.31454 seconds |
15
+ ./spec/features/homepage_spec.rb[1:4:1:1] | passed | 0.92066 seconds |
16
+ ./spec/features/product_page_spec.rb[1:1:1] | passed | 0.46804 seconds |
17
+ ./spec/features/product_page_spec.rb[1:1:2] | passed | 0.58854 seconds |
18
+ ./spec/features/product_page_spec.rb[1:1:3] | passed | 0.44073 seconds |
19
+ ./spec/features/product_page_spec.rb[1:2:1] | passed | 0.48328 seconds |
20
+ ./spec/features/product_page_spec.rb[1:2:2:1] | passed | 0.52483 seconds |
21
+ ./spec/features/product_page_spec.rb[1:2:3:1] | passed | 0.48305 seconds |
22
+ ./spec/features/product_page_spec.rb[1:3:1] | passed | 0.40406 seconds |
23
+ ./spec/features/product_page_spec.rb[1:3:2] | passed | 0.44702 seconds |
24
+ ./spec/features/product_page_spec.rb[1:3:3] | passed | 0.40842 seconds |
25
+ ./spec/features/product_page_spec.rb[1:4:1:1] | passed | 0.38661 seconds |
26
+ ./spec/features/taxon_page_spec.rb[1:1:1] | passed | 0.36011 seconds |
27
+ ./spec/features/taxon_page_spec.rb[1:1:2] | passed | 0.49162 seconds |
28
+ ./spec/features/taxon_page_spec.rb[1:1:3] | passed | 0.52362 seconds |
29
+ ./spec/features/taxon_page_spec.rb[1:2:1] | passed | 0.49447 seconds |
30
+ ./spec/features/taxon_page_spec.rb[1:2:2:1] | passed | 0.46672 seconds |
31
+ ./spec/features/taxon_page_spec.rb[1:2:3:1] | passed | 0.43612 seconds |
32
+ ./spec/features/taxon_page_spec.rb[1:3:1] | passed | 0.38696 seconds |
33
+ ./spec/features/taxon_page_spec.rb[1:3:2] | passed | 0.47861 seconds |
34
+ ./spec/features/taxon_page_spec.rb[1:4:1] | passed | 0.74015 seconds |
@@ -15,6 +15,16 @@ describe 'Add to cart', type: :system do
15
15
  find('#add-to-cart-button').click
16
16
  end
17
17
 
18
+ context 'when FACEBOOK_PIXEL_ID environment variable is present' do
19
+ let(:env_variable) { 'FACEBOOK_PIXEL_ID' }
20
+
21
+ it 'tracks "add to cart" event with product data' do
22
+ expect(page).to track_analytics_event :facebook, 'addtocart', [
23
+ 'fbq', 'track', 'AddToCart', line_item.sku
24
+ ]
25
+ end
26
+ end
27
+
18
28
  context 'when PINTEREST_TAG_ID environment variable is present' do
19
29
  let(:env_variable) { 'PINTEREST_TAG_ID' }
20
30
 
@@ -24,6 +34,10 @@ describe 'Add to cart', type: :system do
24
34
  line_item.name, line_item.variant.sku, line_item.variant.price
25
35
  ]
26
36
  end
37
+
38
+ it 'skips printing a flash message to the user with added_to_cart raw data' do
39
+ expect(page).to_not have_css '.flash.added_to_cart'
40
+ end
27
41
  end
28
42
  end
29
43
 
@@ -19,7 +19,7 @@ describe 'Checkout complete', type: :system do
19
19
  context 'when GOOGLE_TAG_MANAGER_ID environment variable is present' do
20
20
  let(:env_variable) { 'GOOGLE_TAG_MANAGER_ID' }
21
21
 
22
- it 'includes and executes a purchase event script' do
22
+ it 'tracks "purchase" event with product data' do
23
23
  subject
24
24
  expect(page).to track_analytics_event 'google-tag-manager', 'purchase', ['ecommerce', 'purchase', order.number, order.total, line_item.sku]
25
25
  end
@@ -28,7 +28,7 @@ describe 'Checkout complete', type: :system do
28
28
  context 'when GOOGLE_ANALYTICS_ID environment variable is present' do
29
29
  let(:env_variable) { 'GOOGLE_ANALYTICS_ID' }
30
30
 
31
- it 'includes and executes a purchase event script' do
31
+ it 'tracks "purchase" event with product data' do
32
32
  subject
33
33
  expect(page).to track_analytics_event 'google-analytics', 'purchase', [
34
34
  'event', 'purchase', 'transaction_id', order.number,
@@ -41,7 +41,7 @@ describe 'Checkout complete', type: :system do
41
41
  context 'when FACEBOOK_PIXEL_ID environment variable is present' do
42
42
  let(:env_variable) { 'FACEBOOK_PIXEL_ID' }
43
43
 
44
- it 'includes and executes a purchase event script' do
44
+ it 'tracks "Purchase" event with product data' do
45
45
  subject
46
46
  expect(page).to track_analytics_event :facebook, 'purchase', ['track', 'Purchase', order.total, line_item.sku, line_item.quantity, order.number]
47
47
  end
@@ -50,7 +50,7 @@ describe 'Checkout complete', type: :system do
50
50
  context 'when PINTEREST_TAG_ID environment variable is present' do
51
51
  let(:env_variable) { 'PINTEREST_TAG_ID' }
52
52
 
53
- it 'includes and executes a purchase event script' do
53
+ it 'tracks "checkout" event with product data' do
54
54
  subject
55
55
  expect(page).to track_analytics_event :pinterest, 'purchase', ['track', 'checkout', order.total, line_item.sku, line_item.name, line_item.price]
56
56
  end
@@ -97,6 +97,17 @@ describe "Product page", type: :system do
97
97
  stub_const 'ENV', ENV.to_h.merge(env_variable => 'XXX-YYYYY')
98
98
  end
99
99
 
100
+ context 'when FACEBOOK_PIXEL_ID environment variable is present' do
101
+ let(:env_variable) { 'FACEBOOK_PIXEL_ID' }
102
+
103
+ it 'tracks "ViewContent" event with product data' do
104
+ subject
105
+ expect(page).to track_analytics_event :facebook, 'productview', [
106
+ 'fbq', 'track', 'ViewContent', product.name, product.master.sku
107
+ ]
108
+ end
109
+ end
110
+
100
111
  context 'when PINTEREST_TAG_ID environment variable is present' do
101
112
  let(:env_variable) { 'PINTEREST_TAG_ID' }
102
113
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_seo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
4
+ version: 1.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karma Creative
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-20 00:00:00.000000000 Z
11
+ date: 2021-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus_core
@@ -360,6 +360,7 @@ files:
360
360
  - lib/generators/solidus_seo/install/templates/insert_product_list_helper.html.erb.deface
361
361
  - lib/generators/solidus_seo/install/templates/paperclip_optimizer.rb
362
362
  - lib/generators/solidus_seo/install/templates/remove_original_title_tag.deface
363
+ - lib/generators/solidus_seo/install/templates/replace_flash_messages_helper.html.erb.deface
363
364
  - lib/generators/solidus_seo/install/templates/replace_taxon_breadcrumbs_helper.html.erb.deface
364
365
  - lib/solidus_seo.rb
365
366
  - lib/solidus_seo/engine.rb
@@ -392,7 +393,7 @@ homepage: https://github.com/karmakatahdin/solidus_seo
392
393
  licenses:
393
394
  - BSD-3-Clause
394
395
  metadata: {}
395
- post_install_message:
396
+ post_install_message:
396
397
  rdoc_options: []
397
398
  require_paths:
398
399
  - lib
@@ -407,9 +408,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
407
408
  - !ruby/object:Gem::Version
408
409
  version: '0'
409
410
  requirements: []
410
- rubyforge_project:
411
+ rubyforge_project:
411
412
  rubygems_version: 2.7.6.2
412
- signing_key:
413
+ signing_key:
413
414
  specification_version: 4
414
415
  summary: Enhanced SEO in Solidus
415
416
  test_files: