可视化适配多语言

This commit is contained in:
gongfuxiang 2023-03-24 16:22:20 +08:00
parent 41b6603f4b
commit f23cdb5372
45 changed files with 1180 additions and 812 deletions

View File

@ -90,11 +90,11 @@ class Design extends Base
// 品牌
'brand_list' => BrandService::CategoryBrand(),
// 静态数据
'border_style_type_list' => BaseLayout::$border_style_type_list,
'goods_view_list_show_style' => BaseLayout::$goods_view_list_show_style,
'many_images_view_list_show_style' => BaseLayout::$many_images_view_list_show_style,
'images_text_view_list_show_style' => BaseLayout::$images_text_view_list_show_style,
'images_magic_cube_view_list_show_style' => BaseLayout::$images_magic_cube_view_list_show_style,
'border_style_type_list' => BaseLayout::ConstConfigData('border_style_type_list'),
'goods_view_list_show_style' => BaseLayout::ConstConfigData('goods_view_list_show_style'),
'many_images_view_list_show_style' => BaseLayout::ConstConfigData('many_images_view_list_show_style'),
'images_text_view_list_show_style' => BaseLayout::ConstConfigData('images_text_view_list_show_style'),
'images_magic_cube_view_list_show_style' => BaseLayout::ConstConfigData('images_magic_cube_view_list_show_style'),
// 首页商品排序规则
'goods_order_by_type_list' => MyLang('goods_order_by_type_list'),
'goods_order_by_rule_list' => MyLang('goods_order_by_rule_list'),

View File

@ -108,11 +108,11 @@ class Index extends Common
$assign['brand_list'] = BrandService::CategoryBrand();
// 静态数据
$assign['border_style_type_list'] = BaseLayout::$border_style_type_list;
$assign['goods_view_list_show_style'] = BaseLayout::$goods_view_list_show_style;
$assign['many_images_view_list_show_style'] = BaseLayout::$many_images_view_list_show_style;
$assign['images_text_view_list_show_style'] = BaseLayout::$images_text_view_list_show_style;
$assign['images_magic_cube_view_list_show_style'] = BaseLayout::$images_magic_cube_view_list_show_style;
$assign['border_style_type_list'] = BaseLayout::ConstConfigData('border_style_type_list');
$assign['goods_view_list_show_style'] = BaseLayout::ConstConfigData('goods_view_list_show_style');
$assign['many_images_view_list_show_style'] = BaseLayout::ConstConfigData('many_images_view_list_show_style');
$assign['images_text_view_list_show_style'] = BaseLayout::ConstConfigData('images_text_view_list_show_style');
$assign['images_magic_cube_view_list_show_style'] = BaseLayout::ConstConfigData('images_magic_cube_view_list_show_style');
// 首页商品排序规则
$assign['goods_order_by_type_list'] = MyLang('goods_order_by_type_list');

View File

@ -71,6 +71,7 @@ return [
'params_error_tips' => 'Parameter configuration error',
'config_fun_not_exist_tips' => 'Configuration method is not defined',
'delete_confirm_tips' => 'Cannot recover after deletion. Are you sure?',
'remove_confirm_tips' => 'After removal, it cannot be restored. Are you sure to continue?',
'operate_confirm_tips' => 'Cannot recover after operation. Are you sure to continue?',
'window_close_confirm_tips' => 'Are you sure you want to close this page?',
'fullscreen_open_name' => 'Enable full screen',
@ -436,11 +437,13 @@ return [
'import_title' => 'Import',
'export_title' => 'Export',
'images_title' => 'Images',
'video_title' => 'Video',
'text_title' => 'Text',
'loading_title' => 'Loading',
'lan_title' => 'Longitude',
'lat_title' => 'Latitude',
'lang_title' => 'Language',
'color_title' => 'Color',
'continue_scan_title' => 'ContinueScan',
// 商品基础相关
'goods_name' => 'Goods Name',
@ -565,6 +568,7 @@ return [
'form_event_value_title' => 'Event Value',
'form_event_value_message' => 'Event value can be up to 255 characters',
'form_bg_color_title' => 'Background Color',
'form_bg_color_message' => 'Please select a background color',
'form_time_valid_title' => 'Valid Time',
'form_time_start_title' => 'Start Time',
'form_time_start_message' => 'Please select the start time',
@ -601,6 +605,7 @@ return [
'confirm_confirm_tips' => 'It cannot be recovered after confirmation. Are you sure to continue?',
'cancel_confirm_tips' => 'Cannot recover after cancellation. Are you sure to continue?',
'delete_confirm_tips' => 'Cannot recover after deletion. Are you sure?',
'remove_confirm_tips' => 'After removal, it cannot be restored. Are you sure to continue?',
'operate_confirm_tips' => 'Cannot recover after operation. Are you sure to continue?',
'install_confirm_tips' => 'Proceed with the installation. Are you sure to continue?',
'uninstall_confirm_tips' => 'It cannot be recovered after uninstallation. Are you sure to continue?',
@ -627,10 +632,9 @@ return [
'type' => 'mini',
'name' => 'Internal page (applet/APP internal address)',
'item' => [
'1. Internal address of applet or APP',
'2. The applet starts with/pages',
'3. For example:/pages/user/user',
'4. Support with parameters ?x=xx',
'1. The applet starts with/pages',
'2. For example:/pages/user/user',
'3. Support with parameters ?x=xx',
],
'tips' => 'Applet page address configuration instructions',
],
@ -2288,6 +2292,314 @@ return [
],
],
// -------------------- 可视化设计 --------------------
'layout' => [
// 边线样式类型
'border_style_type_list' => [
'solid' => 'Solid',
'dashed' => 'Dashed',
'dotted' => 'Dotted',
'double' => 'Double',
],
// 商品样式类型
'goods_view_list_show_style' => [
'routine' => 'General mode',
'leftright' => 'Left and right',
'rolling' => 'Scroll mode',
],
// 多图样式类型
'many_images_view_list_show_style' => [
'routine' => 'Rotation mode',
'rolling' => 'Scroll mode',
'list' => 'List Mode',
],
// 图文样式类型
'images_text_view_list_show_style' => [
'updown' => 'Below',
'leftright' => 'Left and right',
'rolling' => 'Scroll mode',
],
// 图片魔方样式类型
'images_magic_cube_view_list_show_style' => [
'g1' => '1 Figure',
'v2' => '2 Vertical Figure',
'v3' => '3 Vertical Figure',
'v4' => '4 Vertical Figure',
'h2' => '2 Horizontal Figure',
'h3' => '3 Horizontal Figure',
'h4' => '4 Horizontal Figure',
'lr12' => '1 Left Right 2',
'lr13' => '1 Left Right 3',
'lr21' => '2 Left Right 1',
'lr31' => '3 Left Right 1',
'tb12' => '1 Up and Down 2',
'tb13' => '1 Up and Down 3',
'tb21' => '2 Up and Down 1',
'tb31' => '3 Up and Down 1',
'lrv2h2' => '2 Vertical, Left, Right, Horizontal 2',
'lrh2v2' => '2 Horizontal, Left, Right, and Vertical 2',
'g4' => '4 Figure',
],
// 基础
'base_goods_category_empty_tips' => 'The product category id is empty',
'base_goods_id_empty_tips' => 'Product ID is empty',
'base_goods_empty_tips' => 'No product information',
'base_data_type_not_handle_tips' => 'Data type not processed',
'base_module_not_config_tips' => 'Module not configured',
// 页面-系统基础
'page_system_title' => 'System page',
'page_goods_category' => 'All product categories',
'page_goods_search' => 'Product Search',
'page_goods_search_tips' => 'Can have parameters (keywords, product classification ID, brand ID)',
'page_goods' => 'Single item',
'page_cart' => 'Shopping Cart',
'page_user_center' => 'User Center',
'page_user_order_list' => 'My Order',
'page_user_order_aftersale_list' => 'Order AfterSales',
'page_user_goods_favor_list' => 'Product Favor',
'page_user_address_list' => 'My Address',
'page_user_goods_browse_list' => 'My Tracks',
'page_user_integral_list' => 'My Points',
'page_user_message_list' => 'My Message',
'page_user_answer_list' => 'Q&A/Message',
// 页面-扩展模块
'page_plugins_title' => 'Expansion module',
// 页面
'view_goods_category_choice_title' => 'The product category you currently selected is:',
'view_goods_category_empty_tips' => 'No product classification',
'view_module_container_tips' => 'Module Content Area',
'view_show_model_title' => 'Show mode',
'view_show_model_not_choice_tips' => 'Please select a presentation mode first',
'view_media_fixed_width_title' => 'Container width',
'view_media_fixed_width_message' => 'Please enter a number with a container width of up to 6000',
'view_media_fixed_height_title' => 'Container height',
'view_media_fixed_height_message' => 'Please enter a number for the container height and a maximum of 6000',
'view_media_fixed_border_radius_title' => 'Radius',
'view_media_fixed_border_radius_message' => 'Please enter a number with rounded corners and a maximum of 1000',
'view_media_fixed_border_style_title' => 'Edge Type',
'view_media_fixed_border_style_message' => 'Please select an edge type',
'view_media_fixed_border_width_title' => 'Edge Size',
'view_media_fixed_border_width_message' => 'Please enter a number with a maximum margin of 100',
'view_media_fixed_border_placeholder' => 'Outer',
'view_media_fixed_border_color_title' => 'Border Color',
'view_media_fixed_border_color_message' => 'Please select a border color',
'view_media_fixed_margin_title' => 'Margin',
'view_media_fixed_margin_message' => 'Please enter a number with an outer margin of up to 100',
'view_media_fixed_padding_title' => 'Padding',
'view_media_fixed_padding_message' => 'Please enter a number with an inner margin of up to 100',
'view_media_fixed_mouse_hover_images_amplify_title' => 'Mouse over image to zoom in',
'view_media_fixed_width_100_title' => 'Width 100%',
'view_media_fixed_height_100_title' => 'Height 100%',
'view_media_fixed_center_title' => 'Center or not',
'view_media_fixed_cover_title' => 'Whether the container is fully paved',
'view_media_fixed_four_sides_top' => 'Top',
'view_media_fixed_four_sides_right' => 'Right',
'view_media_fixed_four_sides_bottom' => 'Bottom',
'view_media_fixed_four_sides_left' => 'Left',
'view_media_fixed_four_sides_tips' => 'Top -> Right -> Bottom -> Left',
// 行展示配置
'view_show_row_number_title' => 'Line display quantity',
'view_show_row_number_sm_placeholder' => 'Small screen',
'view_show_row_number_sm_message' => 'Small screen up to 12',
'view_show_row_number_md_placeholder' => 'Medium screen',
'view_show_row_number_md_message' => 'Medium screen maximum 12',
'view_show_row_number_lg_placeholder' => 'Large screen',
'view_show_row_number_lg_message' => 'Large screen up to 12',
// 地址选择页面
'view_pages_tabs_system_title' => 'System page',
'view_pages_tabs_plugins_title' => 'Expansion module',
'view_pages_tabs_custom_title' => 'Custom Links',
'view_pages_tabs_custom_tips' => [
[
'type' => 'web',
'name' => 'WEB terminal',
'item' => [
'1. Start with http',
'2. If a web page is used in an applet, it is necessary to add a whitelist in the background of the applet',
]
],
[
'type' => 'mini',
'name' => 'Internal page (applet/APP internal address)',
'item' => [
'1. The applet starts with /pages',
'2. For example: /pages/user/user',
'3. Support with parameters ?x=xx',
],
'tips' => 'Applet page address configuration instructions',
],
[
'type' => 'out-mini',
'name' => 'Open external applet',
'item' => [
'1. Starts with appid://',
'2. For example: appid://wx88888888',
]
],
[
'type' => 'tel',
'name' => 'Making phone calls',
'item' => [
'1. Starts with tel://',
'2. For example: tel://wx13222222222',
]
],
[
'type' => 'map',
'name' => 'Jump to the native map to view the specified location',
'item' => [
'1. Start with map://',
'2. For example: map://name|address|longitude|latitude',
'3. Example: map://ShopXO|No. XXX, Zhangjiang High tech Park, Pudong New Area, Shanghai|121.626444|31.20843',
]
],
],
// 滚动配置
'view_module_rolling_config_item_width' => 'Data item width',
'view_module_rolling_config_item_width_tips' => 'Default 200',
'view_module_rolling_config_item_width_message' => 'Maximum data item width 600',
'view_module_rolling_config_item_margin' => 'Data item spacing',
'view_module_rolling_config_item_margin_message' => 'Maximum data item spacing 100',
'view_module_rolling_config_is_auto_play' => 'Whether to automatically play',
'view_module_rolling_config_is_nav_dot' => 'Show navigation points',
// 关键字信息
'view_module_title_keywords' => 'Keywords',
'view_module_title_keywords_tips' => 'Not displayed under small screen',
'view_module_title_keywords_message' => 'Please fill in the keyword and format with 1 to 8 characters',
'view_module_title_keywords_add' => 'Add Keyword',
// 指向url地址信息
'view_module_title_url' => 'Link Address',
'view_module_title_url_message' => 'Please select a jump link',
// 基础样式
'view_style_screen_md' => 'Medium screen style',
'view_style_screen_sm' => 'Small screen style',
'view_style_screen_lg' => 'Large screen style',
'view_style_setup' => 'Style Settings',
'view_style_content' => 'Content Styles',
'view_style_images' => 'Picture Styles',
'view_content_setup' => 'Content Settings',
'view_content_custom_html' => 'Custom html code',
'view_style_width_max_limit_value' => 'System standard width limit(1000px、1200px)',
'view_style_height' => 'Height',
// 容器
'view_offcanvas_layout_base_title' => 'Base Style',
'view_offcanvas_layout_background_images' => 'Background image',
'view_offcanvas_layout_background_images_center' => 'Center',
'view_offcanvas_layout_background_images_cover' => 'Cover',
'view_offcanvas_layout_background_images_no_repeat' => 'NoRepeat',
// 商品模块
'view_offcanvas_module_goods_tabs_goods_title' => 'Choice Goods',
'view_offcanvas_module_goods_tabs_category_title' => 'Choice Category',
'view_offcanvas_module_goods_not_choice' => 'Please select a product',
'view_offcanvas_module_goods_choice_tips' => 'Add up to 50 items',
'view_offcanvas_module_goods_category_not_choice' => 'Please select a product category',
'view_offcanvas_module_goods_sort_type' => 'Sort Type',
'view_offcanvas_module_goods_sort_type_tips' => 'Default Synthesis',
'view_offcanvas_module_goods_sort_type_message' => 'Please select a product sorting type',
'view_offcanvas_module_goods_sort_type_alert' => 'Comprehensively: Heat ->Sales ->Latest Descending',
'view_offcanvas_module_goods_sort_rule' => 'Collation',
'view_offcanvas_module_goods_sort_rule_tips' => 'Default descending order(desc)',
'view_offcanvas_module_goods_sort_rule_message' => 'Please select a collation',
'view_offcanvas_module_goods_limit_number' => 'Product quantity',
'view_offcanvas_module_goods_limit_number_message' => 'Maximum quantity of goods 50',
'view_offcanvas_module_goods_style' => 'Product Style',
// 图片
'view_offcanvas_module_images' => 'Picture',
'view_offcanvas_module_images_text_tips' => 'Image and title are required',
'view_offcanvas_module_images_add' => 'Add Image Text',
// 图文
'view_offcanvas_module_images_text_font_size' => 'Size',
'view_offcanvas_module_images_text_title' => 'Title',
'view_offcanvas_module_images_text_margin_top' => 'Margin Top',
'view_offcanvas_module_images_text_margin_right' => 'Margin Right',
'view_offcanvas_module_images_text_margin_bottom' => 'Margin Bottom',
'view_offcanvas_module_images_text_margin_left' => 'Margin Left',
'view_offcanvas_module_images_text_position_left' => 'Left',
'view_offcanvas_module_images_text_position_center' => 'Center',
'view_offcanvas_module_images_text_position_right' => 'Right',
'view_offcanvas_module_images_text_desc' => 'Desc',
'view_offcanvas_module_images_text_margin_title_message' => 'Maximum outer margin of title: 1000',
'view_offcanvas_module_images_text_margin_desc_message' => 'Description Outer Margin Max 1000',
'view_offcanvas_module_images_text_title_font_size_message' => 'Title font maximum 1000',
'view_offcanvas_module_images_text_desc_font_size_message' => 'Description font maximum 1000',
// 标题
'view_offcanvas_module_title_main_title' => 'Main Title',
'view_offcanvas_module_title_main_title_message' => 'The main title can have a maximum of 1 to 8 characters',
'view_offcanvas_module_title_vice_title' => 'Subtitle',
'view_offcanvas_module_title_vice_title_message' => 'Subtitle up to 16 characters',
'view_offcanvas_module_title_right' => 'Right button',
'view_offcanvas_module_title_right_tips' => 'Empty does not display',
'view_offcanvas_module_title_right_name' => 'Right button name',
'view_offcanvas_module_title_right_name_message' => 'The right button name can have up to 4 characters',
// 视频
'view_offcanvas_module_video_images' => 'Cover Photo',
// 弹窗商品搜索
'view_popup_goods_search_tabs_brand' => 'Brand',
'view_popup_goods_search_tabs_brand_message' => 'Please select a brand',
'view_popup_goods_search_tabs_keywords' => 'Keywords',
'view_popup_goods_search_tabs_other' => 'No conditions required',
'view_popup_goods_search_keywords_tips' => 'Search keyword format: 1~30 characters',
'view_popup_goods_search_other_tips' => 'Directly enter the search page without search criteria',
// 弹窗商品选择
'view_popup_goods_search_choice_category_not_choice' => 'Please select a product category',
'view_popup_goods_search_choice_category_placeholder' => 'Category...',
'view_popup_goods_search_choice_init_tips' => 'Please search for products',
// 页面基础
'view_base_tabs_list' => [
'structure' => 'Structure',
'module' => 'Module',
],
'view_base_structure_list' => [
'100' => '100%',
'6:6' => '6 : 6',
'8:4' => '8 : 4',
'4:8' => '4 : 8',
'9:3' => '9 : 3',
'3:9' => '3 : 9',
'6:3:3' => '6 : 3 : 3',
'3:6:3' => '3 : 6 : 3',
'3:3:6' => '3 : 3 : 6',
'4:4:4' => 'x 3',
'3:3:3:3' => 'x 4',
'2:2:2:2:2:2' => 'x 6',
],
'view_base_module_list' => [
'images' => 'Single Picture',
'many-images' => 'Multigraph',
'images-text' => 'Image & Text',
'images-magic-cube' => 'Picture Rubiks Cube',
'video' => 'Video',
'goods' => 'Goods',
'title' => 'Title',
'custom' => 'Custom html',
'border' => 'Border',
'height' => 'Auxiliary Blank',
],
'view_base_custom_url_tips' => 'Please fill in at least one address',
'view_base_show_modal_not_choice_tips' => 'Please select a data presentation mode',
'view_base_show_modal_error_tips' => 'Incorrect display mode',
'view_base_layout_container_tips' => 'Drag and drop the layout to this area and release the mouse',
'view_base_before_choice_page_tips' => 'Please select a page first',
'view_base_before_choice_url_position_tips' => 'Please select a link location first',
'view_base_before_config_goods_search_tips' => 'Please configure product search first',
'view_base_config_images_tips' => 'Please add a picture and configure it first',
'view_base_url_not_set_tips' => 'Link address not set',
'view_base_config_images_text_tips' => 'Please add images and text and configure them first',
'view_base_upload_images_or_title_tips' => 'Image and title are required',
'view_base_config_first_tips' => 'Please config',
'view_base_module_tab_tips' => 'Incorrect module attribute',
'view_base_module_attr_tips' => 'Incorrect module marking',
'view_base_type_event_not_exist_tips' => 'Type event not defined',
'view_base_module_assembly_not_exist_tips' => 'Module component not defined',
'view_base_module_not_exist_tips' => 'Module not defined',
'view_base_module_del_title' => 'Module Removal',
'view_base_module_set_title' => 'Module Settings',
'view_base_module_drag_title' => 'Drag and sort',
'view_base_layout_del_title' => 'Layout Removal',
'view_base_layout_set_title' => 'Layout Settings',
'view_base_layout_content_set_tips' => 'Container Settings',
],
// -------------------- 扩展模块 --------------------
'common_extend' => [
// 基础
@ -2324,7 +2636,7 @@ return [
],
// 百度
'baidu' => [
'mcrypt_no_support_tips' => 'mcrypt_module_open方法不支持',
'mcrypt_no_support_tips' => 'mcrypt_module_open Method not supported',
'decrypt_error_tips' => 'Decryption failed',
'appkey_error_tips' => 'Appkey does not match',
],

View File

@ -71,6 +71,7 @@ return [
'params_error_tips' => '参数配置有误',
'config_fun_not_exist_tips' => '配置方法未定义',
'delete_confirm_tips' => '删除后不可恢复、确认操作吗?',
'remove_confirm_tips' => '移除后不可恢复、确定继续吗?',
'operate_confirm_tips' => '操作后不可恢复、确认继续吗?',
'window_close_confirm_tips' => '您确定要关闭本页吗?',
'fullscreen_open_name' => '开启全屏',
@ -437,11 +438,13 @@ return [
'import_title' => '导入',
'export_title' => '导出',
'images_title' => '图片',
'video_title' => '视频',
'text_title' => '文本',
'loading_title' => '加载',
'lan_title' => '经度',
'lat_title' => '纬度',
'lang_title' => '语言',
'color_title' => '颜色',
'continue_scan_title' => '继续扫码',
// 商品基础相关
'goods_name' => '商品名称',
@ -566,6 +569,7 @@ return [
'form_event_value_title' => '事件值',
'form_event_value_message' => '事件值最多255个字符',
'form_bg_color_title' => '背景色',
'form_bg_color_message' => '请选择背景色',
'form_time_valid_title' => '有效时间',
'form_time_start_title' => '开始时间',
'form_time_start_message' => '请选择开始时间',
@ -602,6 +606,7 @@ return [
'confirm_confirm_tips' => '确认后不可恢复、确定继续吗?',
'cancel_confirm_tips' => '取消后无法恢复、确定继续吗?',
'delete_confirm_tips' => '删除后无法恢复、确定继续吗?',
'remove_confirm_tips' => '移除后不可恢复、确定继续吗?',
'operate_confirm_tips' => '操作后无法恢复、确认继续吗?',
'install_confirm_tips' => '进行安装操作、确定继续吗?',
'uninstall_confirm_tips' => '卸载后不可恢复、确认继续吗?',
@ -628,10 +633,9 @@ return [
'type' => 'mini',
'name' => '内部页面(小程序/APP内部地址)',
'item' => [
'1. 小程序或APP内部地址',
'2. 小程序以/pages开始',
'3. 例如:/pages/user/user',
'4. 支持带参数 ?x=xx',
'1. 小程序以/pages开始',
'2. 例如:/pages/user/user',
'3. 支持带参数 ?x=xx',
],
'tips' => '小程序页面地址配置说明',
],
@ -2293,6 +2297,314 @@ return [
],
],
// -------------------- 可视化设计 --------------------
'layout' => [
// 边线样式类型
'border_style_type_list' => [
'solid' => '实线',
'dashed' => '虚线',
'dotted' => '点状',
'double' => '双线',
],
// 商品样式类型
'goods_view_list_show_style' => [
'routine' => '常规模式',
'leftright' => '左图右文',
'rolling' => '滚动模式',
],
// 多图样式类型
'many_images_view_list_show_style' => [
'routine' => '轮播模式',
'rolling' => '滚动模式',
'list' => '列表模式',
],
// 图文样式类型
'images_text_view_list_show_style' => [
'updown' => '上图下文',
'leftright' => '左图右文',
'rolling' => '滚动模式',
],
// 图片魔方样式类型
'images_magic_cube_view_list_show_style' => [
'g1' => '1图',
'v2' => '2竖图',
'v3' => '3竖图',
'v4' => '4竖图',
'h2' => '2横图',
'h3' => '3横图',
'h4' => '4横图',
'lr12' => '1左右2',
'lr13' => '1左右3',
'lr21' => '2左右1',
'lr31' => '3左右1',
'tb12' => '1上下2',
'tb13' => '1上下3',
'tb21' => '2上下1',
'tb31' => '3上下1',
'lrv2h2' => '2竖左右横2',
'lrh2v2' => '2横左右竖2',
'g4' => '4图',
],
// 基础
'base_goods_category_empty_tips' => '商品分类id为空',
'base_goods_id_empty_tips' => '商品id为空',
'base_goods_empty_tips' => '无商品信息',
'base_data_type_not_handle_tips' => '数据类型未处理',
'base_module_not_config_tips' => '模块未配置',
// 页面-系统基础
'page_system_title' => '系统页面',
'page_goods_category' => '全部商品分类',
'page_goods_search' => '商品搜索',
'page_goods_search_tips' => '可带参数关键字、商品分类id、品牌id',
'page_goods' => '单一商品',
'page_cart' => '购物车',
'page_user_center' => '用户中心',
'page_user_order_list' => '我的订单',
'page_user_order_aftersale_list' => '订单售后',
'page_user_goods_favor_list' => '商品收藏',
'page_user_address_list' => '我的地址',
'page_user_goods_browse_list' => '我的足迹',
'page_user_integral_list' => '我的积分',
'page_user_message_list' => '我的消息',
'page_user_answer_list' => '问答/留言',
// 页面-扩展模块
'page_plugins_title' => '扩展模块',
// 页面
'view_goods_category_choice_title' => '您当前选择的商品类别是:',
'view_goods_category_empty_tips' => '无商品分类',
'view_module_container_tips' => '模块内容区域',
'view_show_model_title' => '展示模式',
'view_show_model_not_choice_tips' => '请先选择展示模式',
'view_media_fixed_width_title' => '容器宽度',
'view_media_fixed_width_message' => '请输入容器宽度、最大6000的数字',
'view_media_fixed_height_title' => '容器高度',
'view_media_fixed_height_message' => '请输入容器高度、最大6000的数字',
'view_media_fixed_border_radius_title' => '圆角',
'view_media_fixed_border_radius_message' => '请输入圆角、最大1000的数字',
'view_media_fixed_border_style_title' => '边线类型',
'view_media_fixed_border_style_message' => '请选择边线类型',
'view_media_fixed_border_width_title' => '边线大小',
'view_media_fixed_border_width_message' => '请输入边线、边线最大100的数字',
'view_media_fixed_border_placeholder' => '边线',
'view_media_fixed_border_color_title' => '边线颜色',
'view_media_fixed_border_color_message' => '请选择边线颜色',
'view_media_fixed_margin_title' => '外边距',
'view_media_fixed_margin_message' => '请输入外边距、最大100的数字',
'view_media_fixed_padding_title' => '外边距',
'view_media_fixed_padding_message' => '请输入内边距、最大100的数字',
'view_media_fixed_mouse_hover_images_amplify_title' => '鼠标悬停图片上方放大',
'view_media_fixed_width_100_title' => '是否宽度100%',
'view_media_fixed_height_100_title' => '是否高度100%',
'view_media_fixed_center_title' => '是否居中',
'view_media_fixed_cover_title' => '是否铺满容器',
'view_media_fixed_four_sides_top' => '上',
'view_media_fixed_four_sides_right' => '右',
'view_media_fixed_four_sides_bottom' => '下',
'view_media_fixed_four_sides_left' => '左',
'view_media_fixed_four_sides_tips' => '上 -> 右 -> 下 -> 左',
// 行展示配置
'view_show_row_number_title' => '行展示数量',
'view_show_row_number_sm_placeholder' => '小屏',
'view_show_row_number_sm_message' => '小屏最大12',
'view_show_row_number_md_placeholder' => '中屏',
'view_show_row_number_md_message' => '中屏最大12',
'view_show_row_number_lg_placeholder' => '大屏',
'view_show_row_number_lg_message' => '大屏最大12',
// 地址选择页面
'view_pages_tabs_system_title' => '系统页面',
'view_pages_tabs_plugins_title' => '扩展模块',
'view_pages_tabs_custom_title' => '自定义链接',
'view_pages_tabs_custom_tips' => [
[
'type' => 'web',
'name' => 'WEB端',
'item' => [
'1. 以http开头',
'2. 如小程序中使用WEB页面、需要在小程序后台加入白名单',
]
],
[
'type' => 'mini',
'name' => '内部页面(小程序/APP内部地址)',
'item' => [
'1. 小程序以/pages开始',
'2. 例如:/pages/user/user',
'3. 支持带参数 ?x=xx',
],
'tips' => '小程序页面地址配置说明',
],
[
'type' => 'out-mini',
'name' => '打开外部小程序',
'item' => [
'1. 以appid://开头',
'2. 例如appid://wx88888888',
]
],
[
'type' => 'tel',
'name' => '拨打电话',
'item' => [
'1. 以tel://开头',
'2. 例如tel://wx13222222222',
]
],
[
'type' => 'map',
'name' => '跳转原生地图查看指定位置',
'item' => [
'1. 以map://开头',
'2. 例如map://名称|地址|经度|纬度',
'3. 示例map://ShopXO|上海浦东新区张江高科技园区XXX号|121.626444|31.20843',
]
],
],
// 滚动配置
'view_module_rolling_config_item_width' => '数据项宽度',
'view_module_rolling_config_item_width_tips' => '默认200',
'view_module_rolling_config_item_width_message' => '数据项宽度最大600',
'view_module_rolling_config_item_margin' => '数据项间距',
'view_module_rolling_config_item_margin_message' => '数据项间距最大100',
'view_module_rolling_config_is_auto_play' => '是否自动播放',
'view_module_rolling_config_is_nav_dot' => '展示导航点',
// 关键字信息
'view_module_title_keywords' => '关键字',
'view_module_title_keywords_tips' => '小屏下不显示',
'view_module_title_keywords_message' => '请填写关键字、格式1~8个字符',
'view_module_title_keywords_add' => '添加关键字',
// 指向url地址信息
'view_module_title_url' => '链接地址',
'view_module_title_url_message' => '请选择跳转链接',
// 基础样式
'view_style_screen_md' => '中屏样式',
'view_style_screen_sm' => '小屏样式',
'view_style_screen_lg' => '大屏样式',
'view_style_setup' => '样式设置',
'view_style_content' => '内容样式',
'view_style_images' => '图片样式',
'view_content_setup' => '内容设置',
'view_content_custom_html' => '自定义html代码',
'view_style_width_max_limit_value' => '系统标准限宽(1000px、1200px)',
'view_style_height' => '高度',
// 容器
'view_offcanvas_layout_base_title' => '基础样式',
'view_offcanvas_layout_background_images' => '背景图',
'view_offcanvas_layout_background_images_center' => '居中',
'view_offcanvas_layout_background_images_cover' => '铺满',
'view_offcanvas_layout_background_images_no_repeat' => '不重复',
// 商品模块
'view_offcanvas_module_goods_tabs_goods_title' => '选择商品',
'view_offcanvas_module_goods_tabs_category_title' => '选择分类',
'view_offcanvas_module_goods_not_choice' => '请选择商品',
'view_offcanvas_module_goods_choice_tips' => '最多添加50件商品',
'view_offcanvas_module_goods_category_not_choice' => '请选择商品分类',
'view_offcanvas_module_goods_sort_type' => '排序类型',
'view_offcanvas_module_goods_sort_type_tips' => '默认综合',
'view_offcanvas_module_goods_sort_type_message' => '请选择商品排序类型',
'view_offcanvas_module_goods_sort_type_alert' => '综合为:热度->销量->最新 进行 降序(desc)排序',
'view_offcanvas_module_goods_sort_rule' => '排序规则',
'view_offcanvas_module_goods_sort_rule_tips' => '默认降序(desc)',
'view_offcanvas_module_goods_sort_rule_message' => '请选择排序规则',
'view_offcanvas_module_goods_limit_number' => '商品数量',
'view_offcanvas_module_goods_limit_number_message' => '商品数量最大50',
'view_offcanvas_module_goods_style' => '商品样式',
// 图片
'view_offcanvas_module_images' => '图片',
'view_offcanvas_module_images_text_tips' => '图片和标题必填一项',
'view_offcanvas_module_images_add' => '添加图文',
// 图文
'view_offcanvas_module_images_text_font_size' => '大小',
'view_offcanvas_module_images_text_title' => '标题',
'view_offcanvas_module_images_text_margin_top' => '外上',
'view_offcanvas_module_images_text_margin_right' => '外右',
'view_offcanvas_module_images_text_margin_bottom' => '外下',
'view_offcanvas_module_images_text_margin_left' => '外左',
'view_offcanvas_module_images_text_position_left' => '居左',
'view_offcanvas_module_images_text_position_center' => '居中',
'view_offcanvas_module_images_text_position_right' => '居右',
'view_offcanvas_module_images_text_desc' => '描述',
'view_offcanvas_module_images_text_margin_title_message' => '标题外边距最大1000',
'view_offcanvas_module_images_text_margin_desc_message' => '描述外边距最大1000',
'view_offcanvas_module_images_text_title_font_size_message' => '标题字体最大1000',
'view_offcanvas_module_images_text_desc_font_size_message' => '描述字体最大1000',
// 标题
'view_offcanvas_module_title_main_title' => '主标题',
'view_offcanvas_module_title_main_title_message' => '主标题最多1~8个字符',
'view_offcanvas_module_title_vice_title' => '副标题',
'view_offcanvas_module_title_vice_title_message' => '副标题最多16个字符',
'view_offcanvas_module_title_right' => '右侧按钮',
'view_offcanvas_module_title_right_tips' => '空则不显示',
'view_offcanvas_module_title_right_name' => '右侧按钮名称',
'view_offcanvas_module_title_right_name_message' => '右侧按钮名称最多4个字符',
// 视频
'view_offcanvas_module_video_images' => '封面图片',
// 弹窗商品搜索
'view_popup_goods_search_tabs_brand' => '品牌',
'view_popup_goods_search_tabs_brand_message' => '请选择品牌',
'view_popup_goods_search_tabs_keywords' => '关键字',
'view_popup_goods_search_tabs_other' => '无需条件',
'view_popup_goods_search_keywords_tips' => '搜索关键字格式1~30个字符',
'view_popup_goods_search_other_tips' => '无需搜索条件、直接进入搜索页面',
// 弹窗商品选择
'view_popup_goods_search_choice_category_not_choice' => '请选择商品分类',
'view_popup_goods_search_choice_category_placeholder' => '分类...',
'view_popup_goods_search_choice_init_tips' => '请搜索商品',
// 页面基础
'view_base_tabs_list' => [
'structure' => '布局',
'module' => '模块',
],
'view_base_structure_list' => [
'100' => '100%',
'6:6' => '6 : 6',
'8:4' => '8 : 4',
'4:8' => '4 : 8',
'9:3' => '9 : 3',
'3:9' => '3 : 9',
'6:3:3' => '6 : 3 : 3',
'3:6:3' => '3 : 6 : 3',
'3:3:6' => '3 : 3 : 6',
'4:4:4' => 'x 3',
'3:3:3:3' => 'x 4',
'2:2:2:2:2:2' => 'x 6',
],
'view_base_module_list' => [
'images' => '单图',
'many-images' => '多图',
'images-text' => '图文',
'images-magic-cube' => '图片魔方',
'video' => '视频',
'goods' => '商品',
'title' => '标题',
'custom' => '自定义html',
'border' => '辅助线',
'height' => '辅助空白',
],
'view_base_custom_url_tips' => '请至少填写一个地址',
'view_base_show_modal_not_choice_tips' => '请选择数据展示模式',
'view_base_show_modal_error_tips' => '展示模式有误',
'view_base_layout_container_tips' => '布局拖放到该区域松开鼠标即可',
'view_base_before_choice_page_tips' => '请先选择页面',
'view_base_before_choice_url_position_tips' => '请先选择链接位置',
'view_base_before_config_goods_search_tips' => '请先配置商品搜索',
'view_base_config_images_tips' => '请先添加图片并配置',
'view_base_url_not_set_tips' => '未设置链接地址',
'view_base_config_images_text_tips' => '请先添加图文并配置',
'view_base_upload_images_or_title_tips' => '图片和标题必填一项',
'view_base_config_first_tips' => '请配置',
'view_base_module_tab_tips' => '模块属性有误',
'view_base_module_attr_tips' => '模块标记有误',
'view_base_type_event_not_exist_tips' => '类型事件未定义',
'view_base_module_assembly_not_exist_tips' => '模块组件未定义',
'view_base_module_not_exist_tips' => '模块未定义',
'view_base_module_del_title' => '模块移除',
'view_base_module_set_title' => '模块设置',
'view_base_module_drag_title' => '拖拽排序',
'view_base_layout_del_title' => '布局移除',
'view_base_layout_set_title' => '布局设置',
'view_base_layout_content_set_tips' => '容器设置',
],
// -------------------- 扩展模块 --------------------
'common_extend' => [
// 基础

View File

@ -25,56 +25,72 @@ use app\service\GoodsCategoryService;
*/
class BaseLayout
{
// 边线样式类型
public static $border_style_type_list = [
'solid' => '实线',
'dashed' => '虚线',
'dotted' => '点状',
'double' => '双线',
];
// 商品样式类型
public static $goods_view_list_show_style = [
'routine' => '常规模式',
'leftright' => '左图右文',
'rolling' => '滚动模式',
];
// 多图样式类型
public static $many_images_view_list_show_style = [
'routine' => '轮播模式',
'rolling' => '滚动模式',
'list' => '列表模式',
];
// 图文样式类型
public static $images_text_view_list_show_style = [
'updown' => '上图下文',
'leftright' => '左图右文',
'rolling' => '滚动模式',
];
// 图片魔方样式类型
public static $images_magic_cube_view_list_show_style = [
'g1' => '1图',
'v2' => '2竖图',
'v3' => '3竖图',
'v4' => '4竖图',
'h2' => '2横图',
'h3' => '3横图',
'h4' => '4横图',
'lr12' => '1左右2',
'lr13' => '1左右3',
'lr21' => '2左右1',
'lr31' => '3左右1',
'tb12' => '1上下2',
'tb13' => '1上下3',
'tb21' => '2上下1',
'tb31' => '3上下1',
'lrv2h2'=> '2竖左右横2',
'lrh2v2'=> '2横左右竖2',
'g4' => '4图',
];
/**
* 静态配置数据
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2023-03-23
* @desc description
* @param [string] $key [配置key]
*/
public static function ConstConfigData($key)
{
$lang_border = MyLang('layout.border_style_type_list');
$lang_goods_view = MyLang('layout.goods_view_list_show_style');
$lang_many_images_view = MyLang('layout.many_images_view_list_show_style');
$lang_images_text_view = MyLang('layout.images_text_view_list_show_style');
$lang_images_magic_cube_view = MyLang('layout.images_magic_cube_view_list_show_style');
$data = [
// 边线样式类型
'border_style_type_list' => [
'solid' => $lang_border['solid'],
'dashed' => $lang_border['dashed'],
'dotted' => $lang_border['dotted'],
'double' => $lang_border['double'],
],
// 商品样式类型
'goods_view_list_show_style' => [
'routine' => $lang_goods_view['routine'],
'leftright' => $lang_goods_view['leftright'],
'rolling' => $lang_goods_view['rolling'],
],
// 多图样式类型
'many_images_view_list_show_style' => [
'routine' => $lang_many_images_view['routine'],
'rolling' => $lang_many_images_view['rolling'],
'list' => $lang_many_images_view['list'],
],
// 图文样式类型
'images_text_view_list_show_style' => [
'updown' => $lang_images_text_view['updown'],
'leftright' => $lang_images_text_view['leftright'],
'rolling' => $lang_images_text_view['rolling'],
],
// 图片魔方样式类型
'images_magic_cube_view_list_show_style' => [
'g1' => $lang_images_magic_cube_view['g1'],
'v2' => $lang_images_magic_cube_view['v2'],
'v3' => $lang_images_magic_cube_view['v3'],
'v4' => $lang_images_magic_cube_view['v4'],
'h2' => $lang_images_magic_cube_view['h2'],
'h3' => $lang_images_magic_cube_view['h4'],
'h4' => $lang_images_magic_cube_view['lr12'],
'lr12' => $lang_images_magic_cube_view['lr13'],
'lr13' => $lang_images_magic_cube_view['lr13'],
'lr21' => $lang_images_magic_cube_view['lr21'],
'lr31' => $lang_images_magic_cube_view['lr31'],
'tb12' => $lang_images_magic_cube_view['tb12'],
'tb13' => $lang_images_magic_cube_view['tb13'],
'tb21' => $lang_images_magic_cube_view['tb21'],
'tb31' => $lang_images_magic_cube_view['tb31'],
'lrv2h2'=> $lang_images_magic_cube_view['lrv2h2'],
'lrh2v2'=> $lang_images_magic_cube_view['lrh2v2'],
'g4' => $lang_images_magic_cube_view['g4'],
],
];
return isset($data[$key]) ? $data[$key] : [];
}
/**
* 配置处理-保存
@ -650,43 +666,6 @@ class BaseLayout
'user_integral_list' => MyUrl('index/userintegral/index'),
'user_answer_list' => MyUrl('index/answer/index'),
'user_message_list' => MyUrl('index/message/index'),
// 多商户
'plugins-blog-home' => PluginsHomeUrl('blog', 'index', 'index'),
'plugins-blog-favor' => PluginsHomeUrl('blog', 'shopfavor', 'index'),
// 博客
'plugins-blog-home' => PluginsHomeUrl('blog', 'index', 'index'),
'plugins-blog-search' => PluginsHomeUrl('blog', 'index', 'search'),
// 品牌
'plugins-brand-home' => PluginsHomeUrl('brand', 'index', 'index'),
// 优惠券
'plugins-coupon-home' => PluginsHomeUrl('coupon', 'index', 'index'),
'plugins-coupon-user' => PluginsHomeUrl('coupon', 'coupon', 'index'),
// 会员等级
'plugins-membershiplevelvip-home' => PluginsHomeUrl('membershiplevelvip', 'index', 'index'),
'plugins-membershiplevelvip-user-center' => PluginsHomeUrl('membershiplevelvip', 'vip', 'index'),
'plugins-membershiplevelvip-user-poster' => PluginsHomeUrl('membershiplevelvip', 'poster', 'index'),
// 分销
'plugins-distribution-user-center' => PluginsHomeUrl('distribution', 'index', 'index'),
'plugins-distribution-user-poster' => PluginsHomeUrl('distribution', 'poster', 'index'),
// 发票
'plugins-invoice-user' => PluginsHomeUrl('invoice', 'user', 'index'),
'plugins-invoice-order' => PluginsHomeUrl('invoice', 'order', 'index'),
// 积分商城
'plugins-points-home' => PluginsHomeUrl('points', 'index', 'index'),
// 钱包
'plugins-wallet-user' => PluginsHomeUrl('wallet', 'wallet', 'index'),
// 签到
'plugins-signin-user' => PluginsHomeUrl('signin', 'userqrcode', 'index'),
];
// 静态地址定义-手机端
@ -703,49 +682,20 @@ class BaseLayout
'user_integral_list' => '/pages/user-integral/user-integral',
'user_answer_list' => '/pages/user-answer-list/user-answer-list',
'user_message_list' => '/pages/message/message',
// 多商户
'plugins-shop-home' => '/pages/plugins/shop/index/index',
'plugins-shop-favor' => '/pages/plugins/shop/favor/favor',
// 门店
'plugins-realstore-home' => '/pages/plugins/realstore/index/index',
'plugins-realstore-favor' => '/pages/plugins/realstore/favor/favor',
// 博客
'plugins-blog-home' => '/pages/plugins/blog/index/index',
'plugins-blog-search' => '/pages/plugins/blog/search/search',
// 品牌
'plugins-brand-home' => '/pages/plugins/brand/index/index',
// 优惠券
'plugins-coupon-home' => '/pages/plugins/coupon/index/index',
'plugins-coupon-user' => '/pages/plugins/coupon/user/user',
// 会员等级
'plugins-membershiplevelvip-home' => '/pages/plugins/membershiplevelvip/index/index',
'plugins-membershiplevelvip-user-center' => '/pages/plugins/membershiplevelvip/user/user',
'plugins-membershiplevelvip-user-poster' => '/pages/plugins/membershiplevelvip/poster/poster',
// 分销
'plugins-distribution-user-center' => '/pages/plugins/distribution/user/user',
'plugins-distribution-user-poster' => '/pages/plugins/distribution/poster/poster',
// 发票
'plugins-invoice-user' => '/pages/plugins/invoice/user/user',
'plugins-invoice-order' => '/pages/plugins/invoice/order/order',
// 积分商城
'plugins-points-home' => '/pages/plugins/points/index/index',
// 钱包
'plugins-wallet-user' => '/pages/plugins/wallet/user/user',
// 签到
'plugins-signin-user' => '/pages/plugins/signin/user/user',
];
// url值处理前钩子
$hook_name = 'plugins_layout_service_url_value_begin';
MyEventTrigger($hook_name, [
'hook_name' => $hook_name,
'is_backend' => true,
'type' => $type,
'value' => $value,
'client_type' => $client_type,
'static_url_web_arr' => &$static_url_web_arr,
'static_url_app_arr' => &$static_url_app_arr,
]);
// 静态地址
$url = '';
$static_url_arr = ($client_type == 'pc') ? $static_url_web_arr : $static_url_app_arr;
@ -926,7 +876,7 @@ class BaseLayout
// 参数处理
if(empty($params['goods_ids']))
{
return DataReturn('商品id为空', -1);
return DataReturn(MyLang('layout.base_goods_id_empty_tips'), -1);
}
if(!is_array($params['goods_ids']))
{
@ -952,7 +902,7 @@ class BaseLayout
// 参数处理
if(empty($params['category_id']))
{
return DataReturn('商品分类id为空', -1);
return DataReturn(MyLang('layout.base_goods_category_empty_tips'), -1);
}
// 排序处理
@ -980,7 +930,7 @@ class BaseLayout
break;
default :
return DataReturn('数据类型未处理['.$params['data_type'].']', -1);
return DataReturn(MyLang('layout.base_data_type_not_handle_tips').'['.$params['data_type'].']', -1);
}
// 商品数据列表读取钩子
@ -1042,7 +992,7 @@ class BaseLayout
{
return $ret;
}
return DataReturn('无商品信息', -1);
return DataReturn(MyLang('layout.base_goods_empty_tips'), -1);
}
/**
@ -1060,215 +1010,29 @@ class BaseLayout
$data = [
// 公共
'common' => [
'name' => '系统页面',
'name' => MyLang('layout.page_system_title'),
'data' => [
[
'value' => 'home',
'name' => '商城首页',
],
[
'value' => 'goods_category',
'name' => '全部商品分类',
],
[
'value' => 'goods_search',
'name' => '商品搜索',
'tips' => '可带参数关键字、商品分类id、品牌id',
],
[
'value' => 'goods',
'name' => '单一商品',
],
[
'value' => 'cart',
'name' => '购物车',
],
[
'value' => 'user_center',
'name' => '用户中心',
],
[
'value' => 'user_order_list',
'name' => '我的订单',
],
[
'value' => 'user_order_aftersale_list',
'name' => '订单售后',
],
[
'value' => 'user_goods_favor_list',
'name' => '商品收藏',
],
[
'value' => 'user_address_list',
'name' => '我的地址',
],
[
'value' => 'user_goods_browse_list',
'name' => '我的足迹',
],
[
'value' => 'user_integral_list',
'name' => '我的积分',
],
[
'value' => 'user_message_list',
'name' => '我的消息',
],
[
'value' => 'user_answer_list',
'name' => '问答/留言',
],
[ 'value' => 'home', 'name' => MyLang('shop_home_title')],
[ 'value' => 'goods_category', 'name' => MyLang('layout.page_goods_category')],
[ 'value' => 'goods_search', 'name' => MyLang('layout.page_goods_search'), 'tips' => MyLang('layout.page_goods_search_tips')],
[ 'value' => 'goods', 'name' => MyLang('layout.page_goods')],
[ 'value' => 'cart', 'name' => MyLang('layout.page_cart')],
[ 'value' => 'user_center', 'name' => MyLang('layout.page_user_center')],
[ 'value' => 'user_order_list', 'name' => MyLang('layout.page_user_order_list')],
[ 'value' => 'user_order_aftersale_list', 'name' => MyLang('layout.page_user_order_aftersale_list')],
[ 'value' => 'user_goods_favor_list', 'name' => MyLang('layout.page_user_goods_favor_list')],
[ 'value' => 'user_address_list', 'name' => MyLang('layout.page_user_address_list')],
[ 'value' => 'user_goods_browse_list', 'name' => MyLang('layout.page_user_goods_browse_list')],
[ 'value' => 'user_integral_list', 'name' => MyLang('layout.page_user_integral_list')],
[ 'value' => 'user_message_list', 'name' => MyLang('layout.page_user_message_list')],
[ 'value' => 'user_answer_list', 'name' => MyLang('layout.page_user_answer_list')],
],
],
// 插件
'plugins' => [
'name' => '扩展模块',
'data' => [
[
'name' => '多商户',
'value' => 'shop',
'data' => [
[
'value' => 'home',
'name' => '所有店铺',
],
[
'value' => 'favor',
'name' => '店铺收藏',
],
],
],
[
'name' => '多门店',
'value' => 'realstore',
'data' => [
[
'value' => 'home',
'name' => '所有店铺',
],
[
'value' => 'favor',
'name' => '店铺收藏',
],
],
],
[
'name' => '博客',
'value' => 'blog',
'data' => [
[
'value' => 'home',
'name' => '博客首页',
],
[
'value' => 'search',
'name' => '博客搜索',
],
],
],
[
'name' => '品牌',
'value' => 'brand',
'data' => [
[
'value' => 'home',
'name' => '所有品牌',
],
],
],
[
'name' => '优惠券',
'value' => 'coupon',
'data' => [
[
'value' => 'home',
'name' => '领券中心',
],
[
'value' => 'user',
'name' => '我的优惠券',
],
],
],
[
'name' => '会员等级增强版',
'value' => 'membershiplevelvip',
'data' => [
[
'value' => 'home',
'name' => '会员首页',
],
[
'value' => 'user-center',
'name' => '会员中心',
],
[
'value' => 'user-poster',
'name' => '推广返利',
],
],
],
[
'name' => '分销',
'value' => 'distribution',
'data' => [
[
'value' => 'user-center',
'name' => '分销中心',
],
[
'value' => 'user-poster',
'name' => '推广返利',
],
],
],
[
'name' => '发票',
'value' => 'invoice',
'data' => [
[
'value' => 'user',
'name' => '我的发票',
],
[
'value' => 'order',
'name' => '订单开票',
],
],
],
[
'name' => '积分商城',
'value' => 'points',
'data' => [
[
'value' => 'home',
'name' => '首页',
],
],
],
[
'name' => '钱包',
'value' => 'wallet',
'data' => [
[
'value' => 'user',
'name' => '我的钱包',
],
],
],
[
'name' => '签到',
'value' => 'signin',
'data' => [
[
'value' => 'user',
'name' => '我的签到',
],
],
],
],
'name' => MyLang('layout.page_plugins_title'),
'data' => [],
],
];

View File

@ -1,45 +1,34 @@
<!-- 布局/模块导航-->
<div class="am-tabs renovation-tabs" data-am-tabs="{noSwipe: 1}" data-am-sticky>
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active" data-value="structure">
<a href="#renovation-tabs-structure">布局</a>
</li>
<li data-value="module">
<a href="#renovation-tabs-module">模块</a>
</li>
{{if is_array(MyLang('layout.view_base_tabs_list'))}}
{{foreach :MyLang('layout.view_base_tabs_list') as $k=>$v}}
<li {{if $k eq 'structure'}}class="am-active"{{/if}} data-value="{{$k}}">
<a href="#renovation-tabs-{{$k}}">{{$v}}</a>
</li>
{{/foreach}}
{{/if}}
</ul>
<div class="am-tabs-bd am-padding-sm">
<!-- 布局 -->
<div class="renovation-panel am-active" id="renovation-tabs-structure">
<div class="structure-drag scrollspy-nav">
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="100">100%</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="6:6">6 : 6</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="8:4">8 : 4</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="4:8">4 : 8</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="9:3">9 : 3</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="3:9">3 : 9</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="6:3:3">6 : 3 : 3</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="3:6:3">3 : 6 : 3</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="3:3:6">3 : 3 : 6</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="4:4:4">x 3</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="3:3:3:3">x 4</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="2:2:2:2:2:2">x 6</button>
{{if is_array(MyLang('layout.view_base_structure_list'))}}
{{foreach :MyLang('layout.view_base_structure_list') as $k=>$v}}
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="{{$k}}">{{$v}}</button>
{{/foreach}}
{{/if}}
</div>
</div>
<!-- 模块 -->
<div class="renovation-panel am-hide" id="renovation-tabs-module">
<div class="renovation-drag scrollspy-nav">
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="images">单图</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="many-images">多图</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="images-text">图文</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="images-magic-cube">图片魔方</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="video">视频</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="goods">商品</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="title">标题</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="custom">自定义html</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="border">辅助线</button>
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="height">辅助空白</button>
{{if is_array(MyLang('layout.view_base_module_list'))}}
{{foreach :MyLang('layout.view_base_module_list') as $k=>$v}}
<button type="button" draggable="true" class="am-btn am-btn-default am-radius am-btn-xs am-margin-xs" data-value="{{$k}}">{{$v}}</button>
{{/foreach}}
{{/if}}
</div>
</div>
</div>
@ -47,58 +36,73 @@
<!-- 拖拽容器-->
<div class="layout-container am-padding-sm am-margin-top-sm"
data-switch-on-text="开启"
data-switch-off-text="关闭"
data-edit-name="修改"
data-layout-set-title="布局设置"
data-layout-del-title="布局移除"
data-layout-content-set-tips="容器设置"
data-layout-content-tips="模块内容区域"
data-module-drag-title="拖拽排序"
data-module-set-title="模块设置"
data-module-del-title="模块移除"
data-module-not-exist-tips="模块未定义"
data-module-assembly-not-exist-tips="模块组件未定义"
data-type-event-not-exist-tips="类型事件未定义"
data-params-tips="参数值有误"
data-module-tab-tips="模块标记有误"
data-module-attr-tips="模块属性有误"
data-config-first-tips="请配置"
data-url-not-set-tips="未设置链接地址"
data-goods-category-name="商品分类"
data-brand-name="品牌"
data-keywords-name="关键字"
data-config-images-text-tips="请先添加图文并配置"
data-upload-images-or-title-tips="图片和标题必填一项"
data-upload-images-name="上传图片"
data-upload-images-tips="请上传图片"
data-config-images-tips="请先添加图片并配置"
data-upload-video-tips="请上传视频"
data-choice-goods-tips="请选择商品"
data-switch-on-text="{{:MyLang('open_title')}}"
data-switch-off-text="{{:MyLang('close_title')}}"
data-edit-name="{{:MyLang('modify_title')}}"
data-layout-set-title="{{:MyLang('layout.view_base_layout_set_title')}}"
data-layout-del-title="{{:MyLang('layout.view_base_layout_del_title')}}"
data-layout-content-set-tips="{{:MyLang('layout.view_base_layout_content_set_tips')}}"
data-layout-content-tips="{{:MyLang('layout.view_module_container_tips')}}"
data-module-drag-title="{{:MyLang('layout.view_base_module_drag_title')}}"
data-module-set-title="{{:MyLang('layout.view_base_module_set_title')}}"
data-module-del-title="{{:MyLang('layout.view_base_module_del_title')}}"
data-module-not-exist-tips="{{:MyLang('layout.view_base_module_not_exist_tips')}}"
data-module-assembly-not-exist-tips="{{:MyLang('layout.view_base_module_assembly_not_exist_tips')}}"
data-type-event-not-exist-tips="{{:MyLang('layout.view_base_type_event_not_exist_tips')}}"
data-params-tips="{{:MyLang('params_error_tips')}}"
data-module-tab-tips="{{:MyLang('layout.view_base_module_tab_tips')}}"
data-module-attr-tips="{{:MyLang('layout.view_base_module_attr_tips')}}"
data-config-first-tips="{{:MyLang('layout.view_base_config_first_tips')}}"
data-url-not-set-tips="{{:MyLang('layout.view_base_url_not_set_tips')}}"
data-goods-category-name="{{:MyLang('goods_category_title')}}"
data-brand-name="{{:MyLang('layout.view_popup_goods_search_tabs_brand')}}"
data-keywords-name="{{:MyLang('layout.view_module_title_keywords')}}"
data-config-images-text-tips="{{:MyLang('layout.view_base_config_images_text_tips')}}"
data-upload-images-or-title-tips="{{:MyLang('layout.view_base_upload_images_or_title_tips')}}"
data-upload-images-name="{{:MyLang('form_upload_images_title')}}"
data-upload-images-tips="{{:MyLang('form_upload_images_message')}}"
data-config-images-tips="{{:MyLang('layout.view_base_config_images_tips')}}"
data-upload-video-tips="{{:MyLang('form_upload_video_title')}}"
data-choice-goods-tips="{{:MyLang('layout.view_offcanvas_module_goods_not_choice')}}"
data-goods-data-empty-tips="{{:MyLang('goods_data_empty_tips')}}"
data-choice-goods-category-tips="{{:MyLang('form_goods_category_message')}}"
data-data-type-tips="数据类型有误"
data-main-title-tips="请填写主标题"
data-border-style-tips="请选择边线类型"
data-border-style-max-tips="请输入边线、最大10的数字"
data-height-max-tips="请输入高度、最大100的数字"
data-keywords-tips="请填写关键字"
data-before-choice-goods-tips="请先选择商品"
data-before-choice-goods-category-tips="请先选择商品分类"
data-before-choice-brand-tips="请先选择品牌"
data-before-input-keywords-tips="请先输入关键字1~30个字符"
data-before-choice-page-tips="请先选择页面"
data-before-choice-url-position-tips="请先选择链接位置"
data-before-config-goods-search-tips="请先配置商品搜索"
data-choice-url-tips="请选择跳转链接"
data-data-type-tips="{{:MyLang('data_type_error_tips')}}"
data-main-title-tips="{{:MyLang('layout.view_offcanvas_module_title_main_title_message')}}"
data-border-style-tips="{{:MyLang('layout.view_media_fixed_border_style_message')}}"
data-border-style-max-tips="{{:MyLang('layout.view_media_fixed_border_width_message')}}"
data-height-max-tips="{{:MyLang('layout.view_media_fixed_height_message')}}"
data-keywords-tips="{{:MyLang('layout.view_module_title_keywords_message')}}"
data-before-choice-goods-tips="{{:MyLang('layout.view_offcanvas_module_goods_not_choice')}}"
data-before-choice-goods-category-tips="{{:MyLang('layout.view_offcanvas_module_goods_category_not_choice')}}"
data-before-choice-brand-tips="{{:MyLang('layout.view_popup_goods_search_tabs_brand_message')}}"
data-before-input-keywords-tips="{{:MyLang('layout.view_popup_goods_search_keywords_tips')}}"
data-before-choice-page-tips="{{:MyLang('layout.view_base_before_choice_page_tips')}}"
data-before-choice-url-position-tips="{{:MyLang('layout.view_base_before_choice_url_position_tips')}}"
data-before-config-goods-search-tips="{{:MyLang('layout.view_base_before_config_goods_search_tips')}}"
data-choice-url-tips="{{:MyLang('layout.view_module_title_url_message')}}"
data-layout-reminder-title="{{:MyLang('reminder_title')}}"
data-layout-reminder-msg="移除后不可恢复、确定继续吗?"
data-layout-container-tips="布局拖放到该区域松开鼠标即可"
data-search-goods-tips="请搜索商品"
data-custom-url-name="自定义链接"
data-custom-url-tips="请至少填写一个地址"
data-data-show-modal-tips="请选择数据展示模式"
data-data-show-modal-error-tips="展示模式有误"
data-layout-reminder-msg="{{:MyLang('remove_confirm_tips')}}"
data-layout-container-tips="{{:MyLang('layout.view_base_layout_container_tips')}}"
data-search-goods-tips="{{:MyLang('layout.view_popup_goods_search_choice_init_tips')}}"
data-custom-url-name="{{:MyLang('layout.view_pages_tabs_custom_title')}}"
data-custom-url-tips="{{:MyLang('layout.view_base_custom_url_tips')}}"
data-data-show-modal-tips="{{:MyLang('layout.view_base_show_modal_not_choice_tips')}}"
data-data-show-modal-error-tips="{{:MyLang('layout.view_base_show_modal_error_tips')}}"
data-images-text-font-size="{{:MyLang('layout.view_offcanvas_module_images_text_font_size')}}"
data-images-text-title="{{:MyLang('layout.view_offcanvas_module_images_text_title')}}"
data-images-text-margin-top="{{:MyLang('layout.view_offcanvas_module_images_text_margin_top')}}"
data-images-text-margin-right="{{:MyLang('layout.view_offcanvas_module_images_text_margin_right')}}"
data-images-text-margin-bottom="{{:MyLang('layout.view_offcanvas_module_images_text_margin_bottom')}}"
data-images-text-margin-left="{{:MyLang('layout.view_offcanvas_module_images_text_margin_left')}}"
data-images-text-margin-title-message="{{:MyLang('layout.view_offcanvas_module_images_text_margin_title_message')}}"
data-images-text-position-left="{{:MyLang('layout.view_offcanvas_module_images_text_position_left')}}"
data-images-text-position-center="{{:MyLang('layout.view_offcanvas_module_images_text_position_center')}}"
data-images-text-position-right="{{:MyLang('layout.view_offcanvas_module_images_text_position_right')}}"
data-images-text-desc="{{:MyLang('layout.view_offcanvas_module_images_text_desc')}}"
data-images-text-margin-desc-message="{{:MyLang('layout.view_offcanvas_module_images_text_margin_desc_message')}}"
data-images-text-font-size-title-message="{{:MyLang('layout.view_offcanvas_module_images_text_title_font_size_message')}}"
data-images-text-font-size-desc-message="{{:MyLang('layout.view_offcanvas_module_images_text_desc_font_size_message')}}"
data-base-module-not-config-tips="{{:MyLang('base_module_not_config_tips')}}"
>
{{if !empty($layout_data) and is_array($layout_data)}}
{{foreach $layout_data as $k=>$v}}
@ -106,9 +110,9 @@
<div class="layout-view {{if $v['status'] eq 0}}layout-view-hidden{{/if}}" data-value="{{$v.value}}">
<i class="layout-view-dragenter-icon am-icon-sort-asc am-icon-lg am-hide"></i>
<div class="layout-content-submit drag-submit">
<input type="checkbox" class="switch-checkbox" data-size="xs" data-on-color="success" data-off-color="warning" data-off-text="关闭" data-on-text="开启" {{if isset($v['status']) and $v['status'] eq 1}}checked="true"{{/if}} />
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-square-o layout-submit layout-submit-set"> 布局设置</button>
<button type="button" class="am-btn am-btn-danger am-radius am-btn-xs am-icon-trash-o layout-submit layout-submit-del"> 布局移除</button>
<input type="checkbox" class="switch-checkbox" data-size="xs" data-on-color="success" data-off-color="warning" data-off-text="{{:MyLang('close_title')}}" data-on-text="{{:MyLang('open_title')}}" {{if isset($v['status']) and $v['status'] eq 1}}checked="true"{{/if}} />
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-square-o layout-submit layout-submit-set"> {{:MyLang('layout.view_base_layout_set_title')}}</button>
<button type="button" class="am-btn am-btn-danger am-radius am-btn-xs am-icon-trash-o layout-submit layout-submit-del"> {{:MyLang('layout.view_base_layout_del_title')}}</button>
</div>
<div class="layout-content-children {{if !empty($v['config']) and !empty($v['config']['frontend_config'])}}{{$v.config.frontend_config.ent}}{{/if}}" data-json="{{if !empty($v['config'])}}{{:urlencode(base64_encode(json_encode($v['config'])))}}{{/if}}" style="{{if !empty($v['config']) and !empty($v['config']['frontend_config'])}}{{$v.config.frontend_config.style}}{{/if}}{{if !empty($v['config']['style_background_images'])}}background-image:url({{$v.config.style_background_images}});{{/if}}">
{{foreach $v.children as $ks=>$vs}}
@ -125,7 +129,7 @@
{{/if}}
{{/foreach}}
{{else /}}
<div class="layout-container-tips">布局拖放到该区域松开鼠标即可</div>
<div class="layout-container-tips">{{:MyLang('layout.view_base_layout_container_tips')}}</div>
{{/if}}
</div>
<!-- 侧边栏 - 布局 - 容器设置 -->

View File

@ -17,9 +17,9 @@
<ul class="goods-category-select-3 am-scrollable-vertical am-list am-list-border am-fl am-margin-left-lg am-hide" data-level="3"></ul>
</div>
<p class="already-select-tips am-margin-top-lg am-hide">
<span>您当前选择的商品类别是:</span>
<span>{{:MyLang('layout.view_goods_category_choice_title')}}</span>
<strong></strong>
</p>
{{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 无商品分类</div>
<div class="table-no"><i class="am-icon-warning"></i> {{:MyLang('layout.view_goods_category_empty_tips')}}</div>
{{/if}}

View File

@ -1,15 +1,15 @@
<div class="layout-content-container {{if !empty($vs['config']) and !empty($vs['config']['frontend_config'])}}{{$vs.config.frontend_config.ent}}{{/if}}" data-json="{{if !empty($vs['config'])}}{{:urlencode(base64_encode(json_encode($vs['config'])))}}{{/if}}" style="{{if !empty($vs['config']) and !empty($vs['config']['frontend_config'])}}{{$vs.config.frontend_config.style}}{{/if}}{{if !empty($vs['config']['style_background_images'])}}background-image:url({{$vs.config.style_background_images}});{{/if}}">
<div class="layout-content-submit-container">
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-gear layout-submit layout-content-submit-set"></button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-gear layout-submit layout-content-submit-set" data-am-popover="{content: '{{:MyLang('layout.view_base_layout_content_set_tips')}}', trigger: 'hover focus', theme: 'sm'}"></button>
</div>
<div class="layout-content">
{{if !empty($vs['children']) and is_array($vs['children'])}}
{{foreach $vs.children as $kss=>$vss}}
<div class="module-view">
<div class="module-view-submit-container" data-value="{{$vss.value}}" data-index="{{$k}}{{$ks}}{{$kss}}" data-doc=".module-content-index-{{$vss.value}}-{{$k}}{{$ks}}{{$kss}}">
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-reorder layout-submit module-view-submit-drag"></button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-folder-open-o layout-submit module-view-submit-set"></button>
<button type="button" class="am-btn am-btn-danger am-radius am-btn-xs am-icon-trash-o layout-submit module-view-submit-del"></button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-reorder layout-submit module-view-submit-drag" data-am-popover="{content: '{{:MyLang('layout.view_base_module_drag_title')}}', trigger: 'hover focus', theme: 'sm'}"></button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-folder-open-o layout-submit module-view-submit-set" data-am-popover="{content: '{{:MyLang('layout.view_base_module_set_title')}}', trigger: 'hover focus', theme: 'sm'}"></button>
<button type="button" class="am-btn am-btn-danger am-radius am-btn-xs am-icon-trash-o layout-submit module-view-submit-del" data-am-popover="{content: '{{:MyLang('layout.view_base_module_del_title')}}', trigger: 'hover focus', theme: 'sm'}"></button>
</div>
<div class="module-content module-content-type-{{$vss.value}} module-content-index-{{$vss.value}}-{{$k}}{{$ks}}{{$kss}}" data-json="{{if !empty($vss['config'])}}{{:urlencode(base64_encode(json_encode($vss['config'])))}}{{/if}}">
{{if !empty($vss['config'])}}
@ -577,7 +577,7 @@
</div>
{{/foreach}}
{{else /}}
<div class="layout-content-tips">模块内容区域</div>
<div class="layout-content-tips">{{:MyLang('layout.view_module_container_tips')}}</div>
{{/if}}
</div>
</div>

View File

@ -1,5 +1,5 @@
<div class="am-form-group am-form-group-refreshing">
<label>展示模式</label>
<label>{{:MyLang('layout.view_show_model_title')}}</label>
<div class="config-view-show-style">
{{foreach $goods_view_list_show_style as $k=>$v}}
<label class="am-checkbox-inline">

View File

@ -1,32 +1,32 @@
<!-- 宽度 -->
{{include file="../../../layout/view/public/style/width" key="[key]" required="[required]" width="1200" name="图片容器宽度" /}}
{{include file="../../../layout/view/public/style/width" key="[key]" required="[required]" /}}
<!-- 高度 -->
{{include file="../../../layout/view/public/style/height" key="[key]" required="[required]" height="800" name="图片容器高度" /}}
{{include file="../../../layout/view/public/style/height" key="[key]" required="[required]" /}}
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="[key]" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="[key]" required="" /}}
<!-- 是否高度100% -->
<div class="am-form-group am-form-group-refreshing">
<label class="am-block">是否宽度100%</label>
<label class="am-block">{{:MyLang('layout.view_media_fixed_width_100_title')}}</label>
<input name="style[key]_is_width" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch />
</div>
<!-- 是否高度100% -->
<div class="am-form-group am-form-group-refreshing">
<label class="am-block">是否高度100%</label>
<label class="am-block">{{:MyLang('layout.view_media_fixed_height_100_title')}}</label>
<input name="style[key]_is_height" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch />
</div>
<!-- 是否居中 -->
<div class="am-form-group am-form-group-refreshing">
<label class="am-block">是否居中</label>
<label class="am-block">{{:MyLang('layout.view_media_fixed_center_title')}}</label>
<input name="style[key]_is_auto" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch />
</div>
<!-- 是否铺满容器 -->
<div class="am-form-group am-form-group-refreshing">
<label class="am-block">是否铺满容器</label>
<label class="am-block">{{:MyLang('layout.view_media_fixed_cover_title')}}</label>
<input name="style[key]_is_cover" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch />
</div>

View File

@ -1,9 +1,9 @@
<div class="am-form-group am-form-group-refreshing">
<label>行展示数量</label>
<label>{{:MyLang('layout.view_show_row_number_title')}}</label>
<div class="am-input-group am-input-group-sm group-list-number-width">
<input type="number" data-is-clearout="0" placeholder="小屏" name="view_list_number_sm" min="0" max="12" data-validation-message="小屏最大12" value="2" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="中屏" name="view_list_number_md" min="0" max="12" data-validation-message="中屏最大12" value="5" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="大屏" name="view_list_number_lg" min="0" max="12" data-validation-message="大屏最大12" value="5" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_show_row_number_sm_placeholder')}}" name="view_list_number_sm" min="0" max="12" data-validation-message="{{:MyLang('layout.view_show_row_number_sm_message')}}" value="2" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_show_row_number_md_placeholder')}}" name="view_list_number_md" min="0" max="12" data-validation-message="{{:MyLang('layout.view_show_row_number_md_message')}}" value="5" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_show_row_number_lg_placeholder')}}" name="view_list_number_lg" min="0" max="12" data-validation-message="{{:MyLang('layout.view_show_row_number_lg_message')}}" value="5" class="am-form-field" />
<span class="am-input-group-label"></span>
</div>
</div>

View File

@ -6,13 +6,13 @@
<form class="am-form" action="false">
<div data-am-widget="tabs" class="am-tabs am-tabs-d2 am-margin-0" data-am-tabs="{noSwipe: 1}">
<ul class="am-tabs-nav am-cf">
<li class="am-active"><a href="[data-tab-panel-0]">系统页面</a></li>
<li><a href="[data-tab-panel-1]">扩展模块</a></li>
<li><a href="[data-tab-panel-2]">自定义链接</a></li>
<li class="am-active"><a href="[data-tab-panel-0]">{{:MyLang('layout.view_pages_tabs_system_title')}}</a></li>
<li><a href="[data-tab-panel-1]">{{:MyLang('layout.view_pages_tabs_plugins_title')}}</a></li>
<li><a href="[data-tab-panel-2]">{{:MyLang('layout.view_pages_tabs_custom_title')}}</a></li>
</ul>
<div class="am-tabs-bd">
<div data-tab-panel-0 class="am-tab-panel am-padding-0 am-active">
<ul class="am-scrollable-vertical am-list am-list-border am-text-left">
<ul class="content am-scrollable-vertical am-list am-list-border am-text-left">
{{foreach $pages_list.common.data as $ks=>$vs}}
<li class="page-{{$vs.value}}">
<a href="javascript:;" class="am-text-truncate" data-value="{{$vs.value}}" data-name="{{$vs.name}}">
@ -24,75 +24,57 @@
</ul>
</div>
<div data-tab-panel-1 class="am-tab-panel am-padding-0">
<div class="am-scrollable-vertical">
{{foreach $pages_list.plugins.data as $k=>$v}}
<section data-am-widget="accordion" class="am-accordion am-accordion-default" data-am-accordion='{ "multiple": true }'>
<dl class="am-accordion-item am-active">
<dt class="am-accordion-title">{{$v.name}}</dt>
<dd class="am-accordion-bd am-collapse am-in">
<div class="am-accordion-content am-padding-0">
<ul class="am-list am-list-border am-text-left am-margin-bottom-0">
{{foreach $v.data as $ks=>$vs}}
<li class="page-plugins-{{$v.value}}-{{$vs.value}}">
<a href="javascript:;" class="am-text-truncate" data-value="plugins-{{$v.value}}-{{$vs.value}}" data-name="{{$v.name}}-{{$vs.name}}">
<span>{{$vs.name}}</span>
<i class="am-icon-check am-fr am-hide"></i>
</a>
</li>
{{/foreach}}
</ul>
</div>
</dd>
</dl>
</section>
{{/foreach}}
<div class="content am-scrollable-vertical">
{{if empty($pages_list['plugins']['data'])}}
{{include file="public/not_data" /}}
{{else /}}
{{foreach $pages_list.plugins.data as $k=>$v}}
<section data-am-widget="accordion" class="am-accordion am-accordion-default" data-am-accordion='{ "multiple": true }'>
<dl class="am-accordion-item am-active">
<dt class="am-accordion-title">{{$v.name}}</dt>
<dd class="am-accordion-bd am-collapse am-in">
<div class="am-accordion-content am-padding-0">
<ul class="am-list am-list-border am-text-left am-margin-bottom-0">
{{foreach $v.data as $ks=>$vs}}
<li class="page-plugins-{{$v.value}}-{{$vs.value}}">
<a href="javascript:;" class="am-text-truncate" data-value="plugins-{{$v.value}}-{{$vs.value}}" data-name="{{$v.name}}-{{$vs.name}}">
<span>{{$vs.name}}</span>
<i class="am-icon-check am-fr am-hide"></i>
</a>
</li>
{{/foreach}}
</ul>
</div>
</dd>
</dl>
</section>
{{/foreach}}
{{/if}}
</div>
</div>
<div data-tab-panel-2 class="am-tab-panel am-padding-0">
<div class="am-scrollable-vertical">
<div class="am-alert am-radius am-margin-top-0 am-text-left am-margin-bottom-0">
<div>
<p><strong>WEB端</strong></p>
<div class="am-padding-left-lg">
<p>1. 以http:开头</p>
</div>
<div class="content am-scrollable-vertical">
{{if is_array(MyLang('layout.view_pages_tabs_custom_tips'))}}
<div class="am-alert am-radius am-margin-top-0 am-text-left am-margin-bottom-0">
{{foreach :MyLang('layout.view_pages_tabs_custom_tips') as $k=>$v}}
<div {{if $k gt 0}}class="am-margin-top-xs"{{/if}}>
<p><strong>{{$v.name}}</strong></p>
{{if !empty($v['item'])}}
<div class="am-padding-left-lg">
{{foreach $v.item as $vs}}
<p>{{$vs}}</p>
{{/foreach}}
{{if !empty($v['tips']) and $v['type'] eq 'mini' and !empty($site_store_links) and !empty($site_store_links['app_mini_pages'])}}
<p>
<a href="{{$site_store_links.app_mini_pages}}" target="_blank">{{$v.tips}} <i class="am-icon-external-link"></i></a>
</p>
{{/if}}
</div>
{{/if}}
</div>
{{/foreach}}
</div>
<div class="am-margin-top-xs">
<p><strong>小程序或APP内部地址</strong></p>
<div class="am-padding-left-lg">
<p>1. 小程序以/pages开始</p>
<p>2. 例如:/pages/user/user</p>
<p>3. 支持带参数 ?x=xx</p>
{{if !empty($site_store_links) and !empty($site_store_links['app_mini_pages'])}}
<p>
<a href="{{$site_store_links.app_mini_pages}}" target="_blank">小程序页面地址配置说明 <i class="am-icon-external-link"></i></a>
</p>
{{/if}}
</div>
</div>
<div class="am-margin-top-xs">
<p><strong>打开外部小程序</strong></p>
<div class="am-padding-left-lg">
<p>1. 以appid://开头</p>
<p>2. 例如appid://wx88888888</p>
</div>
</div>
<div class="am-margin-top-xs">
<p><strong>拨打电话</strong></p>
<div class="am-padding-left-lg">
<p>1. 以tel://开头</p>
<p>2. 例如tel://wx13222222222</p>
</div>
</div>
<div class="am-margin-top-xs">
<p><strong>跳转原生地图查看指定位置</strong></p>
<div class="am-padding-left-lg">
<p>1. 以map://开头</p>
<p>2. 例如map://名称|地址|经度|纬度</p>
<p>3. 示例map://ShopXO|上海浦东新区张江高科技园区XXX号|121.626444|31.20843</p>
</div>
</div>
</div>
{{/if}}
<div class="pages-custom-url-container am-padding-sm">
{{foreach :MyLang('common_platform_type') as $v}}
<div class="am-input-group am-input-group-sm">

View File

@ -4,25 +4,25 @@
<span data-am-modal-close class="am-close am-close-alt am-icon-times"></span>
<form class="am-form am-padding-sm am-text-left form-validation-module-modal-rolling-config" request-type="sync" request-value="FormBackModuleModalRollingConfig">
<div class="am-form-group am-form-group-refreshing">
<label>数据项宽度<span class="am-form-group-label-tips">默认200</span></label>
<label>{{:MyLang('layout.view_module_rolling_config_item_width')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_module_rolling_config_item_width_tips')}}</span></label>
<div class="am-input-group am-input-group-sm">
<input type="number" data-is-clearout="0" placeholder="数据项宽度" name="item_width" min="0" max="600" data-validation-message="数据项宽度最大600" value="200" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_module_rolling_config_item_width')}}" name="item_width" min="0" max="600" data-validation-message="{{:MyLang('layout.view_module_rolling_config_item_width_message')}}" value="200" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<label>数据项间距</label>
<label>{{:MyLang('layout.view_module_rolling_config_item_margin')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" data-is-clearout="0" placeholder="数据项间距" name="item_margin" min="0" max="100" data-validation-message="数据项间距最大100" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_module_rolling_config_item_margin')}}" name="item_margin" min="0" max="100" data-validation-message="{{:MyLang('layout.view_module_rolling_config_item_margin_message')}}" value="" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<label class="am-block">是否自动播放</label>
<label class="am-block">{{:MyLang('layout.view_module_rolling_config_is_auto_play')}}</label>
<input name="is_auto_play" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch />
</div>
<div class="am-form-group am-form-group-refreshing">
<label class="am-block">展示导航点</label>
<label class="am-block">{{:MyLang('layout.view_module_rolling_config_is_nav_dot')}}</label>
<input name="is_nav_dot" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch />
</div>
<div class="am-margin-top-sm">

View File

@ -4,17 +4,26 @@
<span data-am-modal-close class="am-close am-close-alt am-icon-times"></span>
<form class="am-form am-padding-sm am-text-left form-validation-module-modal-title-keywords" request-type="sync" request-value="FormBackModuleModalTitleKeywords">
<!-- 关键字 -->
{{include file="../../../layout/view/public/style/input_color" key="_keywords" title="关键字" placeholder="关键字" minlength="1" maxlength="8" message="关键字最多1~8个字符" value="" required="required" color_value="" tips-must="-must" tips-msg="必填" /}}
<div class="am-form-group am-form-group-refreshing">
<label>{{:MyLang('layout.view_module_title_keywords')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-input-group am-input-group-sm">
<input type="text" placeholder="{{:MyLang('layout.view_module_title_keywords')}}" name="content_keywords" minlength="1" maxlength="8" data-validation-message="{{:MyLang('layout.view_module_keywords_keywords_message')}}" value="" class="am-form-field" required />
<input type="hidden" name="style_keywords_color" value="" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color_keywords" data-position="fixed" data-input-tag=".module-style-color_keywords" data-color-tag="input[name='style_keywords_color']" data-color-style="background-color|border-color">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</a>
</div>
</div>
<!-- 关键字链接 -->
<div class="am-form-group am-form-group-refreshing">
<label>链接地址</label>
<label>{{:MyLang('layout.view_module_title_url')}}</label>
<div class="form-view-choice-container am-margin-top-xs">
<input type="hidden" name="content_to_type" value="" />
<input type="hidden" name="content_to_name" value="" />
<input type="hidden" name="content_to_value" value="" />
<div class="form-view-choice-container-content">
<a href="javascript:;" class="form-view-choice-container-submit">请选择跳转链接</a>
<a href="javascript:;" class="form-view-choice-container-submit">{{:MyLang('layout.view_module_title_url_message')}}</a>
</div>
</div>
</div>

View File

@ -5,22 +5,22 @@
<form class="am-form form-validation-layout-config" request-type="sync" request-value="FormBackLayoutConfig">
<!-- 基础样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">基础样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_offcanvas_layout_base_title')}}</div>
<div class="am-panel-bd">
<!-- 背景图 -->
<div class="am-form-group am-form-file am-form-group-refreshing">
<label class="am-block">背景图</label>
<label class="am-block">{{:MyLang('layout.view_offcanvas_layout_background_images')}}</label>
<ul class="plug-file-upload-view layout-style-background-images-view" data-form-name="style_background_images" data-max-number="1" data-delete="1" data-dialog-type="images"></ul>
<div>
<span class="plug-file-upload-submit" data-view-tag="ul.layout-style-background-images-view">+ {{:MyLang('form_upload_images_title')}}</span>
<label class="am-checkbox-inline am-margin-left-sm">
<input type="checkbox" name="style_background_images_position_center" value="1" data-am-ucheck /> 居中
<input type="checkbox" name="style_background_images_position_center" value="1" data-am-ucheck /> {{:MyLang('layout.view_offcanvas_layout_background_images_center')}}
</label>
<label class="am-checkbox-inline">
<input type="checkbox" name="style_background_images_size_cover" value="1" data-am-ucheck /> 铺满
<input type="checkbox" name="style_background_images_size_cover" value="1" data-am-ucheck /> {{:MyLang('layout.view_offcanvas_layout_background_images_cover')}}
</label>
<label class="am-checkbox-inline">
<input type="checkbox" name="style_background_images_no_repeat" value="1" data-am-ucheck /> 不重复
<input type="checkbox" name="style_background_images_no_repeat" value="1" data-am-ucheck /> {{:MyLang('layout.view_offcanvas_layout_background_images_no_repeat')}}
</label>
</div>
</div>
@ -29,21 +29,21 @@
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
<!-- 边线颜色 -->
{{include file="../../../layout/view/public/style/color" key="_border" required="" name="边线颜色" /}}
{{include file="../../../layout/view/public/style/border_color" key="_border" required="" /}}
<!-- 系统标准限宽 -->
<label class="am-checkbox-inline">
<input type="checkbox" name="style_width_max_limit_value" value="1" data-am-ucheck /> 系统标准限宽(1000px、1200px)
<input type="checkbox" name="style_width_max_limit_value" value="1" data-am-ucheck /> {{:MyLang('layout.view_style_width_max_limit_value')}}
</label>
</div>
</div>
<!-- 中屏样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">中屏样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_screen_md')}}</div>
<div class="am-panel-bd">
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="30" key="_md" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="_md" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="_md" /}}
@ -61,10 +61,10 @@
<!-- 小屏样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">小屏样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_screen_sm')}}</div>
<div class="am-panel-bd">
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="30" key="_sm" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="_sm" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="_sm" /}}
@ -82,10 +82,10 @@
<!-- 大屏样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">大屏样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_screen_lg')}}</div>
<div class="am-panel-bd">
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="30" key="_lg" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="_lg" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="_lg" /}}

View File

@ -5,7 +5,7 @@
<form class="am-form form-validation-module-offcanvas-border" request-type="sync" request-value="FormBackModuleConfigBorder">
<!-- 样式设置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">样式设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_setup')}}</div>
<div class="am-panel-bd">
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style" key="" required="required" /}}

View File

@ -4,9 +4,9 @@
<div class="am-offcanvas-content am-padding-0">
<form class="am-form form-validation-module-offcanvas-custom" request-type="sync" request-value="FormBackModuleConfigCustom">
<div class="am-panel am-panel-default">
<div class="am-panel-hd">内容设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_content_setup')}}</div>
<div class="am-panel-bd">
<textarea name="custom" rows="35" placeholder="自定义html代码"></textarea>
<textarea name="custom" rows="35" placeholder="{{:MyLang('layout.view_content_custom_html')}}"></textarea>
</div>
</div>
<div class="form-submit-container">

View File

@ -6,17 +6,17 @@
<input type="hidden" name="goods_data_type" value="goods" />
<div data-am-widget="tabs" class="am-tabs am-tabs-d2 am-margin-0" data-am-tabs="{noSwipe: 1}">
<ul class="am-tabs-nav am-cf">
<li class="am-active"><a href="[data-tab-panel-0]" data-value="goods">选择商品</a></li>
<li><a href="[data-tab-panel-1]" data-value="category">选择分类</a></li>
<li class="am-active"><a href="[data-tab-panel-0]" data-value="goods">{{:MyLang('layout.view_offcanvas_module_goods_tabs_goods_title')}}</a></li>
<li><a href="[data-tab-panel-1]" data-value="category">{{:MyLang('layout.view_offcanvas_module_goods_tabs_category_title')}}</a></li>
</ul>
<div class="am-tabs-bd am-padding-sm">
<div data-tab-panel-0 class="am-tab-panel am-padding-0 am-active">
<input type="hidden" name="goods_ids" value="" />
<div class="form-view-choice-container" data-value="goods">
<div class="form-view-choice-container-content">
<a href="javascript:;" class="form-view-choice-container-submit">请选择商品</a>
<a href="javascript:;" class="form-view-choice-container-submit">{{:MyLang('layout.view_offcanvas_module_goods_not_choice')}}</a>
<span class="am-form-group-label-tips-must">*</span>
<span class="text-tips am-margin-left-sm">最多添加50件商品</span>
<span class="text-tips am-margin-left-sm">{{:MyLang('layout.view_offcanvas_module_goods_choice_tips')}}</span>
</div>
</div>
<ul class="config-goods-list am-cf am-margin-top-sm"></ul>
@ -27,33 +27,33 @@
<div class="form-view-choice-container am-margin-top-xs offcanvas-config-goods-category-container" data-value="category">
<input type="hidden" name="goods_category_value" value="" />
<div class="form-view-choice-container-content">
<a href="javascript:;" class="form-view-choice-container-submit">请选择商品分类</a>
<a href="javascript:;" class="form-view-choice-container-submit">{{:MyLang('layout.view_offcanvas_module_goods_category_not_choice')}}</a>
</div>
</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<label>排序类型<span class="am-form-group-label-tips">默认综合</span></label>
<select name="goods_order_by_type" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="请选择商品排序类型">
<label>{{:MyLang('layout.view_offcanvas_module_goods_sort_type')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_offcanvas_module_goods_sort_type_tips')}}</span></label>
<select name="goods_order_by_type" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('layout.view_offcanvas_module_goods_sort_type_message')}}">
{{foreach $goods_order_by_type_list as $k=>$v}}
<option value="{{$k}}" {{if $k eq 0}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
<div class="am-alert am-alert-warning" data-am-alert>
<button type="button" class="am-close">&times;</button>
<p>综合为:热度->销量->最新 进行 降序(desc)排序</p>
<p>{{:MyLang('layout.view_offcanvas_module_goods_sort_type_alert')}}</p>
</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<label>排序规则<span class="am-form-group-label-tips">默认降序(desc)</span></label>
<select name="goods_order_by_rule" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="请选择排序规则">
<label>{{:MyLang('layout.view_offcanvas_module_goods_sort_rule')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_offcanvas_module_goods_sort_rule_tips')}}</span></label>
<select name="goods_order_by_rule" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('layout.view_offcanvas_module_goods_sort_rule_message')}}">
{{foreach $goods_order_by_rule_list as $k=>$v}}
<option value="{{$k}}" {{if $k eq 0}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="am-form-group am-form-group-refreshing">
<label>数量</label>
<input type="number" data-is-clearout="0" placeholder="数量" name="goods_order_limit_number" min="0" max="50" data-validation-message="数量最大50" value="10" class="am-radius am-form-field" />
<label>{{:MyLang('layout.view_offcanvas_module_goods_limit_number')}}</label>
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_offcanvas_module_goods_limit_number')}}" name="goods_order_limit_number" min="0" max="50" data-validation-message="{{:MyLang('layout.view_offcanvas_module_goods_limit_number_message')}}" value="10" class="am-radius am-form-field" />
</div>
</div>
</div>
@ -61,7 +61,7 @@
<!-- 内容样式 -->
<div class="am-panel am-panel-default am-margin-top-lg">
<div class="am-panel-hd">内容样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_content')}}</div>
<div class="am-panel-bd">
<!-- 展示模式 -->
{{include file="../../../layout/view/public/content/goods_show_style" /}}
@ -73,7 +73,7 @@
{{include file="../../../layout/view/public/style/background_color" key="_module" required="" /}}
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="_module" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="_module" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="_module" /}}
@ -91,10 +91,10 @@
<!-- 商品样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">商品样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_offcanvas_module_goods_style')}}</div>
<div class="am-panel-bd">
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style" key="" required="" /}}
@ -112,7 +112,7 @@
<!-- 图片样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">图片样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_images')}}</div>
<div class="am-panel-bd">
<!-- 媒体样式 -->
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}

View File

@ -5,13 +5,13 @@
<form class="am-form form-validation-module-offcanvas-height" request-type="sync" request-value="FormBackModuleConfigHeight">
<!-- 样式设置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">样式设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_setup')}}</div>
<div class="am-panel-bd">
<!-- 背景色 -->
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
<!-- 高度 -->
{{include file="../../../layout/view/public/style/height" key="" required="required" height="100" name="高度" /}}
{{include file="../../../layout/view/public/style/height" key="" /}}
<!-- 外边距 -->
{{include file="../../../layout/view/public/style/margin_4" key="" /}}

View File

@ -4,10 +4,10 @@
<div class="am-offcanvas-content am-padding-0">
<form class="am-form form-validation-module-offcanvas-images" request-type="sync" request-value="FormBackModuleConfigImages">
<div class="am-panel am-panel-default">
<div class="am-panel-hd">内容设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_content_setup')}}</div>
<div class="am-panel-bd">
<div class="am-form-group am-form-file am-form-group-refreshing">
<label class="am-block">图片<span class="am-form-group-label-tips-must">*</span></label>
<label class="am-block">{{:MyLang('layout.view_offcanvas_module_images')}}<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view module-images-type-images-view" data-form-name="content_images" data-max-number="1" data-delete="0" data-dialog-type="images">
<li>
<input type="text" name="content_images" data-validation-message="{{:MyLang('form_upload_images_message')}}" value="" required />
@ -17,13 +17,13 @@
<div class="plug-file-upload-submit" data-view-tag="ul.module-images-type-images-view">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<label>链接地址</label>
<label>{{:MyLang('layout.view_module_title_url')}}</label>
<div class="form-view-choice-container am-margin-top-xs">
<input type="hidden" name="content_to_type" value="" />
<input type="hidden" name="content_to_name" value="" />
<input type="hidden" name="content_to_value" value="" />
<div class="form-view-choice-container-content">
<a href="javascript:;" class="form-view-choice-container-submit">请选择跳转链接</a>
<a href="javascript:;" class="form-view-choice-container-submit">{{:MyLang('layout.view_module_title_url_message')}}</a>
</div>
</div>
</div>
@ -32,13 +32,13 @@
<!-- 样式设置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">样式设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_setup')}}</div>
<div class="am-panel-bd">
<!-- 背景色 -->
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
@ -56,7 +56,7 @@
<!-- 图片样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">图片样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_images')}}</div>
<div class="am-panel-bd">
<!-- 媒体样式 -->
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}

View File

@ -5,7 +5,7 @@
<form class="am-form form-validation-module-offcanvas-images-magic-cube" request-type="sync" request-value="FormBackModuleConfigImagesMagicCube">
<!-- 展示模式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">展示模式<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-hd">{{:MyLang('layout.view_show_model_title')}}<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-bd">
{{include file="../../../layout/view/public/content/images_magic_cube_show_style" /}}
</div>
@ -13,19 +13,19 @@
<!-- 内容 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">内容设置<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-hd">{{:MyLang('layout.view_content_setup')}}<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-bd">
<div class="config-images-magic-cube-container"></div>
<p class="am-text-center am-padding-vertical-sm am-text-grey tips-msg">请先选择展示模式</p>
<p class="am-text-center am-padding-vertical-sm am-text-grey tips-msg">{{:MyLang('layout.view_show_model_not_choice_tips')}}</p>
</div>
</div>
<!-- 样式设置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">样式设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_setup')}}</div>
<div class="am-panel-bd">
<!-- 圆角、元素样式 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="_item" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="_item" required="" /}}
<!-- 外边距、js取值使用 -->
{{include file="../../../layout/view/public/style/margin" key="" /}}

View File

@ -5,30 +5,31 @@
<form class="am-form form-validation-module-offcanvas-images-text" request-type="sync" request-value="FormBackModuleConfigImagesText">
<!-- 展示模式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">展示模式<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-hd">{{:MyLang('layout.view_show_model_title')}}<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-bd">
<!-- 展示模式 -->
{{include file="../../../layout/view/public/content/images_text_show_style" /}}
</div>
</div>
<!-- 内容 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">内容设置<span class="am-form-group-label-tips-must">图片和标题必填一项</span></div>
<div class="am-panel-hd">{{:MyLang('layout.view_content_setup')}}<span class="am-form-group-label-tips-must">{{:MyLang('layout.view_offcanvas_module_images_text_tips')}}</span></div>
<div class="am-panel-bd">
<div class="config-images-text-container"></div>
<div class="business-operations-submit am-text-center am-block config-images-text-item-add">+添加图文</div>
<div class="business-operations-submit am-text-center am-block config-images-text-item-add">+ {{:MyLang('layout.view_offcanvas_module_images_add')}}</div>
</div>
</div>
<!-- 样式设置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">样式设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_setup')}}</div>
<div class="am-panel-bd">
<!-- 背景色 -->
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
@ -46,7 +47,7 @@
<!-- 图片样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">图片样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_images')}}</div>
<div class="am-panel-bd">
<!-- 媒体样式 -->
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}

View File

@ -5,7 +5,7 @@
<form class="am-form form-validation-module-offcanvas-many-images" request-type="sync" request-value="FormBackModuleConfigManyImages">
<!-- 展示模式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">展示模式<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-hd">{{:MyLang('layout.view_show_model_title')}}<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-bd">
<!-- 展示模式 -->
{{include file="../../../layout/view/public/content/many_images_show_style" /}}
@ -14,22 +14,22 @@
<!-- 内容 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">内容设置<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-hd">{{:MyLang('layout.view_content_setup')}}<span class="am-form-group-label-tips-must">*</span></div>
<div class="am-panel-bd">
<div class="config-many-images-container"></div>
<div class="business-operations-submit am-text-center am-block config-many-images-item-add">+添加图片</div>
<div class="business-operations-submit am-text-center am-block config-many-images-item-add">+{{:MyLang('layout.view_offcanvas_module_images_add')}}</div>
</div>
</div>
<!-- 样式设置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">样式设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_setup')}}</div>
<div class="am-panel-bd">
<!-- 背景色 -->
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
@ -47,7 +47,7 @@
<!-- 图片样式 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">图片样式</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_images')}}</div>
<div class="am-panel-bd">
<!-- 媒体样式 -->
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}

View File

@ -5,32 +5,59 @@
<form class="am-form form-validation-module-offcanvas-title" request-type="sync" request-value="FormBackModuleConfigTitle">
<!-- 主内容 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">主内容</div>
<div class="am-panel-hd">{{:MyLang('layout.view_content_setup')}}</div>
<div class="am-panel-bd">
<!-- 主标题 -->
{{include file="../../../layout/view/public/style/input_color" key="_title" title="主标题" placeholder="主标题" minlength="1" maxlength="8" message="主标题最多1~8个字符" value="" required="required" color_value="" tips-must="-must" tips-msg="必填" /}}
<div class="am-form-group am-form-group-refreshing">
<label>{{:MyLang('layout.view_offcanvas_module_title_main_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<div class="am-input-group am-input-group-sm">
<input type="text" placeholder="{{:MyLang('layout.view_offcanvas_module_title_main_title')}}" name="content_title" minlength="1" maxlength="8" data-validation-message="{{:MyLang('layout.view_offcanvas_module_title_main_title_message')}}" value="" class="am-form-field" required />
<input type="hidden" name="style_title_color" value="" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color_title" data-position="fixed" data-input-tag=".module-style-color_title" data-color-tag="input[name='style_title_color']" data-color-style="background-color|border-color">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</a>
</div>
</div>
<!-- 副标题 -->
{{include file="../../../layout/view/public/style/input_color" key="_title_vice" title="副标题" placeholder="副标题" minlength="0" maxlength="16" message="副标题最多16个字符" value="" required="" color_value="" tips-must="" tips-msg="空则不显示" /}}
<div class="am-form-group am-form-group-refreshing">
<label>{{:MyLang('layout.view_offcanvas_module_title_vice_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="text" placeholder="{{:MyLang('layout.view_offcanvas_module_title_vice_title')}}" name="content_title_vice" minlength="0" maxlength="16" data-validation-message="{{:MyLang('layout.view_offcanvas_module_title_vice_title_message')}}" value="" class="am-form-field" />
<input type="hidden" name="style_title_vice_color" value="" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color_title_vice" data-position="fixed" data-input-tag=".module-style-color_title_vice" data-color-tag="input[name='style_title_vice_color']" data-color-style="background-color|border-color">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</a>
</div>
</div>
</div>
</div>
<!-- 右侧按钮 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">右侧按钮<span class="am-form-group-label-tips">空则不显示</span></div>
<div class="am-panel-hd">{{:MyLang('layout.view_offcanvas_module_title_right')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_offcanvas_module_title_right_tips')}}</span></div>
<div class="am-panel-bd">
<!-- 右侧按钮名称 -->
{{include file="../../../layout/view/public/style/input_color" key="_title_more" title="右侧按钮名称" placeholder="右侧按钮名称" minlength="0" maxlength="4" message="右侧按钮名称最多4个字符" value="" required="" color_value="" tips-must="" tips-msg="" /}}
<div class="am-form-group am-form-group-refreshing">
<label>{{:MyLang('layout.view_offcanvas_module_title_right_name')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="text" placeholder="{{:MyLang('layout.view_offcanvas_module_title_right_name')}}" name="content_title_more" minlength="0" maxlength="16" data-validation-message="{{:MyLang('layout.view_offcanvas_module_title_right_name_message')}}" value="" class="am-form-field" />
<input type="hidden" name="style_title_more_color" value="" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color_title_more" data-position="fixed" data-input-tag=".module-style-color_title_more" data-color-tag="input[name='style_title_more_color']" data-color-style="background-color|border-color">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</a>
</div>
</div>
<!-- 右侧按钮链接 -->
<div class="am-form-group am-form-group-refreshing">
<label>右侧按钮链接地址</label>
<label>{{:MyLang('layout.view_module_title_url')}}</label>
<div class="form-view-choice-container am-margin-top-xs">
<input type="hidden" name="content_to_type" value="" />
<input type="hidden" name="content_to_name" value="" />
<input type="hidden" name="content_to_value" value="" />
<div class="form-view-choice-container-content">
<a href="javascript:;" class="form-view-choice-container-submit">请选择跳转链接</a>
<a href="javascript:;" class="form-view-choice-container-submit">{{:MyLang('layout.view_module_title_url_message')}}</a>
</div>
</div>
</div>
@ -39,22 +66,22 @@
<!-- 关键字 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">关键字<span class="am-form-group-label-tips">小屏下不显示</span></div>
<div class="am-panel-hd">{{:MyLang('layout.view_module_title_keywords')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_module_title_keywords_tips')}}</span></div>
<div class="am-panel-bd">
<ul class="am-list am-list-static am-list-border config-title-container"></ul>
<div class="business-operations-submit am-text-center am-block config-title-item-add">+添加关键字</div>
<div class="business-operations-submit am-text-center am-block config-title-item-add">+ {{:MyLang('layout.view_module_title_keywords_add')}}</div>
</div>
</div>
<!-- 样式设置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">样式设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_setup')}}</div>
<div class="am-panel-bd">
<!-- 背景色 -->
{{include file="../../../layout/view/public/style/background_color" key="" required="" /}}
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}

View File

@ -4,21 +4,21 @@
<div class="am-offcanvas-content am-padding-0">
<form class="am-form form-validation-module-offcanvas-video" request-type="sync" request-value="FormBackModuleConfigVideo">
<div class="am-panel am-panel-default">
<div class="am-panel-hd">内容设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_content_setup')}}</div>
<div class="am-panel-bd">
<div class="am-form-group am-form-file am-form-group-refreshing">
<label class="am-block">视频<span class="am-form-group-label-tips-must">*</span></label>
<label class="am-block">{{:MyLang('video_title')}}<span class="am-form-group-label-tips-must">*</span></label>
<ul class="plug-file-upload-view plug-file-upload-view-video module-video-type-view-video" data-form-name="content_video" data-max-number="1" data-dialog-type="video" data-delete="0">
<li>
<input type="text" name="content_video" data-validation-message="请上传视频" value="" required />
<input type="text" name="content_video" data-validation-message="{{:MyLang('form_upload_video_message')}}" value="" required />
<video src="" controls>your browser does not support the video tag</video>
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.module-video-type-view-video">+上传视频</div>
<div class="plug-file-upload-submit" data-view-tag="ul.module-video-type-view-video">+ {{:MyLang('form_upload_video_title')}}</div>
</div>
<div class="am-form-group am-form-file am-form-group-refreshing">
<label class="am-block">封面图片</label>
<label class="am-block">{{:MyLang('layout.view_offcanvas_module_video_images')}}</label>
<ul class="plug-file-upload-view module-video-type-view-images" data-form-name="content_images" data-max-number="1" data-dialog-type="images"></ul>
<div class="plug-file-upload-submit" data-view-tag="ul.module-video-type-view-images">+ {{:MyLang('form_upload_images_title')}}</div>
</div>
@ -27,10 +27,10 @@
<!-- 样式设置 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">样式设置</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_setup')}}</div>
<div class="am-panel-bd">
<!-- 圆角 -->
{{include file="../../../layout/view/public/style/border_radius" max="1000" key="" required="" /}}
{{include file="../../../layout/view/public/style/border_radius" key="" required="" /}}
<!-- 边线类型 -->
{{include file="../../../layout/view/public/style/border_style_4" key="" /}}
@ -48,9 +48,9 @@
<!-- 视频固定 -->
<div class="am-panel am-panel-default">
<div class="am-panel-hd">视频固定</div>
<div class="am-panel-hd">{{:MyLang('layout.view_style_content')}}</div>
<div class="am-panel-bd">
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" name="视频容器高度" /}}
{{include file="../../../layout/view/public/content/media_fixed" key="_media_fixed" required="" /}}
</div>
</div>

View File

@ -7,9 +7,9 @@
<div data-am-widget="tabs" class="am-tabs am-tabs-d2 am-margin-0" data-am-tabs="{noSwipe: 1}">
<ul class="am-tabs-nav am-cf">
<li class="am-active"><a href="[data-tab-panel-0]" data-value="category">{{:MyLang('form_goods_category_title')}}</a></li>
<li><a href="[data-tab-panel-1]" data-value="brand">品牌</a></li>
<li><a href="[data-tab-panel-2]" data-value="keywords">关键字</a></li>
<li><a href="[data-tab-panel-3]" data-value="other">无需条件</a></li>
<li><a href="[data-tab-panel-1]" data-value="brand">{{:MyLang('layout.view_popup_goods_search_tabs_brand')}}</a></li>
<li><a href="[data-tab-panel-2]" data-value="keywords">{{:MyLang('layout.view_popup_goods_search_tabs_keywords')}}</a></li>
<li><a href="[data-tab-panel-3]" data-value="other">{{:MyLang('layout.view_popup_goods_search_tabs_other')}}</a></li>
</ul>
<div class="am-tabs-bd">
<div data-tab-panel-0 class="am-tab-panel am-padding-0 am-active">
@ -39,15 +39,15 @@
<div data-tab-panel-2 class="am-tab-panel am-padding-0">
<div class="am-form-group am-form-group-refreshing">
<div class="am-padding-sm form-container-keywords">
<p class="am-margin-top-sm am-text-warning am-text-center">搜索关键字格式1~30个字符</p>
<p class="am-margin-top-sm am-text-warning am-text-center">{{:MyLang('layout.view_popup_goods_search_keywords_tips')}}</p>
<div class="am-margin-top-sm">
<input type="text" name="goods_search_keywords" placeholder="关键字" maxlength="30" data-validation-message="关键字格式1~30个字符" class="am-radius" />
<input type="text" name="goods_search_keywords" placeholder="{{:MyLang('layout.view_popup_goods_search_tabs_keywords')}}" maxlength="30" data-validation-message="{{:MyLang('layout.view_popup_goods_search_keywords_tips')}}" class="am-radius" />
</div>
</div>
</div>
</div>
<div data-tab-panel-3 class="am-tab-panel am-padding-0">
<p class="am-margin-top-lg am-padding-top-lg am-text-warning am-text-center">无需搜索条件、直接进入搜索页面</p>
<p class="am-margin-top-lg am-padding-top-lg am-text-warning am-text-center">{{:MyLang('layout.view_popup_goods_search_other_tips')}}</p>
</div>
</div>
</div>

View File

@ -7,18 +7,18 @@
<!-- 搜索 -->
<div class="forth-selection-container am-padding-sm" data-search-url="{{:MyUrl('index/layout/goodssearch')}}" data-data-url="{{:MyUrl('index/layout/goodsdata')}}">
<input type="hidden" name="category_field" value="{{if empty($layout_goods_category_field)}}gci.category_id{{else /}}{{$layout_goods_category_field}}{{/if}}">
<select class="am-radius chosen-select forth-selection-form-category" data-placeholder="分类..." data-validation-message="请选择分类">
<option value="">分类...</option>
<select class="am-radius chosen-select forth-selection-form-category" data-placeholder="{{:MyLang('layout.view_popup_goods_search_choice_category_placeholder')}}" data-validation-message="{{:MyLang('layout.view_popup_goods_search_choice_category_not_choice')}}">
<option value="">{{:MyLang('layout.view_popup_goods_search_choice_category_placeholder')}}</option>
{{if !empty($layout_goods_category)}}
{{if empty($layout_goods_category_field) or $layout_goods_category_field eq 'gci.category_id'}}
{{foreach $layout_goods_category as $v}}
<option value="{{$v.id}}" {{if !empty($data['category_ids']) and in_array($v['id'], $data['category_ids'])}}selected{{/if}}>一级 - {{$v.name}}</option>
<option value="{{$v.id}}" {{if !empty($data['category_ids']) and in_array($v['id'], $data['category_ids'])}}selected{{/if}}>{{$v.name}}</option>
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 30px;" value="{{$vs.id}}" {{if !empty($data['category_ids']) and in_array($vs['id'], $data['category_ids'])}}selected{{/if}}>二级-{{$vs.name}}</option>
<option style="padding-left: 20px;" value="{{$vs.id}}" {{if !empty($data['category_ids']) and in_array($vs['id'], $data['category_ids'])}}selected{{/if}}>{{if empty($vs['items'])}}├{{else /}}└{{/if}}² {{$vs.name}}</option>
{{if !empty($vs['items'])}}
{{foreach $vs.items as $vss}}
<option style="padding-left: 60px;" value="{{$vss.id}}" {{if !empty($data['category_ids']) and in_array($vss['id'], $data['category_ids'])}}selected{{/if}}>三级-{{$vss.name}}</option>
{{foreach $vs.items as $kss=>$vss}}
<option style="padding-left: 40px;" value="{{$vss.id}}" {{if !empty($data['category_ids']) and in_array($vss['id'], $data['category_ids'])}}selected{{/if}}>{{if $kss eq count($vs['items'])-1}}└{{else /}}├{{/if}}³ {{$vss.name}}</option>
{{/foreach}}
{{/if}}
{{/foreach}}
@ -38,7 +38,7 @@
<!-- 商品列表 -->
<div class="am-scrollable-vertical am-margin-horizontal-sm goods-list-container" data-loading-msg="{{:MyLang('searching_tips')}}">
<ul class="am-gallery am-avg-sm-3 am-avg-md-4 am-avg-lg-5 am-gallery-bordered">
<div class="table-no"><i class="am-icon-warning"></i> 请搜索商品</div>
<div class="table-no"><i class="am-icon-warning"></i> {{:MyLang('layout.view_popup_goods_search_choice_init_tips')}}</div>
</ul>
</div>

View File

@ -1,6 +1,6 @@
<div class="am-form-group am-form-group-refreshing">
<label>{{:MyLang('form_bg_color_title')}}</label>
<input type="hidden" name="style[key]_background_color" data-validation-message="请选择背景色" value="" [required] />
<input type="hidden" name="style[key]_background_color" data-validation-message="{{:MyLang('form_bg_color_message')}}" value="" [required] />
<button type="button" class="am-btn am-btn-default am-btn-xs colorpicker-submit module-style-background-color[key] am-btn-block" data-position="fixed" data-input-tag="button.module-style-background-color[key]" data-color-tag="input[name='style[key]_background_color']" data-color-style="background-color">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>

View File

@ -1,6 +1,6 @@
<div class="am-form-group am-form-group-refreshing">
<label>[name]</label>
<input type="hidden" name="style[key]_color" data-validation-message="请选择[name]" value="" [required] />
<label>{{:MyLang('layout.view_media_fixed_border_color_title')}}</label>
<input type="hidden" name="style[key]_color" data-validation-message="{{:MyLang('layout.view_media_fixed_border_color_message')}}" value="" [required] />
<button type="button" class="am-btn am-btn-default am-btn-xs colorpicker-submit module-style-color[key] am-btn-block" data-position="fixed" data-input-tag="button.module-style-color[key]" data-color-tag="input[name='style[key]_color']" data-color-style="background-color">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</button>

View File

@ -1,7 +1,7 @@
<div class="am-form-group am-form-group-refreshing">
<label>圆角</label>
<label>{{:MyLang('layout.view_media_fixed_border_radius_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" data-is-clearout="0" placeholder="圆角" name="style[key]_border_radius" min="0" max="[max]" data-validation-message="请输入圆角、最大[max]的数字" value="" class="am-form-field" [required] />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_border_radius_title')}}" name="style[key]_border_radius" min="0" max="1000" data-validation-message="{{:MyLang('layout.view_media_fixed_border_radius_title')}}" value="" class="am-form-field" [required] />
<span class="am-input-group-label">px</span>
</div>
</div>

View File

@ -1,8 +1,8 @@
<div class="am-form-group am-form-group-refreshing">
<label>边线类型</label>
<label>{{:MyLang('layout.view_media_fixed_border_style_title')}}</label>
{{if !empty($border_style_type_list)}}
<select name="style[key]_border_style" class="am-radius chosen-select" data-placeholder="请选择" data-validation-message="请选择边线类型" [required]>
<option value="">请选择</option>
<select name="style[key]_border_style" class="am-radius chosen-select" data-placeholder="{{:MyLang('please_select_tips')}}" data-validation-message="{{:MyLang('layout.view_media_fixed_border_style_message')}}" [required]>
<option value="">{{:MyLang('please_select_tips')}}</option>
{{foreach $border_style_type_list as $k=>$v}}
<option value="{{$k}}">{{$v}}</option>
{{/foreach}}

View File

@ -1,27 +1,27 @@
<div class="am-form-group am-form-group-refreshing">
<label>边线类型<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左</span></label>
<label>{{:MyLang('layout.view_media_fixed_border_style_title')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_media_fixed_four_sides_tips')}}</span></label>
<div class="am-input-group am-input-group-sm group-border-style">
{{if !empty($border_style_type_list)}}
<select name="style[key]_border_style_top" class="am-radius chosen-select" data-placeholder="上" data-validation-message="请选择边线类型">
<option value=""></option>
<select name="style[key]_border_style_top" class="am-radius chosen-select" data-placeholder="{{:MyLang('layout.view_media_fixed_four_sides_top')}}" data-validation-message="{{:MyLang('layout.view_media_fixed_border_style_message')}}">
<option value="">{{:MyLang('layout.view_media_fixed_four_sides_top')}}</option>
{{foreach $border_style_type_list as $k=>$v}}
<option value="{{$k}}">{{$v}}</option>
{{/foreach}}
</select>
<select name="style[key]_border_style_right" class="am-radius chosen-select" data-placeholder="右" data-validation-message="请选择边线类型">
<option value=""></option>
<select name="style[key]_border_style_right" class="am-radius chosen-select" data-placeholder="{{:MyLang('layout.view_media_fixed_four_sides_right')}}" data-validation-message="{{:MyLang('layout.view_media_fixed_border_style_message')}}">
<option value="">{{:MyLang('layout.view_media_fixed_four_sides_right')}}</option>
{{foreach $border_style_type_list as $k=>$v}}
<option value="{{$k}}">{{$v}}</option>
{{/foreach}}
</select>
<select name="style[key]_border_style_bottom" class="am-radius chosen-select" data-placeholder="下" data-validation-message="请选择边线类型">
<option value=""></option>
<select name="style[key]_border_style_bottom" class="am-radius chosen-select" data-placeholder="{{:MyLang('layout.view_media_fixed_four_sides_bottom')}}" data-validation-message="{{:MyLang('layout.view_media_fixed_border_style_message')}}">
<option value="">{{:MyLang('layout.view_media_fixed_four_sides_bottom')}}</option>
{{foreach $border_style_type_list as $k=>$v}}
<option value="{{$k}}">{{$v}}</option>
{{/foreach}}
</select>
<select name="style[key]_border_style_left" class="am-radius chosen-select" data-placeholder="左" data-validation-message="请选择边线类型">
<option value=""></option>
<select name="style[key]_border_style_left" class="am-radius chosen-select" data-placeholder="{{:MyLang('layout.view_media_fixed_four_sides_left')}}" data-validation-message="{{:MyLang('layout.view_media_fixed_border_style_message')}}">
<option value="">{{:MyLang('layout.view_media_fixed_four_sides_left')}}</option>
{{foreach $border_style_type_list as $k=>$v}}
<option value="{{$k}}">{{$v}}</option>
{{/foreach}}

View File

@ -1,10 +1,10 @@
<div class="am-form-group am-form-group-refreshing">
<label>边线大小<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左</span></label>
<label>{{:MyLang('layout.view_media_fixed_border_width_title')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_media_fixed_four_sides_tips')}}</span></label>
<div class="am-input-group am-input-group-sm group-border-width group-border-radius-color">
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_border_width_top" min="0" max="10" data-validation-message="边线上最大10" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_border_width_right" min="0" max="10" data-validation-message="边线右最大10" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_border_width_bottom" min="0" max="10" data-validation-message="边线下最大10" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_border_width_left" min="0" max="10" data-validation-message="边线左最大10" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_top')}}" name="style[key]_border_width_top" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_right')}}" name="style[key]_border_width_right" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_bottom')}}" name="style[key]_border_width_bottom" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_left')}}" name="style[key]_border_width_left" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>
</div>

View File

@ -1,7 +1,7 @@
<div class="am-form-group am-form-group-refreshing">
<label>边线/颜色</label>
<label>{{:MyLang('layout.view_media_fixed_border_color_title')}}</label>
<div class="am-input-group am-input-group-sm group-border-radius-color">
<input type="number" data-is-clearout="0" placeholder="边线" name="style[key]_border_width" min="0" max="10" data-validation-message="请输入边线、最大10的数字" value="" class="am-form-field" [required] />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_border_placeholder')}}" name="style[key]_border_width" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" [required] />
<span class="am-input-group-label">px</span>
<input type="hidden" name="style[key]_border_color" value="" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-border-color[key]" data-position="fixed" data-input-tag=".module-offcanvas-container .module-style-border-color[key]" data-color-tag=".module-offcanvas-container input[name='style[key]_border_color']" data-color-style="background-color|border-color">

View File

@ -1,10 +1,10 @@
<div class="am-form-group am-form-group-refreshing">
<label>边线大小<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左 -> 颜色</span></label>
<label>{{:MyLang('layout.view_media_fixed_border_color_title')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_media_fixed_four_sides_tips')}} -> {{:MyLang('color_title')}}</span></label>
<div class="am-input-group am-input-group-sm group-border-width group-border-radius-color">
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_border_width_top" min="0" max="10" data-validation-message="边线上最大10" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_border_width_right" min="0" max="10" data-validation-message="边线右最大10" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_border_width_bottom" min="0" max="10" data-validation-message="边线下最大10" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_border_width_left" min="0" max="10" data-validation-message="边线左最大10" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_top')}}" name="style[key]_border_width_top" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_right')}}" name="style[key]_border_width_right" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_bottom')}}" name="style[key]_border_width_bottom" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_left')}}" name="style[key]_border_width_left" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_border_width_message')}}" value="" class="am-form-field" />
<span class="am-input-group-label">px</span>
<input type="hidden" name="style[key]_border_color" value="" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-border-color[key]" data-position="fixed" data-input-tag=".module-offcanvas-container .module-style-border-color[key]" data-color-tag=".module-offcanvas-container input[name='style[key]_border_color']" data-color-style="background-color|border-color">

View File

@ -1,7 +1,7 @@
<div class="am-form-group am-form-group-refreshing">
<label>[name]</label>
<label>{{:MyLang('layout.view_media_fixed_height_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" data-is-clearout="0" placeholder="[name]" name="style[key]_height" min="0" max="[height]" data-validation-message="请输入[name]、最大[height]的数字" value="" class="am-form-field" [required] />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_height_title')}}" name="style[key]_height" min="0" max="6000" data-validation-message="{{:MyLang('layout.view_media_fixed_height_message')}}" value="" class="am-form-field" [required] />
<span class="am-input-group-label">px</span>
</div>
</div>

View File

@ -1,10 +0,0 @@
<div class="am-form-group am-form-group-refreshing">
<label>[title]<span class="am-form-group-label-tips[tips-must]">[tips-msg]</span></label>
<div class="am-input-group am-input-group-sm">
<input type="text" placeholder="[placeholder]" name="content[key]" minlength="[minlength]" maxlength="[maxlength]" data-validation-message="[message]" value="[value]" class="am-form-field" [required] />
<input type="hidden" name="style[key]_color" value="[color_value]" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color[key]" data-position="fixed" data-input-tag=".module-style-color[key]" data-color-tag="input[name='style[key]_color']" data-color-style="background-color|border-color">
<img src="{{$attachment_host}}/static/common/images/colorpicker.png" />
</a>
</div>
</div>

View File

@ -1,7 +1,7 @@
<div class="am-form-group am-form-group-refreshing">
<label>外边距</label>
<label>{{:MyLang('layout.view_media_fixed_margin_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" data-is-clearout="0" placeholder="外边距" name="style[key]_margin" min="0" max="30" data-validation-message="请输入外边距、最大30的数字" value="" class="am-form-field" [required] />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_margin_title')}}" name="style[key]_margin" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_margin_message')}}" value="" class="am-form-field" [required] />
<span class="am-input-group-label">px</span>
</div>
</div>

View File

@ -1,10 +1,10 @@
<div class="am-form-group am-form-group-refreshing">
<label>外边距<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左</span></label>
<label>{{:MyLang('layout.view_media_fixed_margin_title')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_media_fixed_four_sides_tips')}}</span></label>
<div class="am-input-group am-input-group-sm group-border-width">
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_margin_top" min="0" max="60" data-validation-message="外边距上最大60" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_margin_right" min="0" max="60" data-validation-message="外边距右最大60" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_margin_bottom" min="0" max="60" data-validation-message="外边距下最大60" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_margin_left" min="0" max="60" data-validation-message="外边距左最大60" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_top')}}" name="style[key]_margin_top" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_margin_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_right')}}" name="style[key]_margin_right" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_margin_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_bottom')}}" name="style[key]_margin_bottom" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_margin_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_left')}}" name="style[key]_margin_left" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_margin_message')}}" value="" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>
</div>

View File

@ -1,4 +1,4 @@
<div class="am-form-group am-form-group-refreshing">
<label class="am-block">鼠标悬停图片上方放大</label>
<label class="am-block">{{:MyLang('layout.view_media_fixed_mouse_hover_images_amplify_title')}}</label>
<input name="style_mouse_hover_images_amplify_value" value="1" type="checkbox" data-off-text="{{:MyLang('no_title')}}" data-on-text="{{:MyLang('yes_title')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch />
</div>

View File

@ -1,7 +1,7 @@
<div class="am-form-group am-form-group-refreshing">
<label>内边距</label>
<label>{{:MyLang('layout.view_media_fixed_padding_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" data-is-clearout="0" placeholder="内边距" name="style[key]_padding" min="0" max="30" data-validation-message="请输入内边距、最大30的数字" value="" class="am-form-field" [required] />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_padding_title')}}" name="style[key]_padding" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_padding_message')}}" value="" class="am-form-field" [required] />
<span class="am-input-group-label">px</span>
</div>
</div>

View File

@ -1,10 +1,10 @@
<div class="am-form-group am-form-group-refreshing">
<label>内边距<span class="am-form-group-label-tips">上 -> 右 -> 下 -> 左</span></label>
<label>{{:MyLang('layout.view_media_fixed_padding_title')}}<span class="am-form-group-label-tips">{{:MyLang('layout.view_media_fixed_four_sides_tips')}}</span></label>
<div class="am-input-group am-input-group-sm group-border-width">
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_padding_top" min="0" max="60" data-validation-message="内边距上最大60" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_padding_right" min="0" max="60" data-validation-message="内边距右最大60" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_padding_bottom" min="0" max="60" data-validation-message="内边距下最大60" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="" name="style[key]_padding_left" min="0" max="60" data-validation-message="内边距左最大60" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_top')}}" name="style[key]_padding_top" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_padding_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_right')}}" name="style[key]_padding_right" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_padding_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_bottom')}}" name="style[key]_padding_bottom" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_padding_message')}}" value="" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_four_sides_left')}}" name="style[key]_padding_left" min="0" max="100" data-validation-message="{{:MyLang('layout.view_media_fixed_padding_message')}}" value="" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>
</div>

View File

@ -1,7 +1,7 @@
<div class="am-form-group am-form-group-refreshing">
<label>[name]</label>
<label>{{:MyLang('layout.view_media_fixed_width_title')}}</label>
<div class="am-input-group am-input-group-sm">
<input type="number" data-is-clearout="0" placeholder="[name]" name="style[key]_width" min="0" max="[width]" data-validation-message="请输入[name]、最大[width]的数字" value="" class="am-form-field" [required] />
<input type="number" data-is-clearout="0" placeholder="{{:MyLang('layout.view_media_fixed_width_title')}}" name="style[key]_width" min="0" max="6000" data-validation-message="{{:MyLang('layout.view_media_fixed_border_radius_message')}}" value="" class="am-form-field" [required] />
<span class="am-input-group-label">px</span>
</div>
</div>

View File

@ -407,7 +407,7 @@
padding-bottom: 5px !important;
}
#offcanvas-module-config-images-text .config-images-text-container .am-panel .group-input-font-size {
width: 110px;
width: 95px;
}
/**
@ -475,6 +475,9 @@
top: 10px;
right: 10px;
}
#modal-module-pages-select .am-tabs-bd .content {
height: 308px;
}
/**

View File

@ -272,66 +272,18 @@ function StyleBaseHandle(data, key, replace_rules, exclude)
// 单个处理
var arr2 = [
{
"type": "border_style",
"css": "border-style",
"unit": ""
},
{
"type": "border_width",
"css": "border-width",
"unit": "px"
},
{
"type": "border_color",
"css": "border-color",
"unit": ""
},
{
"type": "border_radius",
"css": "border-radius",
"unit": "px"
},
{
"type": "background_color",
"css": "background-color",
"unit": ""
},
{
"type": "color",
"css": "color",
"unit": ""
},
{
"type": "align",
"css": "text-align",
"unit": ""
},
{
"type": "font_size",
"css": "font-size",
"unit": "px"
},
{
"type": "margin",
"css": "margin",
"unit": "px"
},
{
"type": "padding",
"css": "padding",
"unit": "px"
},
{
"type": "height",
"css": "height",
"unit": "px"
},
{
"type": "width",
"css": "width",
"unit": "px"
}
{ type: "border_style", css: "border-style", unit: "" },
{ type: "border_width", css: "border-width", unit: "px" },
{ type: "border_color", css: "border-color", unit: "" },
{ type: "border_radius", css: "border-radius", unit: "px" },
{ type: "background_color", css: "background-color", unit: "" },
{ type: "color", css: "color", unit: "" },
{ type: "align", css: "text-align", unit: "" },
{ type: "font_size", css: "font-size", unit: "px" },
{ type: "margin", css: "margin", unit: "px" },
{ type: "padding", css: "padding", unit: "px" },
{ type: "height", css: "height", unit: "px" },
{ type: "width", css: "width", unit: "px" }
];
for(var i in arr2)
{
@ -644,10 +596,10 @@ function FormBackModuleConfigManyImagesHandle(data)
// 数据字段
var fields = {
"content_images_": "images",
"content_to_name_": "name",
"content_to_type_": "type",
"content_to_value_": "value"
content_images_: "images",
content_to_name_: "name",
content_to_type_: "type",
content_to_value_: "value"
};
var res = FormBackDataListHandle(data, fields);
data = res.data;
@ -816,26 +768,26 @@ function FormBackModuleConfigImagesTextHandle(data)
// 数据字段
var fields = {
"content_images_": "images",
"content_title_": "title",
"content_title_style_color_": "title_style_color",
"content_title_style_font_size_": "title_style_font_size",
"content_title_style_align_": "title_style_align",
"content_title_style_margin_top_": "title_style_margin_top",
"content_title_style_margin_right_": "title_style_margin_right",
"content_title_style_margin_bottom_": "title_style_margin_bottom",
"content_title_style_margin_left_": "title_style_margin_left",
"content_desc_": "desc",
"content_desc_style_color_": "desc_style_color",
"content_desc_style_font_size_": "desc_style_font_size",
"content_desc_style_align_": "desc_style_align",
"content_desc_style_margin_top_": "desc_style_margin_top",
"content_desc_style_margin_right_": "desc_style_margin_right",
"content_desc_style_margin_bottom_": "desc_style_margin_bottom",
"content_desc_style_margin_left_": "desc_style_margin_left",
"content_to_name_": "name",
"content_to_type_": "type",
"content_to_value_": "value"
content_images_: "images",
content_title_: "title",
content_title_style_color_: "title_style_color",
content_title_style_font_size_: "title_style_font_size",
content_title_style_align_: "title_style_align",
content_title_style_margin_top_: "title_style_margin_top",
content_title_style_margin_right_: "title_style_margin_right",
content_title_style_margin_bottom_: "title_style_margin_bottom",
content_title_style_margin_left_: "title_style_margin_left",
content_desc_: "desc",
content_desc_style_color_: "desc_style_color",
content_desc_style_font_size_: "desc_style_font_size",
content_desc_style_align_: "desc_style_align",
content_desc_style_margin_top_: "desc_style_margin_top",
content_desc_style_margin_right_: "desc_style_margin_right",
content_desc_style_margin_bottom_: "desc_style_margin_bottom",
content_desc_style_margin_left_: "desc_style_margin_left",
content_to_name_: "name",
content_to_type_: "type",
content_to_value_: "value"
};
var res = FormBackDataListHandle(data, fields);
data = res.data;
@ -1036,10 +988,10 @@ function FormBackModuleConfigImagesMagicCubeHandle(data)
// 数据字段
var fields = {
"content_images_": "images",
"content_to_name_": "name",
"content_to_type_": "type",
"content_to_value_": "value"
content_images_: "images",
content_to_name_: "name",
content_to_type_: "type",
content_to_value_: "value"
};
var res = FormBackDataListHandle(data, fields);
data = res.data;
@ -1723,9 +1675,9 @@ function FormBackModuleConfigGoodsHandle(data)
// 商品样式处理
var rules = {
"margin": {
"value": "{var}px 0 0 {var}px",
"var": "{var}"
margin: {
value: "{var}px 0 0 {var}px",
var: "{var}"
}
};
var item_style = StyleBaseHandle(data, 'style_', rules);
@ -2382,7 +2334,7 @@ function ModuleConfigManyImagesItemContentHtml(images, type, name, value)
<img src="`+(images || $offcanvas_config_many_images.data('default-images'))+`" />
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.module-slider-type-images-view-`+index+`">+`+($layout.data('upload-images-name') || '上传图片')+`</div>
<div class="plug-file-upload-submit" data-view-tag="ul.module-slider-type-images-view-`+index+`">+ `+($layout.data('upload-images-name') || '上传图片')+`</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<div class="form-view-choice-container am-margin-top-xs" data-key="`+index+`">
@ -2422,6 +2374,16 @@ function ModuleConfigImagesTextItemContentHtml(data)
data.desc_style_align = 'left';
}
var index = parseInt(Math.random()*1000001);
var font_size = $layout.data('images-text-font-size') || '大小';
var title_message = $layout.data('images-text-margin-title-message') || '标题外边距最大1000';
var desc_message = $layout.data('images-text-margin-desc-message') || '描述外边距最大1000';
var margin_top = $layout.data('images-text-margin-top') || '外上';
var margin_right = $layout.data('images-text-margin-top') || '外右';
var margin_bottom = $layout.data('images-text-margin-top') || '外下';
var margin_left = $layout.data('images-text-margin-top') || '外左';
var position_left = $layout.data('images-text-position-left') || '外左';
var position_center = $layout.data('images-text-position-center') || '外中';
var position_right = $layout.data('images-text-position-right') || '外右';
var html = `<div class="am-panel am-panel-default am-padding-sm">
<a href="javascript:;" class="am-close am-close-alt am-icon-times"></a>
<div class="am-form-group am-form-file am-form-group-refreshing">
@ -2431,7 +2393,7 @@ function ModuleConfigImagesTextItemContentHtml(data)
<img src="`+(data.images || $offcanvas_config_many_images.data('default-images'))+`" />
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.module-slider-type-images-view-`+index+`">+`+($layout.data('upload-images-name') || '上传图片')+`</div>
<div class="plug-file-upload-submit" data-view-tag="ul.module-slider-type-images-view-`+index+`">+ `+($layout.data('upload-images-name') || '上传图片')+`</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<div class="form-view-choice-container am-margin-top-xs" data-key="`+index+`">
@ -2445,10 +2407,11 @@ function ModuleConfigImagesTextItemContentHtml(data)
</div>`;
// 标题
var title_style_color = (data.title_style_color || null) == null ? '' : 'background-color:'+data.title_style_color+';border-color:'+data.title_style_color+';';
var title = $layout.data('images-text-title') || '标题';
html += `<div class="am-form-group am-form-group-refreshing">
<label>标题</label>
<label>`+title+`</label>
<div class="am-input-group am-input-group-sm">
<input type="text" placeholder="标题" name="content_title_`+index+`" value="`+(data.title || '')+`" class="am-form-field" />
<input type="text" placeholder="`+title+`" name="content_title_`+index+`" value="`+(data.title || '')+`" class="am-form-field" />
<input type="hidden" name="content_title_style_color_`+index+`" value="`+(data.title_style_color || '')+`" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color-images-text-content-title-style-color-`+index+`" data-position="fixed" data-input-tag=".module-style-color-images-text-content-title-style-color-`+index+`" data-color-tag="input[name='content_title_style_color_`+index+`']" data-color-style="background-color|border-color" style="`+title_style_color+`">
<img src="`+__attachment_host__+`/static/common/images/colorpicker.png" />
@ -2457,29 +2420,30 @@ function ModuleConfigImagesTextItemContentHtml(data)
// 外边距
html += `<div class="am-input-group am-input-group-sm group-border-width am-margin-top-xs">
<input type="number" data-is-clearout="0" placeholder="外上" name="content_title_style_margin_top_`+index+`" min="0" max="1000" data-validation-message="标题外边距上最大1000" value="`+(data.title_style_margin_top || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="外右" name="content_title_style_margin_right_`+index+`" min="0" max="1000" data-validation-message="标题外边距右最大1000" value="`+(data.title_style_margin_right || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="外下" name="content_title_style_margin_bottom_`+index+`" min="0" max="1000" data-validation-message="标题外边距下最大1000" value="`+(data.title_style_margin_bottom || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="外左" name="content_title_style_margin_left_`+index+`" min="0" max="1000" data-validation-message="标题外边距左最大1000" value="`+(data.title_style_margin_left || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+margin_top+`" name="content_title_style_margin_top_`+index+`" min="0" max="1000" data-validation-message="`+title_message+`" value="`+(data.title_style_margin_top || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+margin_right+`" name="content_title_style_margin_right_`+index+`" min="0" max="1000" data-validation-message="`+title_message+`" value="`+(data.title_style_margin_right || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+margin_bottom+`" name="content_title_style_margin_bottom_`+index+`" min="0" max="1000" data-validation-message="`+title_message+`" value="`+(data.title_style_margin_bottom || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+margin_left+`" name="content_title_style_margin_left_`+index+`" min="0" max="1000" data-validation-message="`+title_message+`" value="`+(data.title_style_margin_left || '')+`" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>`;
// 字体大小和左右居中
html += `<div class="am-margin-top-xs am-nbfc">
<div class="am-input-group am-input-group-sm am-fl group-input-font-size">
<input type="number" data-is-clearout="0" placeholder="大小" name="content_title_style_font_size_`+index+`" min="0" max="1000" data-validation-message="标题字体最大1000" value="`+(data.title_style_font_size || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+font_size+`" name="content_title_style_font_size_`+index+`" min="0" max="1000" data-validation-message="`+($layout.data('images-text-font-size-title-message') || '标题字体最大1000')+`" value="`+(data.title_style_font_size || '')+`" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>
<div class="am-fr group-text-align-style"><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="left" data-am-ucheck `+(data.title_style_align == 'left' ? 'checked' : '')+` /> 居左</label><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="center" data-am-ucheck `+(data.title_style_align == 'center' ? 'checked' : '')+` /> 居中</label><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="right" data-am-ucheck `+(data.title_style_align == 'right' ? 'checked' : '')+` /> 居右</label></div>
<div class="am-fr group-text-align-style"><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="left" data-am-ucheck `+(data.title_style_align == 'left' ? 'checked' : '')+` /> `+position_left+`</label><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="center" data-am-ucheck `+(data.title_style_align == 'center' ? 'checked' : '')+` /> `+position_center+`</label><label class="am-checkbox-inline"><input type="radio" name="content_title_style_align_`+index+`" value="right" data-am-ucheck `+(data.title_style_align == 'right' ? 'checked' : '')+` /> `+position_right+`</label></div>
</div>`;
html += `</div>`;
// 描述
var desc = $layout.data('images-text-desc') || '描述';
var desc_style_color = (data.desc_style_color || null) == null ? '' : 'background-color:'+data.desc_style_color+';border-color:'+data.desc_style_color+';';
html += `<div class="am-form-group am-form-group-refreshing">
<label>描述</label>
<label>`+desc+`</label>
<div class="am-input-group am-input-group-sm">
<input type="text" placeholder="描述" name="content_desc_`+index+`" value="`+(data.desc || '')+`" class="am-form-field" />
<input type="text" placeholder="`+desc+`" name="content_desc_`+index+`" value="`+(data.desc || '')+`" class="am-form-field" />
<input type="hidden" name="content_desc_style_color_`+index+`" value="`+(data.desc_style_color || '')+`" />
<a href="javascript:;" class="am-input-group-label colorpicker-submit module-style-color-images-text-content-desc-style-color-`+index+`" data-position="fixed" data-input-tag=".module-style-color-images-text-content-desc-style-color-`+index+`" data-color-tag="input[name='content_desc_style_color_`+index+`']" data-color-style="background-color|border-color" style="`+desc_style_color+`">
<img src="`+__attachment_host__+`/static/common/images/colorpicker.png" />
@ -2488,20 +2452,20 @@ function ModuleConfigImagesTextItemContentHtml(data)
// 外边距
html += `<div class="am-input-group am-input-group-sm group-border-width am-margin-top-xs">
<input type="number" data-is-clearout="0" placeholder="外上" name="content_desc_style_margin_top_`+index+`" min="0" max="1000" data-validation-message="描述外边距上最大1000" value="`+(data.desc_style_margin_top || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="外右" name="content_desc_style_margin_right_`+index+`" min="0" max="1000" data-validation-message="描述外边距右最大1000" value="`+(data.desc_style_margin_right || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="外下" name="content_desc_style_margin_bottom_`+index+`" min="0" max="1000" data-validation-message="描述外边距下最大1000" value="`+(data.desc_style_margin_bottom || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="外左" name="content_desc_style_margin_left_`+index+`" min="0" max="1000" data-validation-message="描述外边距左最大1000" value="`+(data.desc_style_margin_left || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+margin_top+`" name="content_desc_style_margin_top_`+index+`" min="0" max="1000" data-validation-message="`+desc_message+`" value="`+(data.desc_style_margin_top || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+margin_right+`" name="content_desc_style_margin_right_`+index+`" min="0" max="1000" data-validation-message="`+desc_message+`" value="`+(data.desc_style_margin_right || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+margin_bottom+`" name="content_desc_style_margin_bottom_`+index+`" min="0" max="1000" data-validation-message="`+desc_message+`" value="`+(data.desc_style_margin_bottom || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+margin_left+`" name="content_desc_style_margin_left_`+index+`" min="0" max="1000" data-validation-message="`+desc_message+`" value="`+(data.desc_style_margin_left || '')+`" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>`;
// 字体大小和左右居中
html += `<div class="am-margin-top-xs am-nbfc">
<div class="am-input-group am-input-group-sm am-fl group-input-font-size">
<input type="number" data-is-clearout="0" placeholder="大小" name="content_desc_style_font_size_`+index+`" min="0" max="1000" data-validation-message="描述字体最大1000" value="`+(data.desc_style_font_size || '')+`" class="am-form-field" />
<input type="number" data-is-clearout="0" placeholder="`+font_size+`" name="content_desc_style_font_size_`+index+`" min="0" max="1000" data-validation-message="`+($layout.data('images-text-font-size-desc-message') || '描述字体最大1000')+`" value="`+(data.desc_style_font_size || '')+`" class="am-form-field" />
<span class="am-input-group-label">px</span>
</div>
<div class="am-fr group-text-align-style"><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="left" data-am-ucheck `+(data.desc_style_align == 'left' ? 'checked' : '')+` /> 居左</label><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="center" data-am-ucheck `+(data.desc_style_align == 'center' ? 'checked' : '')+` /> 居中</label><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="right" data-am-ucheck `+(data.desc_style_align == 'right' ? 'checked' : '')+` /> 居右</label></div>
<div class="am-fr group-text-align-style"><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="left" data-am-ucheck `+(data.desc_style_align == 'left' ? 'checked' : '')+` /> `+position_left+`</label><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="center" data-am-ucheck `+(data.desc_style_align == 'center' ? 'checked' : '')+` /> `+position_center+`</label><label class="am-checkbox-inline"><input type="radio" name="content_desc_style_align_`+index+`" value="right" data-am-ucheck `+(data.desc_style_align == 'right' ? 'checked' : '')+` /> `+position_right+`</label></div>
</div>
</div>`;
html += `</div>`;
@ -2573,7 +2537,7 @@ function ModuleConfigImagesMagicCubeItemContentHtml(data)
<img src="`+(item.images || $offcanvas_config_many_images.data('default-images'))+`" />
</li>
</ul>
<div class="plug-file-upload-submit" data-view-tag="ul.module-slider-type-images-view-`+i+`">+`+($layout.data('upload-images-name') || '上传图片')+`</div>
<div class="plug-file-upload-submit" data-view-tag="ul.module-slider-type-images-view-`+i+`">+ `+($layout.data('upload-images-name') || '上传图片')+`</div>
</div>
<div class="am-form-group am-form-group-refreshing">
<div class="form-view-choice-container am-margin-top-xs" data-key="`+i+`">
@ -2835,8 +2799,8 @@ function OffcanvasConfigPagesChoice(obj, event)
// 开启页面选择弹窗
$modal_pages_select.modal({
width: 300,
height: 332,
width: 380,
height: 400,
closeViaDimmer: false
});
}
@ -2907,10 +2871,10 @@ function LayoutViewConfig()
// 布局数据
var json = $(this).find('.layout-content-children').attr('data-json') || null;
var layout_temp = {
"value": $(this).data('value').toString(),
"status": ($(this).find('.layout-content-submit input[type="checkbox"]:checked').val() == 'on') ? 1 : 0,
"config": (json == null) ? {} : JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(json)).toString(CryptoJS.enc.Utf8)),
"children": []
value: $(this).data('value').toString(),
status: ($(this).find('.layout-content-submit input[type="checkbox"]:checked').val() == 'on') ? 1 : 0,
config: (json == null) ? {} : JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(json)).toString(CryptoJS.enc.Utf8)),
children: []
};
// 模块容器
@ -2919,8 +2883,8 @@ function LayoutViewConfig()
// 容器数据
var json = $(this).attr('data-json') || null;
var content_temp = {
"config": (json == null) ? {} : JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(json)).toString(CryptoJS.enc.Utf8)),
"children": []
config: (json == null) ? {} : JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(json)).toString(CryptoJS.enc.Utf8)),
children: []
};
// 模块
@ -2930,9 +2894,9 @@ function LayoutViewConfig()
var json = $(this).find('.module-content').attr('data-json') || null;
var value = $(this).find('.module-view-submit-container').data('value');
var module_config = {
"value": value,
"name": layout_module_type_arr[value],
"config": (json == null) ? {} : JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(json)).toString(CryptoJS.enc.Utf8))
value: value,
name: layout_module_type_arr[value],
config: (json == null) ? {} : JSON.parse(CryptoJS.enc.Base64.parse(decodeURIComponent(json)).toString(CryptoJS.enc.Utf8))
};
// 商品模块移除商品列表
if(value == 'goods')
@ -3313,13 +3277,13 @@ $(function()
if((json || null) == null)
{
var fields_dv = {
"goods_order_by_type": 0,
"goods_order_by_rule": 0,
"view_list_show_style": 'routine',
"view_list_number_sm": 2,
"view_list_number_md": 5,
"view_list_number_lg": 5,
"goods_data_type": "goods"
goods_order_by_type: 0,
goods_order_by_rule: 0,
view_list_show_style: 'routine',
view_list_number_sm: 2,
view_list_number_md: 5,
view_list_number_lg: 5,
goods_data_type: "goods"
};
json = GetFormVal(config_doc, true);
for(var i in json)
@ -3486,7 +3450,7 @@ $(function()
default :
if($config.length == 0)
{
Prompt('模块未配置('+value+')');
Prompt(($layout.data('base-module-not-config-tips') || '模块未配置')+'('+value+')');
return false;
}
}