Announcement
Collapse
No announcement yet.
PHP Removal Update for Suivant
Collapse
This is a sticky topic.
X
X
-
okay thank you.
I would assume any of the code above tailored to our site would need to go in the global head tag?
Leave a comment:
-
Hi Nick,
You might be able to do that, I haven't tried it myself. Generally, if you can do the code native, it may be faster than using a module like Tool Kit.
Leave a comment:
-
Is it also possible to have these combined json files minified on the fly with similar code to this documentation linked below?
Would be great to only have to edit the unminified versions when needed.
I would of course edit the code based on the suivant readytheme css / js and any of our custom css / js.
https://docs.miva.com/readytheme-shadows/notes.html
Code:
Code:<mvt:assign name="l.settings:minify:css:enabled" value="1" /> <mvt:comment> CSS Files </mvt:comment> <mvt:comment>Set your theme file path here.</mvt:comment> <mvt:assign name="g.theme_path" value="'/mm5/themes/shadows'" /> <mvt:comment>Set the core files.</mvt:comment> <mvt:assign name="l.settings:css:files[1]" value="g.theme_path $ '/core/css/base/normalize.css'" /> <mvt:assign name="l.settings:css:files[2]" value="g.theme_path $ '/core/css/base/resets.css'" /> <mvt:assign name="l.settings:css:files[3]" value="g.theme_path $ '/core/css/elements/forms.css'" /> <mvt:assign name="l.settings:css:files[4]" value="g.theme_path $ '/core/css/elements/links.css'" /> <mvt:assign name="l.settings:css:files[5]" value="g.theme_path $ '/core/css/elements/media.css'" /> <mvt:assign name="l.settings:css:files[6]" value="g.theme_path $ '/core/css/elements/page.css'" /> <mvt:assign name="l.settings:css:files[7]" value="g.theme_path $ '/core/css/elements/tables.css'" /> <mvt:assign name="l.settings:css:files[8]" value="g.theme_path $ '/core/css/elements/typography.css'" /> <mvt:assign name="l.settings:css:files[9]" value="g.theme_path $ '/core/css/objects/layout.css'" /> <mvt:assign name="l.settings:css:files[10]" value="g.theme_path $ '/core/css/objects/lists.css'" /> <mvt:assign name="l.settings:css:files[11]" value="g.theme_path $ '/core/css/objects/tables.css'" /> <mvt:assign name="l.settings:css:files[12]" value="g.theme_path $ '/core/css/objects/wrapper.css'" /> <mvt:assign name="l.settings:css:files[13]" value="g.theme_path $ '/core/css/components/buttons.css'" /> <mvt:assign name="l.settings:css:files[14]" value="g.theme_path $ '/core/css/components/control-groups.css'" /> <mvt:assign name="l.settings:css:files[15]" value="g.theme_path $ '/core/css/components/divider.css'" /> <mvt:assign name="l.settings:css:files[16]" value="g.theme_path $ '/core/css/components/forms.css'" /> <mvt:assign name="l.settings:css:files[17]" value="g.theme_path $ '/core/css/components/keyline.css'" /> <mvt:assign name="l.settings:css:files[18]" value="g.theme_path $ '/core/css/components/menu.css'" /> <mvt:assign name="l.settings:css:files[19]" value="g.theme_path $ '/core/css/components/mini-modal.css'" /> <mvt:assign name="l.settings:css:files[20]" value="g.theme_path $ '/core/css/components/navigation.css'" /> <mvt:assign name="l.settings:css:files[21]" value="g.theme_path $ '/core/css/components/tables.css'" /> <mvt:assign name="l.settings:css:files[22]" value="g.theme_path $ '/core/css/components/typography.css'" /> <mvt:assign name="l.settings:css:files[23]" value="g.theme_path $ '/core/css/utilities/borders.css'" /> <mvt:assign name="l.settings:css:files[24]" value="g.theme_path $ '/core/css/utilities/clear-fix.css'" /> <mvt:assign name="l.settings:css:files[25]" value="g.theme_path $ '/core/css/utilities/colors.css'" /> <mvt:assign name="l.settings:css:files[26]" value="g.theme_path $ '/core/css/utilities/display.css'" /> <mvt:assign name="l.settings:css:files[27]" value="g.theme_path $ '/core/css/utilities/grids.css'" /> <mvt:assign name="l.settings:css:files[28]" value="g.theme_path $ '/core/css/utilities/icons.css'" /> <mvt:assign name="l.settings:css:files[29]" value="g.theme_path $ '/core/css/utilities/print.css'" /> <mvt:assign name="l.settings:css:files[30]" value="g.theme_path $ '/core/css/utilities/typography.css'" /> <mvt:assign name="l.settings:css:files[31]" value="g.theme_path $ '/core/css/utilities/vertical-align.css'" /> <mvt:assign name="l.settings:css:files[32]" value="g.theme_path $ '/core/css/utilities/widths.css'" /> <mvt:assign name="l.settings:css:files[33]" value="g.theme_path $ '/core/css/utilities/z-index.css'" /> <mvt:comment>Set the extension files.</mvt:comment> <mvt:assign name="l.settings:css:files[34]" value="g.theme_path $ '/extensions/breadcrumbs/collapsing-breadcrumbs.css'" /> <mvt:assign name="l.settings:css:files[35]" value="g.theme_path $ '/extensions/category-tree/category-tree.css'" /> <mvt:assign name="l.settings:css:files[36]" value="g.theme_path $ '/extensions/display-list-filtering/display-list-filtering.css'" /> <mvt:assign name="l.settings:css:files[37]" value="g.theme_path $ '/extensions/hero/hero.css'" /> <mvt:assign name="l.settings:css:files[38]" value="g.theme_path $ '/extensions/messages/messages.css'" /> <mvt:assign name="l.settings:css:files[39]" value="g.theme_path $ '/extensions/pagination/pagination.css'" /> <mvt:assign name="l.settings:css:files[40]" value="g.theme_path $ '/extensions/product-layout/product-layout.css'" /> <mvt:assign name="l.settings:css:files[41]" value="g.theme_path $ '/extensions/product-lists/product-lists.css'" /> <mvt:assign name="l.settings:css:files[42]" value="g.theme_path $ '/extensions/search-preview/search-preview.css'" /> <mvt:assign name="l.settings:css:files[43]" value="g.theme_path $ '/extensions/subscriptions/subscriptions.css'" /> <mvt:assign name="l.settings:css:files[44]" value="g.theme_path $ '/extensions/mini-basket/mini-basket.css'" /> <mvt:assign name="l.settings:css:files[45]" value="g.theme_path $ '/extensions/quantify/quantify.css'" /> <mvt:assign name="l.settings:css:files[46]" value="g.theme_path $ '/extensions/tabs/flex-tabs.css'" /> <mvt:assign name="l.settings:css:files[47]" value="g.theme_path $ '/extensions/navigation/transfigure-navigation.css'" /> <mvt:assign name="l.settings:css:files[48]" value="g.theme_path $ '/extensions/carousel/roundabout.css'" /> <mvt:assign name="l.settings:css:files[49]" value="g.theme_path $ '/extensions/facets/facets.css'" /> <mvt:assign name="l.settings:css:files[50]" value="g.theme_path $ '/extensions/fasten-header/fasten-header.css'" /> <mvt:comment>Set the theme files.</mvt:comment> <mvt:assign name="l.settings:css:files[51]" value="g.theme_path $ '/ui/css/theme-styles.css'" /> <mvt:if expr="NOT l.settings:minify:css:enabled"> <mvt:foreach iterator="file" array="css:files"> <mvt:assign name="l.settings:file" value="l.settings:file $ '?v=' $ stime(l.settings:file)" /> <link rel="stylesheet" href="//&mvte:global:domain:name;&mvt:file;"> </mvt:foreach> <mvt:else> <mvt:comment> Concatinate Styles </mvt:comment> <mvt:foreach iterator="file" array="css:files"> <mvt:assign name="l.settings:this_file:length" value="file_read(l.settings:file, 'script', l.settings:this_file:contents)"/> <mvt:assign name="l.settings:minify:css:output_file:contents" value="l.settings:minify:css:output_file:contents $ g.newline $ l.settings:this_file:contents" /> </mvt:foreach> <mvt:comment> Minified Output File Variables </mvt:comment> <mvt:assign name="l.settings:minify:css:output_file:directory" value="g.theme_path $ '/'"/> <mvt:assign name="l.settings:minify:css:output_file:name" value="'readytheme-styles.css'"/> <mvt:assign name="l.settings:minify:css:output_file:path" value="l.settings:minify:css:output_file:directory $ l.settings:minify:css:output_file:name"/> <mvt:comment> Determine time of last modified file </mvt:comment> <mvt:assign name="l.settings:minify:css:most_recent_stime" value="0" /> <mvt:foreach iterator="file" array="css:files"> <mvt:comment> Miva creates new files and sets their File Modified time in GMT. Therefore, if your FTP program sets the File Modified time in your local time, then you need to update this accordingly </mvt:comment> <mvt:assign name="l.settings:minify:timezone_offset" value="60 * 60 * 8" /> <mvt:assign name="l.settings:minify:css:current_stime" value="stime(l.settings:file) + l.settings:minify:timezone_offset" /> <mvt:assign name="l.settings:file" value="l.settings:file $ '?v=' $ l.settings:minify:css:current_stime" /> <mvt:if expr="l.settings:minify:css:current_stime GT l.settings:minify:css:most_recent_stime"> <mvt:assign name="l.settings:minify:css:most_recent_stime" value="l.settings:minify:css:current_stime" /> </mvt:if> </mvt:foreach> <mvt:assign name="l.settings:minify:css:output_file:stime" value="stime(l.settings:minify:css:output_file:path)" /> <mvt:comment>< Minified Output File CRUD ></mvt:comment> <mvt:if expr="l.settings:minify:css:most_recent_stime GT l.settings:minify:css:output_file:stime"> <mvt:assign name="l.settings:minify:css:output_file:stime" value="l.settings:minify:css:most_recent_stime" /> <mvt:assign name="l.settings:minify:css:output_file:exists" value="sexists(l.settings:minify:css:output_file:path)"/> <mvt:if expr="l.settings:minify:css:output_file:exists EQ 1"> <mvt:assign name="l.settings:minify:css:output_file:deleted" value="sdelete(l.settings:minify:css:output_file:path)"/> <mvt:if expr="l.settings:minify:css:output_file:deleted EQ 1"> <mvt:assign name="l.settings:minify:css:file_created" value="file_create(l.settings:minify:css:output_file:path, 'script', l.settings:minify:css:output_file:contents)"/> </mvt:if> <mvt:else> <mvt:assign name="l.settings:minify:css:file_created" value="file_create(l.settings:minify:css:output_file:path, 'script', l.settings:minify:css:output_file:contents)"/> </mvt:if> </mvt:if> <link rel="stylesheet" href="&mvt:minify:css:output_file:path;"> </mvt:if>
https://gist.github.com/steveosoule/...04cbb548222e4e
Css Code
Code:<mvt:if expr="NOT ISNULL g.minify_css_enabled"> <mvt:assign name="l.settings:minify:css:enabled" value="g.minify_css_enabled" /> <mvt:else> <mvt:assign name="l.settings:minify:css:enabled" value="1" /> </mvt:if> <mvt:if expr="NOT ISNULL g.minify_css_method"> <mvt:assign name="l.settings:minify:css:method" value="g.minify_css_method" /> <mvt:else> <mvt:assign name="l.settings:minify:css:method" value="'munee'" /> </mvt:if> <mvt:comment><!-- CSS Files --></mvt:comment> <mvt:assign name="l.settings:css:files[1]" value="'/css/normalize.css'" /> <mvt:assign name="l.settings:css:files[2]" value="'/css/base.css'" /> <mvt:assign name="l.settings:css:files[3]" value="'/css/scaffolding.css'" /> <mvt:assign name="l.settings:css:files[4]" value="'/css/typography.css'" /> <mvt:assign name="l.settings:css:files[5]" value="'/css/buttons.css'" /> <mvt:assign name="l.settings:css:files[6]" value="'/css/fonts.css'" /> <mvt:assign name="l.settings:css:files[7]" value="'/css/forms.css'" /> <mvt:assign name="l.settings:css:files[8]" value="'/css/tables.css'" /> <mvt:assign name="l.settings:css:files[9]" value="'/css/colors.css'" /> <mvt:assign name="l.settings:css:files[10]" value="'/css/slider.css'" /> <mvt:assign name="l.settings:css:files[11]" value="'/css/tabs.css'" /> <mvt:assign name="l.settings:css:files[12]" value="'/css/helpers.css'" /> <mvt:assign name="l.settings:css:files[13]" value="'/css/structure.css'" /> <mvt:assign name="l.settings:css:files[14]" value="'/css/pages.css'" /> <mvt:assign name="l.settings:css:files[15]" value="'/css/autocomplete.css'" /> <mvt:assign name="l.settings:css:files[16]" value="'/css/print.css'" /> <mvt:assign name="l.settings:css:files[17]" value="'/vendor/jquery.qtip.custom/jquery.qtip.min.css'" /> <mvt:assign name="l.settings:css:files[18]" value="'/vendor/Easy-Responsive-Tabs-to-Accordion/css/easy-responsive-tabs.css'" /> <mvt:assign name="l.settings:minify:css:critical:file" value="'/css/critical.css'" /> <mvt:if expr="NOT l.settings:minify:css:enabled"> <mvt:foreach iterator="file" array="css:files"> <mvt:assign name="l.settings:file" value="l.settings:file $ '?v=' $ stime(l.settings:file)" /> <link rel="stylesheet" href="//&mvte:global:domain:name;&mvt:file;"> </mvt:foreach> <mvt:else> <mvt:comment><!-- In-line Critical CSS --></mvt:comment> <mvt:assign name="l.settings:minify:css:critical:exists" value="sexists(l.settings:minify:css:critical:file)"/> <mvt:if expr="l.settings:minify:css:critical:exists"> <mvt:assign name="l.settings:minify:css:critical:length" value="file_read(l.settings:minify:css:critical:file, 'script', l.settings:minify:css:critical:contents)"/> <style>&mvt:minify:css:critical:contents;</style> </mvt:if> <mvt:comment><!-- Minify Method --></mvt:comment> <mvt:if expr="l.settings:minify:css:method EQ 'munee'"> <mvt:assign name="l.settings:minify:css:url" value="'http://www.thepaperstore.com/munee.php?files=' $ l.settings:css:files $ '&minify=true'" /> <mvt:item name="toolkit" param="vcallurl|l.all_settings:minify:css:output_file:contents|l.all_settings:minify:css:url|GET|" /> <mvt:elseif expr="l.settings:minifiy:css:method EQ 'basic_php'"> <mvt:assign name="l.settings:minify:css:url" value="'http://www.thepaperstore.com/css/css_v2.php?files=' $ l.settings:css:files" /> <mvt:item name="toolkit" param="vcallurl|l.all_settings:minify:css:output_file:contents|l.all_settings:minify:css:url|GET|" /> <mvt:else> <mvt:comment><!-- Concatinate Styles --></mvt:comment> <mvt:foreach iterator="file" array="css:files"> <mvt:assign name="l.settings:this_file:length" value="file_read(l.settings:file, 'script', l.settings:this_file:contents)"/> <mvt:assign name="l.settings:minify:css:output_file:contents" value="l.settings:minify:css:output_file:contents $ g.newline $ l.settings:this_file:contents" /> </mvt:foreach> </mvt:if> <mvt:comment><!-- Minified Output File Variables --></mvt:comment> <mvt:assign name="l.settings:minify:css:output_file:directory" value="'/css/'"/> <mvt:assign name="l.settings:minify:css:output_file:name" value="'miva-styles.min.css'"/> <mvt:assign name="l.settings:minify:css:output_file:path" value="l.settings:minify:css:output_file:directory $ l.settings:minify:css:output_file:name"/> <mvt:comment><!-- Determine time of last modified file --></mvt:comment> <mvt:assign name="l.settings:minify:css:most_recent_stime" value="0" /> <mvt:foreach iterator="file" array="css:files"> <mvt:comment> <!-- Miva creates new files and sets their File Modified time in GMT. Therefore, if your FTP program sets the File Modified time in your local time, then you need to update this accordingly --> </mvt:comment> <mvt:assign name="l.settings:minify:timezone_offset" value="60 * 60 * 8" /> <mvt:assign name="l.settings:minify:css:current_stime" value="stime(l.settings:file) + l.settings:minify:timezone_offset" /> <mvt:assign name="l.settings:file" value="l.settings:file $ '?v=' $ l.settings:minify:css:current_stime" /> <mvt:if expr="l.settings:minify:css:current_stime GT l.settings:minify:css:most_recent_stime"> <mvt:assign name="l.settings:minify:css:most_recent_stime" value="l.settings:minify:css:current_stime" /> </mvt:if> </mvt:foreach> <mvt:assign name="l.settings:minify:css:output_file:stime" value="stime(l.settings:minify:css:output_file:path)" /> <mvt:comment><!-- Minified Output File CRUD --></mvt:comment> <mvt:if expr="l.settings:minify:css:most_recent_stime GT l.settings:minify:css:output_file:stime"> <mvt:assign name="l.settings:minify:css:output_file:stime" value="l.settings:minify:css:most_recent_stime" /> <mvt:assign name="l.settings:minify:css:output_file:exists" value="sexists(l.settings:minify:css:output_file:path)"/> <mvt:if expr="l.settings:minify:css:output_file:exists EQ 1"> <mvt:assign name="l.settings:minify:css:output_file:deleted" value="sdelete(l.settings:minify:css:output_file:path)"/> <mvt:if expr="l.settings:minify:css:output_file:deleted EQ 1"> <mvt:assign name="l.settings:minify:css:file_created" value="file_create(l.settings:minify:css:output_file:path, 'script', l.settings:minify:css:output_file:contents)"/> </mvt:if> <mvt:else> <mvt:assign name="l.settings:minify:css:file_created" value="file_create(l.settings:minify:css:output_file:path, 'script', l.settings:minify:css:output_file:contents)"/> </mvt:if> </mvt:if> <link rel="stylesheet" href="//&mvte:global:domain:name;&mvt:minify:css:output_file:path;?v=&mvt:minify:css:output_file:stime;"> </mvt:if>
Code:<mvt:assign name="g.newline" value="asciichar(10)"/> <mvt:if expr="NOT ISNULL g.minify_js_enabled"> <mvt:assign name="l.settings:minify:js:enabled" value="g.minify_js_enabled" /> <mvt:else> <mvt:assign name="l.settings:minify:js:enabled" value="1" /> </mvt:if> <mvt:if expr="NOT ISNULL g.minify_js_method"> <mvt:assign name="l.settings:minify:js:method" value="g.minify_js_method" /> <mvt:else> <mvt:assign name="l.settings:minify:js:method" value="'munee'" /> </mvt:if> <mvt:comment> <!-- <script> var miva.data = { minibasket: <mvt:item name="ry_toolbelt" param="eval|Json_Stringify(l.all_settings:global_minibasket)" />, customer: <mvt:item name="ry_toolbelt" param="eval|Json_Stringify(g.customer)" /> }; </script> --> </mvt:comment> <mvt:comment><!-- JavaScript Files --></mvt:comment> <mvt:assign name="l.settings:js:files[1]" value="'/js/modernizr.js'" /> <mvt:assign name="l.settings:js:files[2]" value="'/js/plugins.js'" /> <mvt:assign name="l.settings:js:files[3]" value="'/js/mvscreen.js'" /> <mvt:if expr="NOT l.settings:minify:js:enabled"> <mvt:foreach iterator="file" array="js:files"> <mvt:assign name="l.settings:file" value="l.settings:file $ '?v=' $ stime(l.settings:file)" /> <script src="//&mvte:global:domain:name;&mvt:file;"></script> </mvt:foreach> <mvt:else> <mvt:comment><!-- Minify Method --></mvt:comment> <mvt:comment><!-- Concatinate Scripts --></mvt:comment> <mvt:foreach iterator="file" array="js:files"> <mvt:assign name="l.settings:this_file:length" value="file_read(l.settings:file, 'script', l.settings:this_file:contents)"/> <mvt:assign name="l.settings:minify:js:output_file:contents" value="l.settings:minify:js:output_file:contents $ g.newline $ ';' $ l.settings:this_file:contents" /> </mvt:foreach> <mvt:comment><!-- Minified Output File Variables --></mvt:comment> <mvt:assign name="l.settings:minify:js:output_file:directory" value="'/js/'"/> <mvt:assign name="l.settings:minify:js:output_file:name" value="'miva-scripts.min.js'"/> <mvt:assign name="l.settings:minify:js:output_file:path" value="l.settings:minify:js:output_file:directory $ l.settings:minify:js:output_file:name"/> <mvt:comment><!-- Determine time of last modified file --></mvt:comment> <mvt:assign name="l.settings:minify:js:most_recent_stime" value="0" /> <mvt:foreach iterator="file" array="js:files"> <mvt:comment> <!-- Miva creates new files and sets their File Modified time in GMT. Therefore, if your FTP program sets the File Modified time in your local time, then you need to update this accordingly --> </mvt:comment> <mvt:assign name="l.settings:minify:timezone_offset" value="60 * 60 * 8" /> <mvt:assign name="l.settings:minify:js:current_stime" value="stime(l.settings:file) + l.settings:minify:timezone_offset" /> <mvt:assign name="l.settings:file" value="l.settings:file $ '?v=' $ l.settings:minify:js:current_stime" /> <mvt:if expr="l.settings:minify:js:current_stime GT l.settings:minify:js:most_recent_stime"> <mvt:assign name="l.settings:minify:js:most_recent_stime" value="l.settings:minify:js:current_stime" /> </mvt:if> </mvt:foreach> <mvt:assign name="l.settings:minify:js:output_file:stime" value="stime(l.settings:minify:js:output_file:path)" /> <mvt:comment><!-- Minified Output File CRUD --></mvt:comment> <mvt:if expr="l.settings:minify:js:most_recent_stime GT l.settings:minify:js:output_file:stime"> <mvt:assign name="l.settings:minify:js:output_file:stime" value="l.settings:minify:js:most_recent_stime" /> <mvt:assign name="l.settings:minify:js:output_file:exists" value="sexists(l.settings:minify:js:output_file:path)"/> <mvt:if expr="l.settings:minify:js:output_file:exists EQ 1"> <mvt:assign name="l.settings:minify:js:output_file:deleted" value="sdelete(l.settings:minify:js:output_file:path)"/> <mvt:if expr="l.settings:minify:js:output_file:deleted EQ 1"> <mvt:assign name="l.settings:minify:js:file_created" value="file_create(l.settings:minify:js:output_file:path, 'script', l.settings:minify:js:output_file:contents)"/> </mvt:if> <mvt:else> <mvt:assign name="l.settings:minify:js:file_created" value="file_create(l.settings:minify:js:output_file:path, 'script', l.settings:minify:js:output_file:contents)"/> </mvt:if> </mvt:if> <script src="//&mvte:global:domain:name;&mvt:minify:js:output_file:path;?v=&mvt:minify:js:output_file:stime;"></script> </mvt:if>
Any benefit to using the miva code vs toolkit?
Thanks,
Nick
Leave a comment:
-
Are you adding your new CSS and JavaScript files to the relevant Combined Resource?
Leave a comment:
-
I have encountered an issue where when adding new css or js resources, they do not output to the site. I have cleared the cache multiple times, with no effect. Is there another means that I need to use to get these resources to output?
Leave a comment:
-
Hi Leslie,
Good point, I will look into it. As for other sites, you should be able to modify the XML to fit the theme and the contact us form should work the same.
Leave a comment:
-
Originally posted by Matt Zimmermann View PostTo All Suivant ReadyTheme Users,
One of the star qualities of Miva Merchant is the security the platform provides for your site. To ensure site security, I have removed PHP files from the Suivant ReadyTheme which were used for processing the Contact Us form as well as providing concatenation/minification of the CSS files used in the theme. These functions have been replaced with a variation of the contact form shipped with Shadows as well as the built-in CSS/JavaScript Resources functionality.
A new framework has been uploaded to the App Store. If you would like to perform this update on your site, you can download the update files and run through the included instructions. If your site is heavily customized or you are unsure of performing these updates on your own, please contact Support or Professional Services for assistance.
Suggestion - since this is urgent, perhaps it should go out in an email to all registered Miva stores. The instructions included with the update are good (just the way I like them).
Question - is this update usable for any other site that might be using some sort of PHP forms?
Thanks!
Leslie
Leave a comment:
-
PHP Removal Update for Suivant
To All Suivant ReadyTheme Users,
One of the star qualities of Miva Merchant is the security the platform provides for your site. To ensure site security, I have removed PHP files from the Suivant ReadyTheme which were used for processing the Contact Us form as well as providing concatenation/minification of the CSS files used in the theme. These functions have been replaced with a variation of the contact form shipped with Shadows as well as the built-in CSS/JavaScript Resources functionality.
A new framework has been uploaded to the App Store. If you would like to perform this update on your site, you can download the update files and run through the included instructions. If your site is heavily customized or you are unsure of performing these updates on your own, please contact Support or Professional Services for assistance.
Tags: None
- Stuck
- Featured
Leave a comment: