When you have only one country to ship to and it is clear that you are shipping only to that country alone, you can simplify your shipping estimation by removing a country field:
shipping_estimation.tpl
Comment the next block with {* *} like so:
<br />
{*<br />
<div class="form-field"><br />
<label for="{$prefix}elm_country{$id_suffix}" class="cm-country cm-location-estimation{$class_suffix}">{$lang.country}:</label><br />
<select id="{$prefix}elm_country{$id_suffix}" class="cm-location-estimation{$class_suffix}" name="customer_location[country]"><br />
<option value="">- {$lang.select_country} -</option><br />
{assign var="countries" value=1|fn_get_simple_countries}<br />
{foreach from=$countries item=country key=ccode}<br />
<option value="{$ccode}" {if ($cart.user_data.s_country == $ccode) || (!$cart.user_data.s_country && $ccode == $settings.General.default_country)}selected="selected"{/if}>{if $block.properties.positions == "left" || $block.properties.positions == "right"}{$country|truncate:18}{else}{$country}{/if}</option><br />
{/foreach}<br />
</select><br />
</div><br />
*}<br />
```<br />
<br />
and add below to the next line<br />
<br />
```php
<input type="hidden" name="customer_location[country]" value="US"><br />
```<br />
<br />
And change "US" value to any other if you have a different country.
In addition, if you will look at View Cart page and will notice that it has a lot of states as javascript array that takes about 50% of the whole webpage HTML code. Since we are working only with US, we don’t care about other states and they still load as a webpage source. So, I went ahead and made it load only US states, much smaller HTML code for the view cart page.
profiles_scripts.tpl
I put in if clause with US check:
```php
var states = new Array();
{if $states}
{foreach from=$states item=country_states key=country_code}
{if $country_code==“US”}
states[‘{$country_code}’] = new Array();
{foreach from=$country_states item=state name=“fs”}
states[‘{$country_code}’][‘__{$state.code|escape:quotes}’] = ‘{$state.state|escape:javascript}’;
{/foreach}
{/if}
{/foreach}
{/if}
```
It seems like this fix should go in core/fn.locations.php to return only available states in available countries:
```php
85c85,91
< $avail_cond = ($avail_only == true) ? " WHERE a.status = 'A' " : '';
—
if ($avail_only == true) {
$avail_cond = “WHERE cc.status = 'A' AND a.status = 'A'”;
$avail_join = 'LEFT JOIN ?:countries as cc ON cc.code = a.country_code';
} else {
$avail_cond = '';
$avail_join = '';
}
88c94
< return db_get_array(“SELECT a.state_id, a.code, b.state, c.country FROM ?:states as a LEFT JOIN ?:state_descriptions as b ON b.state_id = a.state_id AND b.lang_code = ?s LEFT JOIN ?:country_descriptions as c ON c.code = a.country_code AND c.lang_code = ?s $avail_cond ORDER BY a.country_code, b.state”, $lang_code, $lang_code);
—
return db_get_array(“SELECT a.state_id, a.code, b.state, c.country FROM ?:states as a LEFT JOIN ?:state_descriptions as b ON b.state_id = a.state_id AND b.lang_code = ?s LEFT JOIN ?:country_descriptions as c ON c.code = a.country_code AND c.lang_code = ?s $avail_join $avail_cond ORDER BY a.country_code, b.state”, $lang_code, $lang_code);
90c96
< return db_get_hash_multi_array(“SELECT a.country_code, a.code, b.state FROM ?:states as a LEFT JOIN ?:state_descriptions as b ON b.state_id = a.state_id AND b.lang_code = ?s $avail_cond ORDER BY a.country_code, b.state”, array('country_code'), $lang_code);
—
return db_get_hash_multi_array(“SELECT a.country_code, a.code, b.state FROM ?:states as a LEFT JOIN ?:state_descriptions as b ON b.state_id = a.state_id AND b.lang_code = ?s $avail_join $avail_cond ORDER BY a.country_code, b.state”, array('country_code'), $lang_code);
```
[quote name='TexasGuy' timestamp='1273268946' post='79644']
In addition, if you will look at View Cart page and will notice that it has a lot of states as javascript array that takes about 50% of the whole webpage HTML code. Since we are working only with US, we don't care about other states and they still load as a webpage source. So, I went ahead and made it load only US states, much smaller HTML code for the view cart page.
profiles_scripts.tpl
I put in if clause with US check:
```php
var states = new Array();
{if $states}
{foreach from=$states item=country_states key=country_code}
{if $country_code==“US”}
states['{$country_code}'] = new Array();
{foreach from=$country_states item=state name=“fs”}
states['{$country_code}']['__{$state.code|escape:quotes}'] = '{$state.state|escape:javascript}';
{/foreach}
{/if}
{/foreach}
{/if}
```
[/quote]