page

Widgets

VERSIONlatest

Widgets

NAME

widgets - Describe implementation of widgets within Extenso

DESCRIPTION

Widget are based on the following tables:

  • sn_widgets : contains widgets definitions
  • sn_widgets_categories : defined widget categories
  • sn_widgets_list : define widget implementation in the pages of the site

For each widget, a table for the content might be connected in the sn_widgets table.

Widgets are usually put in 2 places:

  • /modules/module-name/widgets/widget-name/widget-name.sn when the widget is part of a module
  • /widgets/widget-name/widget-name.sn

If a widget is connected with a table, then when we edit this widget we can publish this table.

The publish of the widget will then be placed in /publish/table_name.sn

This publish can use the following publish:

    use cgidata;
    use user;
    use config;
    use state; 
    use page;

    %include "/extenso/functions/sn_publish.snc";

    site_config = sql("select * from sn_configs");

    elems = splitre(value:state.sn_path,re:":");
    if state.sn_modal eq "t" && isdigit(elems[1]) && elems[0] eq "uid_widget"  then
        widget = sql(single:true,"select * from sn_widgets_list where uid = '?'", elems[1]);
        res = sn_publish(widget.rows.table_name,widget.rows.uid_page,config.site); 
        ...
    else 
        ct(ct:"sn_ct",code:"Can't publish this widget %s", state.sn_path); 
    endif

In the implementation of a widget the following variables can be use:

  • use lg; // for language
  • use widget // widget information in the database

So an actual implementation might be:

    for parten sql("select * from widget_slider_homepage where actif = 'oui' and uid_widget = '?' order by sn_custom", widget.rows.uid_widget_list) do
        ...
    endfor

AUTHOR

Written by Pierre Laplante