New Shopify Certification now available: Liquid Storefronts for Theme Developers

How can I access metaobject from my theme app extension?

shafiimam
Shopify Partner
1 0 0

Hello folks. I am developing an app where I am creating a meta object for my app. I want to access that meta object from my theme app extension as exactly like the app metafields. But I am not being able to get the meta object value from my theme app extension. Any idea how can I do that or is it possible?

Replies 2 (2)
RinaA
Shopify Partner
10 1 1

I'm also facing the same issue.

Anyone know the solution?

I was able to get the metaobject created on the management screen without any problems.

 

 

A mutation running in the app

  const response = await graphql(
    `mutation($input: MetaobjectDefinitionCreateInput!) {
      metaobjectDefinitionCreate(definition: $input) {
        metaobjectDefinition {
          id
          type
          fieldDefinitions {
            name
            key
          }
        }
      }
    }`,
    {
      variables: {
        input : {
            type: "$app:app-name",
            access: {
              admin: "MERCHANT_READ_WRITE",
              storefront: "PUBLIC_READ",
            },
            capabilities: { "publishable": { "enabled": true } },
            fieldDefinitions: [
              { "key": "key-name", "type": "single_line_text_field" },
              { "key": "key-name2", "type": "single_line_text_field" },
              ....
            ],
          },
      },
    }
  );

 

  const response = await graphql(
    `mutation CreateMetaobject($metaobject: MetaobjectCreateInput!) {
      metaobjectCreate(metaobject: $metaobject) {
        metaobject {
          id
          handle
          type
          keyname : field(key: "key-name") {
            value
          }
          keyname2 : field(key: "key-name2") {
            value
          }
        }
        userErrors {
          field
          message
          code
        }
      }
    }`,
    {
      variables: {
        metaobject : {
            handle: "handle-name",
            type: "$app:app-name",
            fields: [
              { "key": "key-name", "value": keyname },
              { "key": "key-name2", "value": keyname2 },
            ],
          },
      },
    }
  );

 

RinaA
Shopify Partner
10 1 1

Was self resolved.

 

Added the following specification when creating a meta object

capabilities: {
 publishable: {
  status: "ACTIVE"
 }
},

 const response = await graphql(
    `mutation CreateMetaobject($metaobject: MetaobjectCreateInput!) {
      metaobjectCreate(metaobject: $metaobject) {
        metaobject {
          id
          handle
          type
          keyname : field(key: "key-name") {
            value
          }
          keyname2 : field(key: "key-name2") {
            value
          }
        }
        userErrors {
          field
          message
          code
        }
      }
    }`,
    {
      variables: {
        metaobject : {
            handle: "handle-name",
            type: "$app:app-name",
       capabilities: {
              publishable: {
                status: "ACTIVE"
              }
            },
            fields: [
              { "key": "key-name", "value": keyname },
              { "key": "key-name2", "value": keyname2 },
            ],
          },
      },
    }
  );

 

When displayed in app block↓

shop.metaobjects.definition.handle.key_name.value