Expivi broadcasts several different events for state changes and actions, whether they are user-based or done internally (rules). This document will be expanded in time for all the different events. Here is a list of all the documented events that are currently within Expivi.
-
attribute
To listen to these events, all you have to do is add this to your javascript.
window.expivi._events.onChange.subscribe(function(event){ if(event.name === ){ } });
Replace <event_name>
with the specific event name as string value such as 'attribute'
.
The event parameter in the callback function has the following interface
{ name : string = payload? : any = }
attribute
The ‘attribute’ event is broadcasted whenever an attribute is changed. This can be done through a different selection in the options or through rules. The payload for this event has this interface
{ attribute_id: number attribute_name: string attribute_slug: string attribute_type: string attribute_value: number|string|object attribute_value_id: number attribute_value_name: string product_id: number product_scene_id: number product_uuid: string rebuild: boolean user_data: any (not implemented) }
window.expivi.getProductAttributes(productSceneId?: number): Promise<AttributeInterface[]>, window.expivi.setProductAttribute(attributeId: number, value: any, productSceneId?: number): Promise, window.expivi.setProductAttributeNamed(attributeName: string, value: any, productSceneId?: number): Promise,
The spec for AttributeInterface
looks likes this:
{ id: number; name: string; type: string; slug?: string; hash?: string; key?: string; categories?: CategoryModel[]; description: string; position: number; thumbnail: string; thumbnail_url: string; tmpthumbid?: string; parent_id: number; ParentIndent?: number; ParentAttributeId?: string; meta: any; version: number; default: boolean; visibility: number; global: boolean; attribute_values?: AttributeValueInterface[]; entity_properties?: EntityPropertyInterface[]; selected_value_id?: number; selected_value_value?: any; visible?: boolean; collapsed?: boolean; selected?: boolean; team_id?: number; created_at?: string; updated_at?: string; deleted_at?: string; translatedName?: string; translations: { [key: string]: { [key: string]: string; }; }; pivot?: { id: number; attribute_id: number; attribute_parent_id: number; catalogue_id: number; created_at: string; updated_at: string; };
For example, use getProductAttributes
to retrieve all attributes. Filter on the attribute with the key
text-to-image-1
and use the id
of that attribute to set the text by calling setProductAttribute(<attribute_id>, <text_to_set>)
.