View Single Post
  #1  
Old 12-26-2012, 12:00 PM
  ADDISON's Avatar 
ADDISON ADDISON is offline
 

X-Man
  
Join Date: Jan 2008
Posts: 2,613
 

Default Drop Down List in Manufacturers menu

Over years a lot of you requested having Manufacturers listed in a drop down list in Customer area. This customization will allow you to keep default XC behavior, but having the drop down list too.

All you need is configuring as you want Manufacturers menu in Modules -> Manufacturers with a few clicks. This one is a very easy customization.

Steps you have to do:

1) Edit [XC_Dir]/skin/common_files/modules/Manufacturers/menu_manufacturers.tpl

2) Create 2 new configuration settings for using them in Manufacturers module settings

3) Create 2 new language Labels

STEP 1 - File menu_manufacturers.tpl

original (default XC Gold+ 4.5.4)

PHP Code:
{*
$Idmenu_manufacturers.tpl,v 1.1.2.2 2010/12/09 14:00:53 aim Exp $
vimset ts=2 sw=2 sts=2 et:
*}
{if 
$manufacturers_menu ne ''}

  {
capture name=menu}
    <
ul>

      {foreach 
from=$manufacturers_menu item=m}
         <
li><a href="manufacturers.php?manufacturerid={$m.manufacturerid}">{$m.manufacturer|amp}</a></li>
      {/foreach}

      {if 
$show_other_manufacturers}
        <
li><a href="manufacturers.php">{$lng.lbl_other_manufacturers}</a></li>
      {/if}

    </
ul>
  {/
capture}
  {include 
file="customer/menu_dialog.tpl" title=$lng.lbl_manufacturers content=$smarty.capture.menu additional_class="menu-manufacturers"}

{/if} 

modified

PHP Code:
{*
$Idmenu_manufacturers.tpl,v 1.1.2.2 2010/12/09 14:00:53 aim Exp $
vimset ts=2 sw=2 sts=2 et:
*}
{if 
$manufacturers_menu ne ''}

  {
capture name=menu}
  
      {if  
$config.Manufacturers.manufacturers_menu_drop_down eq 'Y'}
      <
ul>

          <
select name='manufacturers' onchange="javascript:if (this.value) self.location=this.value;">
          <
option value="">{$lng.lbl_manufacturers_drop_down}</option>
                          
          {foreach 
from=$manufacturers item=m}
              <
li>
              {if 
$m.manufacturerid neq 0}
              <
option value="manufacturers.php?manufacturerid={$m.manufacturerid}">{$m.manufacturer|amp}</option>
              </
li>
              {/if}
          {/foreach}
      
      </
select>
            
            {if 
$config.Manufacturers.manufacturers_menu_view_all eq 'Y'}
        <
li><a href="manufacturers.php">{$lng.lbl_manufacturers_view_all}</a></li>
      {/if}

    </
ul>  
        
        {else}
        
            <
ul>
    
        {foreach 
from=$manufacturers_menu item=m}
          <
li><a href="manufacturers.php?manufacturerid={$m.manufacturerid}">{$m.manufacturer|amp}</a></li>
        {/foreach}

      {if 
$show_other_manufacturers}
        <
li><a href="manufacturers.php">{$lng.lbl_other_manufacturers}</a></li>
      {/if}

        </
ul>
    {/if}
  {/
capture}
  {include 
file="customer/menu_dialog.tpl" title=$lng.lbl_manufacturers content=$smarty.capture.menu additional_class="menu-manufacturers"}

{/if} 

STEP 2 - Create 2 new configuration settings for using them in Manufacturers module settings

- manufacturers_menu_drop_down - by default it is checked. It will group all Manufacturers in a drop down list. If you uncheck it you will see the default XC behavior, using Manufacturers list limit value.

- manufacturers_menu_view_all - by default it is checked. It will show "View All" link at the bottom of drop down list. If you uncheck it you won't see this link.

Here are SQL statements for creating these 2 new options.

Code:
insert into `xcart_config` (`name`, `comment`, `value`, `category`, `orderby`, `type`, `defvalue`, `variants`, `validation`) values('manufacturers_menu_drop_down','Group all manufacturers in a drop down list','Y','Manufacturers','5','checkbox','N','',''); insert into `xcart_config` (`name`, `comment`, `value`, `category`, `orderby`, `type`, `defvalue`, `variants`, `validation`) values('manufacturers_menu_view_all','Include \"View All\" option when drop down list is used','Y','Manufacturers','6','checkbox','N','','');

STEP 3 - Create 2 new language Labels

- lbl_manufacturers_drop_down - this is for first option in drop down list set to "Please select".

- lbl_manufacturers_view_all - this label is for "View All" text.

Here are SQL statements for creating these 2 new options.

Code:
insert into `xcart_languages` (`code`, `name`, `value`, `topic`) values('en','lbl_manufacturers_drop_down','Please select','Labels'); insert into `xcart_languages` (`code`, `name`, `value`, `topic`) values('en','lbl_manufacturers_view_all','View All','Labels');

Once you do these small changes cleanup your website cache (in my case it worked without cleaning up). If you visit again you should find the new results (see the attachments).

Do not forget to backup the data before starting modification. And create a few Manufacturers in Back End (XC is not coming with any Manufacturers created).

>> If you like this customization please click [Thanks] button for this post. Having lots of [Thanks] hope Qualiteam will take in consideration inserting this customization into future versions
Attached Thumbnails
Click image for larger version

Name:	manufacturers_settings.jpg
Views:	107
Size:	58.2 KB
ID:	3315  Click image for larger version

Name:	manufacturers_default.jpg
Views:	101
Size:	41.8 KB
ID:	3316  Click image for larger version

Name:	manufacturers_view_all-1.jpg
Views:	113
Size:	39.2 KB
ID:	3317  Click image for larger version

Name:	manufacturers_view_all-2.jpg
Views:	101
Size:	39.6 KB
ID:	3318  
__________________
X-Cart Next: Business 5.2 (learning and testing)
X-Cart Classic: Gold and Gold Plus 4.7
Lots of Modules and Customizations
OS in use: Red Hat Enterprise, Fedora, CentOS, Debian, Ubuntu, Linux Mint, Kali Linux
Ideas for Server configuration (basicaly): Nginx/Pound (reverse proxy), Apache/Nginx (webserver), Squid/Varnish (cache server), HHVM or (PHP-FPM + PHP 5.6 + opcache), MariaDB/Percona MySQL Server, Redis (storing sessions)

You can catch my ideas here: http://ideas.x-cart.com
Reply With Quote