Joomla 1.5 Изменение оформления страницы разных категорий товаров VM

Тема в разделе "Изменение шаблона (кастомизация)", создана пользователем Иванна, 26.01.2011.

  1. Offline

    Иванна Недавно здесь

    Регистрация:
    26.01.2011
    Сообщения:
    20
    Симпатии:
    0
    Пол:
    Женский
    Здравствуйте! Сразу отпишусь что я не программист, а верстальщик. Возникла следующая задача: в разных категориях товаров магазина на VM необходимо изменить фоновый цвет страницы и изображение страницы. Пытаюсь сделать это в index.php путем добавления строк
    Код (CODE):
    1. <?php if (($option=='com_virtuemart')&&($page=='shop.browse')&&($category_id=='1')) {
    2.     $wrapper_type = 'wrapper_stolovye';}
    3. ?>

    Ничего не получается. Если оставляю в условии просто ($option=='com_virtuemart'), то работает. Но мне-то надо чтобы именно в категории менялось оформление, а не во всём компоненте! Причем в разных категориях, разное оформление. Помогите, пожалуйста. :'(
     
  2.  
  3. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    во-первых: в каком это файле всё делается?
    во-вторых: ты проверил есть ли у тебя вообще в данный момент в памяти эти переменные - $page, $category_id, $wrapper_type
    в-третьих: не проще ли сотворить два-три класса в CSS и при совпадении условий просто переключаться между ними
     
  4. Offline

    Иванна Недавно здесь

    Регистрация:
    26.01.2011
    Сообщения:
    20
    Симпатии:
    0
    Пол:
    Женский
    Это я делаю в шаблоне моего сайта index.php. Переменные я эти взяла из пути
    index.php?option=com_virtuemart&page=shop.browse&category_id=1&Itemid=1
    Если прописываю в условии
    Код (CODE):
    1. <?php if ($option=='com_virtuemart') {
    2.     $wrapper_type = 'wrapper_stolovye';}
    3. ?>

    то работает. Если добавлять к этому условию
    Код (CODE):
    1. ($page=='shop.browse')&&($category_id=='1')

    то не работает.
    $wrapper_type прописан у
    Код (CODE):
    1. <table id="<?php echo $wrapper_type; ?>">

    'wrapper_stolovye' - это id в css.
    Я так и хочу, чтобы при выполнении определенного условия выводились определенные стили для элементов.
    Я просто решила что, если существует $com_virtuemart (я её нигде не задавала) и с ней работает это условие, то $page и $category_id тоже сработают. А где эти переменные надо задать, чтобы они работали в шаблоне? В самом VM они есть.
     
  5. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    где у тебя вообще задаётся эта переменная $wrapper_type только в index.php или она есть ещё и в самом шаблоне VM?
    если она есть в шаблоне VM то просто так ты её исправить не сможешь, и вообще где эта таблица находится?
    с начала файла index.php до таблицы вырежи и от конца таблицы до конца файла, чтобы было понятно куда ты пытаешься это всунуть

    и проверь есть ли у тебя вообще в данный момент в памяти переменная $page и $category_id, если их нету то у тебя просто твой if эти переменные считает равными NULL и пролетает мимо!!!
     
  6. Offline

    Иванна Недавно здесь

    Регистрация:
    26.01.2011
    Сообщения:
    20
    Симпатии:
    0
    Пол:
    Женский
    [COLOR="DarkSlateBlue"][/COLOR]$wrapper_type у меня только в index.php. В VM её нет. И вообще по всему сайту её больше нигде нет. Таблица находится в шаблоне сайта. Вот код:
    Код (CODE):
    1. <?php defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
    4. <head>
    5.     <jdoc:include type="head" />
    6.     <link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl; ?>/templates/delfania/css/template.css" media="screen">
    7. </head>
    8. <body>
    9.     <?php $menu = &JSite::getMenu(); //$menu = &JFactory::getApplication->getMenu()
    10.     if (JRequest::getInt('Itemid') == $menu->getDefault())
    11.     {
    12.         $wrapper_type = 'wrapper_home';
    13.         $middle_type = 'middle_home';
    14.     }
    15.     else
    16.     {
    17.         $wrapper_type = 'wrapper_home';
    18.         $middle_type = 'middle_default';
    19.     };
    20.     ?>
    21.     <?php if (($option=='com_virtuemart')&&($page=='shop.browse')&&($category_id=='1')) {
    22.     $wrapper_type = 'wrapper_stolovye';}
    23.     ?>
    24.     <table id="<?php echo $wrapper_type; ?>" class="wrapper">[COLOR="SeaGreen"][/COLOR]
    25.         <tr><td id="header">
    26.             <a href="<?php echo $this->baseurl; ?>"><div id="logo"></div></a>
    27.             <div id="slogan">Интернет-каталог домашнего текстиля</div>
    28.             <div id="search">
    29.                 <?php if($this->countModules('search')) : ?>
    30.                 <jdoc:include type="modules" name="search" />
    31.                 <?php endif; ?>
    32.                 <div id="icon_home" class="icons"></div>
    33.                 <div id="icon_mail" class="icons"></div>
    34.                 <div id="phones">+7(3452) 53-21-88<br/>+7(3452) 52-24-71</div>
    35.             </div>
    36.         </td></tr>
    37.         <tr><td id="upmenu">
    38.             <?php if($this->countModules('upmenu')) : ?>
    39.             <jdoc:include type="modules" name="upmenu" />
    40.             <?php endif; ?>
    41.         </td></tr>
    42.         <tr><td id="<?php echo $middle_type; ?>" class="middle">
    43.             <?php $menu = &JSite::getMenu(); //$menu = &JFactory::getApplication->getMenu()
    44.             if (JRequest::getInt('Itemid') == $menu->getDefault()) : ?>
    45.                
    46.                    
    47.                     <div id="panel">
    48.                         <div id="panel_up"></div>
    49.                         <div id="panel_mid">
    50.                             <div id="panel_text">
    51.                             Постельное белье, оптом – преимущества и недостатки различных тканей.<br/><br/>
    52.                             Постельное белье, оптом – преимущества и недостатки различных тканей.<br/><br/>
    53.                             Как выбрать постельное белье.<br/><br/>
    54.                             Свидетели сказочных снов.<br/><br/>
    55.                             Постельное белье Москва.<br/><br/>
    56.                             Бамбуковое постельное белье.<br/><br/>
    57.                             Домашний текстиль: подробнее о постельном белье.
    58.                             </div>
    59.                         </div>
    60.                         <div id="panel_down"></div>
    61.                     </div>
    62.                 </div>
    63.             <?php else : ?>
    64.                 <div id="category_title">
    65.                     <jdoc:include type="modules" name="category_title" />
    66.                      
    67.                 </div>
    68.                 <div id="container">
    69.                     <div id="sidebar">
    70.                         <div id="sidebar_up"></div>
    71.                         <div id="sidebar_mid">
    72.                             <div id="sidebar_text">
    73.                                 <?php if($this->countModules('sidebar')) : ?>
    74.                                 <jdoc:include type="modules" name="sidebar" />
    75.                                 <?php endif; ?>
    76.                             </div>
    77.                         </div>
    78.                         <div id="sidebar_down"></div>
    79.                     </div>
    80.                     <div id="content">
    81.                         <div id="content_up"></div>
    82.                         <div id="content_mid">
    83.                             <div id="content_text"><jdoc:include type="component" /></div>
    84.                         </div>
    85.                         <div id="content_down"></div>
    86.                     </div>
    87.                 </div>
    88.             <?php endif; ?>
    89.         </td></tr>
    90.         <tr><td id="footer">
    91.             <div id="footext">
    92.                 Для большинства людей дом является тем местом, где можно действительно расслабиться и отдохнуть,
    93.                 привести себя в порядок, зарядиться и начать новый день с новыми силами и идеями.
    94.                 Домашний текстиль играет при этом очень важную роль. Иногда мы даже не задумываемся о том,
    95.                 какое место текстиль занимает в нашей жизни. Придя домой после долгого трудового дня мы любим
    96.                 посидеть на диване, завернувшись в теплый, уютный плед. Утром, приняв душ, мы тянемся к своему любимому пушистому полотенцу.
    97.             </div>
    98.         </td></tr>
    99.     </table>
    100. </body>
    101. </html>

    Переменные $page и $category_id в VM есть. Я их не задавала. Просто решила что если работает $com_virtuemart, то и эти переменные тоже будут работать. Может, я вообще всё не так как надо делаю? Это просто единственный вариант, который я могу себе представить. Больше в мою головушку ничего не приходит, хотя, есть наверно варианты.
     
    Последнее редактирование: 26.01.2011
  7. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    я же сказал про переменные которые в памяти в данный момент находятся, а не те которые вообще есть в каком либо файле
    и попробуй использовать лучше использовать переменные которые находятся в GET или POST хотя лучше будет вообще основываться на адресной строке, т.е. если у тебя в адресной строке есть указание на ту или иную категорию то значит надо сменить фон, если нет то оставить тот которые есть
     
  8. Offline

    Иванна Недавно здесь

    Регистрация:
    26.01.2011
    Сообщения:
    20
    Симпатии:
    0
    Пол:
    Женский
    Спасибо за помощь!
    Задачу решила вот таким образом: в index.php добавила строчки
    Код (CODE):
    1. <?php
    2.      $uri=$_SERVER['REQUEST_URI'];
    3.      $num="";
    4.      $uri=substr($uri, 0, strlen($uri)-9);/*убираем последние 9 символов в адресной строке, чтобы условие смены фона действовало не только на категорию, но и на подкатегории и товары, находящиеся в них*/
    5.      
    6.      $uri=substr($uri,strlen($uri)-1,1)?>
    7.  
    8.     <?php if(($uri>0)&&($uri<6)) {
    9.     $wrapper_type = 'wrapper_stolovye';}/*здесь выводим, что при id категории от 1ого до 5го у нас  $wrapper_type получает следующий за знаком = стиль в css*/
    10.     ?>

    Ну и, соответственно,
    Код (CODE):
    1. <table id="<?php echo $wrapper_type; ?>">

    у нас так и остается.
    Для категорий с другими id аналогично прописываем условия.
    Может это и не самый совершенный способ, зато работает как надо!
    Спасибо за внимание! :)
     
  9. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    это и есть не совершенный способ, т.к. если тебе захотеться удалить категорию и записать новую, то ей ID изменится и условии срабатывать не будет
     
  10. Offline

    Иванна Недавно здесь

    Регистрация:
    26.01.2011
    Сообщения:
    20
    Симпатии:
    0
    Пол:
    Женский
    Согласна. Объясни, пожалуйста, что значит "переменные которые в памяти в данный момент находятся"? В какой памяти?
     
  11. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    в памяти сервера/браузера при работе твоего сайта
     
  12. Offline

    Doguran Недавно здесь

    Регистрация:
    15.02.2011
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Иванна, попробуйте так:

    Код (PHP):
    1. <?php
    2. $category_id = JRequest::getVar("category_id");
    3. $category = JRequest::getVar("category", null);
    4. $page = JRequest::getVar("page");
    5.  if (($option=='com_virtuemart')&&($page=='shop.browse')&&($category_id=='1')) {
    6.     $wrapper_type = 'wrapper_stolovye';}
    7. ?>
     

Поделиться этой страницей

Загрузка...