diff --git a/woonuxt_base/app/pages/product/[slug].vue b/woonuxt_base/app/pages/product/[slug].vue index 0d8c6dc..12a5833 100644 --- a/woonuxt_base/app/pages/product/[slug].vue +++ b/woonuxt_base/app/pages/product/[slug].vue @@ -21,6 +21,7 @@ const indexOfTypeAny = ref([]); const attrValues = ref(); const isSimpleProduct = computed(() => product.value?.type === ProductTypesEnum.SIMPLE); const isVariableProduct = computed(() => product.value?.type === ProductTypesEnum.VARIABLE); +const isExternalProduct = computed(() => product.value?.type === ProductTypesEnum.EXTERNAL); const type = computed(() => activeVariation.value || product.value); const selectProductInput = computed(() => ({ productId: type.value?.databaseId, quantity: quantity.value })) as ComputedRef; @@ -103,12 +104,12 @@ const disabledAddToCart = computed(() => { -
-
+
+
{{ $t('messages.shop.availability') }}:
-
+
{{ $t('messages.shop.sku') }}: {{ product.sku || 'N/A' }}
@@ -120,13 +121,15 @@ const disabledAddToCart = computed(() => {
-
+
{ class="bg-white border rounded-lg flex text-left p-2.5 w-20 gap-4 items-center justify-center focus:outline-none" />
+ + {{ product?.buttonText || 'View product' }} +
diff --git a/woonuxt_base/app/queries/fragments/CartFragment.gql b/woonuxt_base/app/queries/fragments/CartFragment.gql index 0fb7ba9..acdef67 100644 --- a/woonuxt_base/app/queries/fragments/CartFragment.gql +++ b/woonuxt_base/app/queries/fragments/CartFragment.gql @@ -36,6 +36,7 @@ fragment Cart on Cart { type ...SimpleProduct ...VariableProduct + ...ExternalProduct } } variation { diff --git a/woonuxt_base/app/queries/fragments/ExternalProduct.gql b/woonuxt_base/app/queries/fragments/ExternalProduct.gql new file mode 100644 index 0000000..b68c5a3 --- /dev/null +++ b/woonuxt_base/app/queries/fragments/ExternalProduct.gql @@ -0,0 +1,4 @@ +fragment ExternalProduct on ExternalProduct { + externalUrl + buttonText +} diff --git a/woonuxt_base/app/queries/getProduct.gql b/woonuxt_base/app/queries/getProduct.gql index c42e13f..4c8f07c 100644 --- a/woonuxt_base/app/queries/getProduct.gql +++ b/woonuxt_base/app/queries/getProduct.gql @@ -34,10 +34,12 @@ query getProduct($slug: ID!) { ...Terms ...SimpleProduct ...VariableProduct + ...ExternalProduct related(first: 5) { nodes { ...SimpleProduct ...VariableProduct + ...ExternalProduct } } reviews { diff --git a/woonuxt_base/app/queries/getProducts.gql b/woonuxt_base/app/queries/getProducts.gql index 539c85e..8334d4a 100644 --- a/woonuxt_base/app/queries/getProducts.gql +++ b/woonuxt_base/app/queries/getProducts.gql @@ -2,7 +2,7 @@ query getProducts($after: String, $slug: [String], $first: Int = 9999, $orderby: products( first: $first after: $after - where: { categoryIn: $slug, typeNotIn: EXTERNAL, visibility: VISIBLE, minPrice: 0, orderby: { field: $orderby, order: DESC }, status: "publish" } + where: { categoryIn: $slug, visibility: VISIBLE, minPrice: 0, orderby: { field: $orderby, order: DESC }, status: "publish" } ) { pageInfo { hasNextPage @@ -20,6 +20,7 @@ query getProducts($after: String, $slug: [String], $first: Int = 9999, $orderby: ...ProductCategories ...SimpleProduct ...VariableProduct + ...ExternalProduct } } } diff --git a/woonuxt_base/app/types/index.d.ts b/woonuxt_base/app/types/index.d.ts index 2b25a22..2e1a234 100644 --- a/woonuxt_base/app/types/index.d.ts +++ b/woonuxt_base/app/types/index.d.ts @@ -6,9 +6,10 @@ type Order = import('#gql').OrderFragmentFragment; type ProductBase = import('#gql').GetProductQuery['product']; type SimpleProduct = import('#gql').SimpleProductFragment; type VariableProduct = import('#gql').VariableProductFragment; +type ExternalProduct = import('#gql').ExternalProductFragment; type DownloadableItem = import('#gql').DownloadableItemFragment; type ProductCategory = import('#gql').ProductCategoryFragment; -type Product = ProductBase & SimpleProduct & VariableProduct; +type Product = ProductBase & SimpleProduct & VariableProduct & ExternalProduct; type Address = import('#gql').AddressFragment; type Terms = import('#gql').TermsFragment; type VariationAttribute = import('#gql').VariationAttributeFragment;