Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

Тема в разделе "Дизайн и оформление, шаблоны", создана пользователем Rename, 10.12.2011.

  1. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    При подгонке шаблона VM столкнулся с такой проблемой:
    У меня 5 категорий со списком товаров (подкатегорий нет), отображения самого списка товаров я настроил редактируя файл browse_1.php, но мне нужно внести некоторые изменения в область страницы - над списком товаров. Как пример - в этой области находится описание категории, которое можно задать при создании/редактировании категории. Файл который отвечает за эту область я вроде бы тоже нашёл - это browse_header_category.tpl.php.
    Теперь сама ПРОБЛЕМА: изменение в этом файле касаются ВСЕХ категорий, а мне нужно чтоб эта область была индивидуальна для каждой категории! Как это можно сделать???
     
  2.  
  3. Follower
    Offline

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

    Регистрация:
    06.02.2009
    Сообщения:
    186
    Симпатии:
    10
    Пол:
    Мужской
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    Есть два решения - простое индусское и сложное.
    Сложное - запихать header_category в browse, наделать их 5 штук и присвоить каждой категории. Но там придется переделывать зависимости и вообще.
    Простое, но неправильное - засунуть в header блоки if или switch (как там он в php называется) на условие ID категории. Работать, во всяком случае, будет.
     
    Xraider нравится это.
  4. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    а подробнее?

    и что это даст?
     
    Xraider нравится это.
  5. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    Эмм.. Подробнее, в этой области для каждой категории будет свой фон, своя сортировка(выборка) в данной категории и ещё не большой блок персональной информации с картинкой.
    Другими словами, если я правильно разобрался в файлах, мне нужно что бы файл browse_header_category.tpl.php для каждой категории был свой. Или же что бы взависимости от ID категории выполнялся тот или иной сценарий этого файла. Как это сделать не знаю, возможно кто то знает или уже сталкивался с этим.
    Как пример VM в настройках категории предлагает выбрать как будет отображатья список товаров browse_1.php, browse_2.php и т.д. и можно выбрать для определенной категории определенный способ отображения. Вот мне и нужно что то типо этого, только для browse_header_category.tpl.php


    В теории идею понял, browse можно выбирать для категорий любые. Но как это сделать на практике, в том смысле как запихнуть, откуда убрать и т.д.? А так же как убрать header_category со траницы? Не будет ли повторяться на странице категории header_category? Как я понял browse там просто повторяется от товара к товару.

    Ну здесь как бы тож понятно, возникают только следующие вопросы - КАК? ГДЕ? ЧТО? Я понимаю что привязка к ID не очень хорошо, тем более если будем удалять категории и создовать новые всё слетит, но ведь и там можно будет вписать новые ID, так что мне это подойдёт. Но как реализовать это, я не знаю.
     
    Последнее редактирование модератором: 05.04.2014
  6. Follower
    Offline

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

    Регистрация:
    06.02.2009
    Сообщения:
    186
    Симпатии:
    10
    Пол:
    Мужской
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    http://ru2.php.net/manual/ru/control-structures.if.php Пожалуйста.
    В browse_header_category.tpl.php или где там ищете место, отвечающее за внешний вид описания.
    Ищете по соседним файлам переменную ID категории, суете ее в условие. Внутрь соответственно то, что вам надо с дизайном сделать.
     
  7. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    А можно ли вобще прописать не только отвечающие за внешний вид но и весь код файла? Я не разбираюсь в программировании, но интересно можно ли сделать так. Вот код файла browse_header_category.tpl.php

    Код (PHP):
    1. <?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
    2. mm_showMyFileName(__FILE__);?>
    3.  
    4. <h3><?php echo $browsepage_lbl; ?>
    5.     <?php
    6.     if( $this->get_cfg( 'showFeedIcon', 1 ) && (VM_FEED_ENABLED == 1) ) { ?>
    7.     <a href="index.php?option=<?php echo VM_COMPONENT_NAME ?>&amp;page=shop.feed&amp;category_id=<?php echo $category_id ?>" title="<?php echo $VM_LANG->_('VM_FEED_SUBSCRIBE_TOCATEGORY_TITLE') ?>">
    8.     <img src="<?php echo VM_THEMEURL ?>/images/feed-icon-14x14.png" align="middle" alt="feed" border="0"/></a>
    9.     <?php
    10.     } ?>
    11. </h3>
    12.  
    13. <div style="text-align:left;">
    14.     <?php echo $navigation_childlist; ?>
    15. </div>
    16. <?php if( trim(str_replace( "<br />", "" , $desc)) != "" ) { ?>
    17.  
    18.         <div style="width:100%;float:left;">
    19.             <?php echo $desc; ?>
    20.         </div>
    21.         <br class="clr" /><br />
    22.         <?php
    23.      }
    24. ?>


    Возможно ли создать так сказать блок что ли, в этот блок1 поместить сей код,а в другой, блок2 поместить этот же код но с изменениями и прописать что если ID категории равно (допустим 1) то будет читаться блок2, если равно любому другому то будет читаться блок1. Естественно с возможностью увеличить количество блоков и тогда будет Если ID категория равна 1 то блок2, и если ID категория равна 2, то блок3.. Вот по такому принципу... Как это сделать?
     
  8. Follower
    Offline

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

    Регистрация:
    06.02.2009
    Сообщения:
    186
    Симпатии:
    10
    Пол:
    Мужской
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    За описание категории у нас отвечает вот это:
    Код (PHP):
    1. <?php if( trim(str_replace( "<br />", "" , $desc)) != "" ) { ?>
    2.         <div style="width:100%;float:left;">
    3.             <?php echo $desc; ?>
    4.         </div>

    А именно все после слова style. Теперь делаем типа так:
    Код (PHP):
    1. <?php if( trim(str_replace( "<br />", "" , $desc)) != "" ) { ?>
    2. if ($category_id == 1) {
    3.         <div style="width:100%;float:left; font-size: 16px; font-weight: bold;">
    4. }
    5. else {
    6.         <div style="width:100%;float:left; font-size: 14px;">
    7. }
    8.             <?php echo $desc; ?>
    9.         </div>


    Внутрь ифа можно пихать не только сам див, но и многое другое.
     
    Rename нравится это.
  9. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    Спасибо большое! А можно ли сделать чтобы это распространялось не только на описание? Например сейчас нет подкатегорий, а если появится что делать? просто написать тоже самое условие выше?
    Код (PHP):
    1. <h3><?php echo $browsepage_lbl; ?>
    2.  
    3.     <?php
    4.  
    5.     if( $this->get_cfg( 'showFeedIcon', 1 ) && (VM_FEED_ENABLED == 1) ) { ?>
    6.  
    7.     <a href="index.php?option=<?php echo VM_COMPONENT_NAME ?>&amp;page=shop.feed&amp;category_id=<?php echo $category_id ?>" title="<?php echo $VM_LANG->_('VM_FEED_SUBSCRIBE_TOCATEGORY_TITLE') ?>">
    8.  
    9.     <img src="<?php echo VM_THEMEURL ?>/images/feed-icon-14x14.png" align="middle" alt="feed" border="0"/></a>
    10.  
    11.     <?php
    12.  
    13.     } ?>


    дописываем условие
    Код (PHP):
    1. <h3><?php echo $browsepage_lbl; ?>
    2.  
    3.     <?php
    4.  
    5.     if( $this->get_cfg( 'showFeedIcon', 1 ) && (VM_FEED_ENABLED == 1) ) { ?>
    6.  
    7. if ($category_id == 1) {
    8.  
    9.     <a href="index.php?option=<?php echo VM_COMPONENT_NAME ?>&amp;page=shop.feed&amp;category_id=<?php echo $category_id ?>" title="<?php echo $VM_LANG->_('VM_FEED_SUBSCRIBE_TOCATEGORY_TITLE') ?>">
    10.  
    11.     <img src="<?php echo VM_THEMEURL ?>/images/feed-icon-14x14.png" align="middle" alt="feed" border="0"/></a>
    12.  
    13. }
    14.  
    15. else {
    16.  
    17. <a href="index.php?option=<?php echo VM_COMPONENT_NAME ?>&amp;page=shop.feed&amp;category_id=<?php echo $category_id ?>" title="<?php echo $VM_LANG->_('VM_FEED_SUBSCRIBE_TOCATEGORY_TITLE') ?>">
    18.  
    19.     <img src="<?php echo VM_THEMEURL ?>/images/feed-icon-14x14.png" align="middle" alt="feed" border="0"/></a>
    20.  
    21. }
    22.  
    23.     <?php
    24.  
    25.     } ?>


    Или это уже будет не верно?
     
  10. Follower
    Offline

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

    Регистрация:
    06.02.2009
    Сообщения:
    186
    Симпатии:
    10
    Пол:
    Мужской
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    Может, и верно, только я не понял, для чего это надо. Подкатегории - это тоже категории, и у них есть свой ID.
     
  11. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Мм.. тож верно. такой вопросик, а если прописать для нескольких категорий "свои условия", то это будет выглядеть так?

    Код (PHP):
    1. <?php if( trim(str_replace( "<br />", "" , $desc)) != "" ) { ?>
    2.  
    3. if ($category_id == 1) {
    4.         <div style="width:100%;float:left; font-size: 16px; font-weight: bold;">
    5. }
    6. if ($category_id == 2) {
    7.         <div style="width:50%;float:left; font-size: 24px; font-weight: bold;">
    8. }
    9. else {
    10.         <div style="width:100%;float:left; font-size: 14px;">
    11. }
    12.             <?php echo $desc; ?>
    13.  
    14.         </div>
     
  12. Follower
    Offline

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

    Регистрация:
    06.02.2009
    Сообщения:
    186
    Симпатии:
    10
    Пол:
    Мужской
  13. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Тогда так?

    Код (PHP):
    1. <?php if( trim(str_replace( "<br />", "" , $desc)) != "" ) { ?>
    2.  
    3. if ($category_id == 1) {
    4.         <div style="width:100%;float:left; font-size: 16px; font-weight: bold;">
    5. }
    6. elseif ($category_id == 2) {
    7.         <div style="width:50%;float:left; font-size: 24px; font-weight: bold;">
    8. }
    9. else {
    10.        <div style="width:100%;float:left; font-size: 14px;">
    11.  
    12. }
    13.             <?php echo $desc; ?>
    14.  </div>


    По идеи будет опять тоже самое... Как прописать любое значение категории? Т.е. мы зададим условия если категория равна 1, то .... и если категория равна 2, то ... А как продолжить дальше в виде "для всего прочего" использовать то то...

    Как понял это тоже самое будет

    Код (PHP):
    1. <?php if( trim(str_replace( "<br />", "" , $desc)) != "" ) { ?>
    2.  
    3. switch ($category_id) {
    4.         case 1:
    5.        <div style="width:100%;float:left; font-size: 16px; font-weight: bold;">
    6.         break;
    7.  
    8.         case 2:
    9.         <div style="width:50%;float:left; font-size: 24px; font-weight: bold;">
    10.          break;
    11.  
    12.         case 3: /* Опять тут таже проблема, не хочется перечислять все категории*/
    13.        <div style="width:100%;float:left; font-size: 14px;">
    14.  
    15. }
    16.             <?php echo $desc; ?>
    17.  </div>


    Как сделать, что бы условия распространялись на несколько категорий товаров, но те категория которые не подходят под ID нужных категорий, для них всех выполнялся следующий сценарий. Подскажите как это реализовать?
     
  14. Follower
    Offline

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

    Регистрация:
    06.02.2009
    Сообщения:
    186
    Симпатии:
    10
    Пол:
    Мужской
    Первый пример правильный, else и есть для всего остального, а в switch есть оператор default, почитайте про него, он как раз именно то. И разберитесь, где break должен стоять.
     
  15. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Не работает(( Вот полный текст файла с изменениями

    Код (PHP):
    1. <?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
    2. mm_showMyFileName(__FILE__);?>
    3.  
    4. <h3><?php echo $browsepage_lbl; ?>
    5.     <?php
    6.     if( $this->get_cfg( 'showFeedIcon', 1 ) && (VM_FEED_ENABLED == 1) ) { ?>
    7.     <a href="index.php?option=<?php echo VM_COMPONENT_NAME ?>&amp;page=shop.feed&amp;category_id=<?php echo $category_id ?>" title="<?php echo $VM_LANG->_('VM_FEED_SUBSCRIBE_TOCATEGORY_TITLE') ?>">
    8.     <img src="<?php echo VM_THEMEURL ?>/images/feed-icon-14x14.png" align="middle" alt="feed" border="0"/></a>
    9.     <?php
    10.     } ?>
    11. </h3>
    12.  
    13. <div style="text-align:left;">
    14.     <?php echo $navigation_childlist; ?>
    15. </div>
    16. <?php if( trim(str_replace( "<br />", "" , $desc)) != "" ) { ?>
    17.  
    18.         if ($category_id == 9) {
    19.  
    20.         <div style="width:100%;float:left; font-size: 16px; font-weight: bold;"></div>
    21. }
    22. elseif ($category_id == 10) {
    23.         <div style="width:50%;float:left; font-size: 24px; font-weight: bold;"></div>
    24. }
    25. else {
    26.        <div style="width:100%;float:left; font-size: 14px;">
    27. }
    28.             <?php echo $desc; ?>
    29.  
    30.         </div>
    31.         <br class="clr" /><br />
    32.         <?php
    33.      }
    34. ?>


    В итоге на странице отображается:

    if ($category_id == 9) { } elseif ($category_id == 10) { } else {


    }

    Ну а дальше описание которое находится в desc

    В чём может быть проблема?
     
  16. Follower
    Offline

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

    Регистрация:
    06.02.2009
    Сообщения:
    186
    Симпатии:
    10
    Пол:
    Мужской
    Ифы должны быть внутри блока php. Попробуйте так:

    Код (PHP):
    1. <?php if( trim(str_replace( "<br />", "" , $desc)) != "" ) { ?>
    2. <?php
    3.         if ($category_id == 9) {
    4.         echo "<div style=\"width:100%;float:left; font-size: 16px; font-weight: bold;\"></div>";
    5. }
    6. elseif ($category_id == 10) {
    7.         echo "<div style=\"width:50%;float:left; font-size: 24px; font-weight: bold;\"></div>";
    8. }
    9. else {
    10.        echo "<div style=\"width:100%;float:left; font-size: 14px;\">";
    11. }
    12. ?>
    13.             <?php echo $desc; ?>
    14.         </div>
    15.         <br class="clr" /><br />
    16.         <?php
    17.      }
    18. ?>


    Если будет ругаться на кавычки, ставьте где просит.
     
  17. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Теперь не ругается, спасибо! Но описание всё равно выдаёт "<?php echo $desc; ?>" Как сделать что бы он выдавал описание только там, где не подходят наши условия if, и выдавал их только после else ?
     
  18. Follower
    Offline

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

    Регистрация:
    06.02.2009
    Сообщения:
    186
    Симпатии:
    10
    Пол:
    Мужской
    Если он вместо описания выдает echo $desc, то значит, вокруг этой строчки неправильно стоят знаки препинания. Проверьте там все.
     
  19. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Нет, выдаёт то он описание, ну которое в настройках категории пишем. Т.е. выдаёт на экран не echo $desc, а то что в нём находится. Только проблема в том что он будет выводить это описание внезвисимости от того какой ID каталога, а хотелось бы чтоб он смотрел ID каталога и исходя из этого решал будет ли описание и в каком виде оно будет представлено. Хотя по идеи его можно вобще убрать и прописать всё в ифах и дивах. Я попробую и отпишусь что получиться.
     
  20. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Замени в browse_notables.tpl.php (или что там используешь)

    Код (PHP):
    1. <?php echo $browsepage_header // The heading, the category description ?>

    на

    Код (PHP):
    1. <?php
    2. switch ($category_id) {
    3.     case 1:
    4.     case 2:
    5.     case 5:
    6.         echo $this->fetch( 'browse/includes/browse_header_category'.$category_id.'.tpl.php' );
    7.         break;
    8.     case 30:
    9.         echo $this->fetch( 'browse/includes/browse_header_category'.$category_id.'.tpl.php' );
    10.         break;
    11.     default:
    12.         echo $this->fetch( 'browse/includes/browse_header_category.tpl.php' );
    13. }
    14. ?>

    Думаю разберешься.

    Rename, что до этого делал тоже верно, но создается впечатление, что ты до конца не понимаешь что делаешь :) ...делаешь методом тыка
     
    Rename нравится это.
  21. Offline

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

    Регистрация:
    10.12.2011
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо! если бы я до конца понимал бы что делаю - тогда не просил бы помощи.
    П.С. Куда деваться? Если сама жизнь зарождается методом тыка...
     
    Последнее редактирование модератором: 05.04.2014

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

Загрузка...