Widgets
latest
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