Git Product home page Git Product logo

buy-button-js's Introduction

BuyButton.js with custom attributes AND market and language support

~ This repo was forked from Innovation-Magic-LLC/buy-button-js-customattributes who added custom attributes ~

This repository contains a modified version of the Shopify Buy Button library that allows developers to add custom attributes to product line items. While the default Buy Button library does not support this functionality, our implementation enables sending additional data from external applications to Shopify, facilitating the creation of custom retail functionality.

Features

  • Add custom attributes to product line items during checkout
  • Attributes are visible to customers during the checkout process
  • Attributes are accessible in the Shopify admin panel and through webhooks as metadata
  • Display product price and cart line item price in the currency of a given market
  • Display product name and variant name in the desired language

Show product and cart in the currency and language for a given market

var countryCode = "FR";
var language = "fr";
var country_language = language+'-'+countryCode;
var client = await ShopifyBuy.buildClient({
    domain: "---.myshopify.com",
    storefrontAccessToken: "---",
    language: country_language,
});

client.graphQLClient.internationalizationDirective = "@inContext(country: "+countryCode+", language: "+language.toUpperCase()+")"

var localization = await client.shop.fetchLocalization().then(function (res) {
    return res;
});

var currencyCode = localization.country.currency.isoCode;

const localStorageCheckoutKey = `${client.config.storefrontAccessToken}.${client.config.domain}.checkoutId`;
var checkout = null;
if (localStorage.getItem(localStorageCheckoutKey)) {
    var checkoutId = localStorage.getItem(localStorageCheckoutKey);
    checkout = await client.cart.fetch(checkoutId);
} 

//checkout = null;
if (!checkout){
    checkout = await client.cart.create(input);
    localStorage.setItem(localStorageCheckoutKey, checkout.id);
}

Limitations

  • Custom attributes are not displayed in the cart before checkout, which may cause confusion for customers with bulk orders. However, this should not be an issue for small orders.
  • mocha test framework is purged
  • After compiling the library, you will need to manually merge your bits with the live shopify bits. We have provided our compiled minified version in ./latest folder.
  • For GraphQL cart API support, this version was built by modifying a compiled version of js-buy-sdk which is a work in progress: https://github.com/Shopify/js-buy-sdk/tree/sd-cart

Usage

This project is shared for educational purposes and is provided without warranty under the MIT license.

Use and self-host at your own risk.

To build and run the project, we recommend using a Linux environment.

Notes

For reference, we keep a copy of the code we compiled before and after merging it.

/dist-compiled/[date]/github-dist - this is the original github compiled dist /dist-compiled/[date]/customattributes-dist - this is the updated code compiled dist /dist-compiled/[date]/shopify-live - this is a reference copy of the live library hosted by shopify /dist-compiled/[date]/release - this is the minified source

/latest - this is the latest minified source with custom attribute functionality.

Prereqs :

  1. Install nvm
  2. Install build essentials and python 2 sudo apt-get install -y build-essential g++ python2
  3. Set project to use NodeJS 15 nvm use 15
  4. Install yarn npm install yarn -g
  5. Remove from package.json file 'wdio-mocha-framework' which contains the unsupported npm 'fibers' dependency. Its used for test automation.
  6. Run yarn install
  7. Run yarn build

Happy building!!!

Original unmodified Readme:

BuyButton.js

BuyButton.js on NPM Travis

BuyButton.js is a highly customizable UI library for adding ecommerce functionality to any website. It allows you to create interactive UI components such as product listings and shopping carts with minimal configuration, while allowing you to easily customize the appearance and behaviour of the components. It uses the JS Buy SDK to connect to your Shopify store, giving you access to your products and collections.

To get started, take a look at the documentation. For questions, suggestions and feeback, please create an issue.

Development

yarn
cp index.example.html index.html
  • Add your API key and shop domain to index.html
  • Set a product ID in index.html
yarn run start

Will watch for changes, compile src/ to tmp/ using babel & browserify, and run a server on port 8080.

Testing

yarn run test

will run full test suite locally

yarn run test-dev

Will watch for changes and run test suite.

Documentation

To run docs locally, install jekyll:

gem install jekyll
yarn run docs

Doc server will run at http://localhost:4000/buy-button-js/ Docs source files are located in /docs. Docs are automatically deployed to gh-pages from master.

buy-button-js's People

Contributors

tessalt avatar harisaurus avatar melissaluu avatar stefanslehta avatar jameskim08 avatar michenly avatar lyninx avatar jadetr avatar suusan2go avatar rebeccajfriedman avatar dependabot[bot] avatar philibertdugas avatar minasmart avatar jmignac avatar gabrielmaldi avatar spareshade avatar lreeves avatar taylorthedeveloper avatar jamiemtdwyer avatar tanema avatar cursedcoder avatar sbfaulkner avatar alxgmpr avatar saulecabrera avatar tombennet avatar marius92mc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.