Optimizing Design Customizations


(Ryan Archer) #1

Just wondering if anyone has a 'best practice' approach when it comes to handling multiple customisations of a design asset.

I am using a slightly older version of Squiz Matrix (v4.18.4) and I am delivering a customised website experience for several user groups.

 

So for example, when a particular user visits the homepage they see different graphics, links and text as compared to users in other groups. I have set this up via cookies and triggers to push public users into temp assigned user groups.

 

Anyway, to achive the display, I have had to setup multiple design content areas within the asset file and I believe it's getting too much for the system. For example:

<!-- Nested drop down menu picker to choose public user group -->
<MySource_AREA id_name="choose_plc_group" design_area="nest_content" />

<!-- Inserting nested content design area (customised sliders)  for use within IF_ELSE design area, turned off here and turned on within show_if statement if condition is met -->
<MySource_AREA id_name=“ikc_panel” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“rlq_panel” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“ind_panel” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“global_panel” design_area=“nest_content” print=“no” />

<!-- Customised Quicklinks nested contend area, personalised to each group -->
<MySource_AREA id_name=“ikc_quicklinks” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“rlq_quicklinks” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“ind_quicklinks” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“global_quicklinks” design_area=“nest_content” print=“no” />

<!-- Customised news items summary listing, personalised to each group -->
<MySource_AREA id_name=“ikc_news” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“rlq_news” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“ind_news” design_area=“nest_content” print=“no” />
<MySource_AREA id_name=“global_news” design_area=“nest_content” print=“no” />

<!-- Decision making system that decides what to display based on user group access -->

<MySource_AREA id_name=“in_group_ind” design_area=“show_if” print=“no”>
    <MySource_SET name=“condition” value=“in_user_group” />
        <MySource_THEN><MySource_print id_name=“ind_panel” /><MySource_print id_name=“ind_quicklinks” /></MySource_THEN>
        <MySource_ELSE><MySource_print id_name=“global_panel” /><MySource_print id_name=“global_quicklinks” /></MySource_ELSE>
</MySource_AREA>

<MySource_AREA id_name=“in_group_ikc” design_area=“show_if” print=“no”>
    <MySource_SET name=“condition” value=“in_user_group” />
        <MySource_THEN><MySource_print id_name=“ikc_panel” /><MySource_print id_name=“ikc_quicklinks” /></MySource_THEN>
        <MySource_ELSE><MySource_print id_name=“in_group_ind” /></MySource_ELSE>
</MySource_AREA>

<MySource_AREA id_name=“in_group_rlq” design_area=“show_if”>
    <MySource_SET name=“condition” value=“in_user_group” />
        <MySource_THEN><MySource_print id_name=“rlq_panel” /><MySource_print id_name=“rlq_quicklinks” /></MySource_THEN>
        <MySource_ELSE><MySource_print id_name=“in_group_ikc” /></MySource_ELSE>
</MySource_AREA>
                     

Now this is causing HIPO crashes like 80% of the time. Right now, this is the only way I know how to achieve what is required. Are there other less intensive ways to achieve the same outcome? I know that by using all these custom design areas its causing load to the system as it has to unlock each and every one of them.

 


(Nic Hubbard) #2

I think as a general rule, you want to keep the number of customizations low. However, we have a site that has at least 40 Design Customizations. It does take quite a while to parse the Design asset, however, once that is done, you shouldn't see any issues, as it creates a PHP file internally with all the logic that is needed.

 

You should be able to just use one nested content area instead of four for each of those sections you show. Within your customization you would choose the different asset that would be nested, so there isn't a need to have 4 or even 12 nested areas like that.


(Ryan Archer) #3

Yes Nic, you do make a good comment about combining the nested content areas. I do lose the modularity of the setup but gain performance boost.

Thanks.


(Evan Wills) #4

@coolwebs We do a lot of the same thing, using metadata to allow editors to customise parts of the page.

 

Our main parse file has 37 SHOW_IFs and 55 customisations.It takes at least 45 minutes to parse including being logged out several times and having to restart the hippo, so I feel your pain.

 

One thing we're thinking about to do the sort of thing you're doing, is using Matrix's "Contexts" functionality, which (I think), delegates the responsibility of choosing what should be shown to the asset level. But we haven't gotten very far yet. I don't know enough about it yet to give you any info but others might.


(Ryan Archer) #5

I think the new "conditions" feature in the new Squiz release provides solutions to this issue. I have already started implementing it and cleaning up all the design customisations. Wish the conditions could be applied to other assets like asset listing page, search page and such...


(Anthony Ponomarenko) #6

You could nest those assets inside a standard page to achieve conditional display.


(Ryan Archer) #7

Yeah, I figured that one out. Can also use Paint Layouts and conditional keywords too.

Have to use global_asset_content kewords to nest content with conditionals I just discovered.

 

http://forums.squizsuite.net/index.php?showtopic=8295&hl=