Home » Virtuemart

Virtuemart templates etc.

List Menu in VM module

menu

A virtuemart module (v. 1.1.4) doesn't load VM stylesheet theme.css in to the Joomla home page. If VM content is not  in home page (there is articles etc.), Joomla only loads stylesheets from a template, not themes.css from directory /component/com_virtuemart/themes/(default). If you have done menu design for Link List menu in theme.css, you have to copy it into template stylesheet for a good view. It is wrong, I think. You can add theme.css and you haven't to change a section <head> in a template. The code changes are listed below.

Zobrazení menu a dalších sekcí obchodu bez ohledu na to, jestli je zrovna hlavním obsahem stránky obchod nebo běžný obsah (články, blog...), zajišťuje modul VM. Je to modul Joomla jako kterýkoli jiný, nastavuje se tedy mimo komponentu Virtuemart. Pokud v modulu nastavíte "nejavascriptové" Link List menu, ale toto menu "ostylujete" jen v souboru theme.css v adresáři /components/com_virtuemart/themes/(default)/, bude zobrazeno správně jen pokud bude hlavním obsahem stránky shop. Modul totiž nenačte do sekce <head> stránky pro toto menu soubor theme.css. Načítá ho až komponenta Joomla v okamžiku, kdy ona sama vytváří obsah - tedy když je v hlavním prostoru stránky zobrazen obchod.

Abyste nemuseli kopírovat styl pro menu obchodu i do css souboru, linkovaného do běžné šablony, stačí přidat několik řádků kódu do skriptu modulu. Skript mod_virtuemart.php najdete v adresáři /modules/mod_virtuemart/. O zápis HTML kódu se starají následující řádky (cca 67. řádek):

if( $show_categories == "yes" ) {
if ( $menutype == 'links' ) {
/* MENUTPE LINK LIST */
echo $ps_product_category->get_category_tree( $category_id, $class_mainlevel );

 

Za tyto řádky stačí doplnit :

Add next code below previous code in a script mod_virtuemart.php:

 

if(JRequest::getCmd( 'option' )!='com_virtuemart')
{
$document =& JFactory::getDocument();
$document->addStyleSheet(VM_THEMEURL.'theme.css');
}

 

Podmínka if zajistí, že theme.css se tímto způsobem zařadí do hlavičky jen když hlavním obsahem není VM, v opačném případě to nechá na VM. Joomla při zobrazování článků a nikoli obchodu načte v hlavičce <head> nejen css soubor šablony z adresáře /templates/(templatename)/css/, ale i soubor theme.css ze zvoleného designu VM, například z /components/com_virtuemart/themes/default/.

Původní HTML kód (original head):

 

<head>
   ...
      <link rel="stylesheet" href="/alobchod/templates/beez/css/layout.css" type="text/css" media="all" />
   ...
</head>

 

Po změně (new head):

 

<head>
...
<link rel="stylesheet" href="http://localhost/alobchod/components/com_virtuemart/themes/default/theme.css" type="text/css" />
<link rel="stylesheet" href="/alobchod/templates/beez/css/layout.css" type="text/css" media="all" />
...
</head>