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

Discussion in 'Дизайн и оформление, шаблоны' started by Rename, Dec 10, 2011.

  1. Offline

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

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

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

    Joined:
    Feb 6, 2009
    Messages:
    186
    Likes Received:
    10
    Gender:
    Male
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

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

    OlegM Russian Joomla! Team Staff Member

    Joined:
    Apr 12, 2007
    Messages:
    4,310
    Likes Received:
    375
    Gender:
    Male
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

    а подробнее?

    и что это даст?
     
    Xraider likes this.
  5. Offline

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

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    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, так что мне это подойдёт. Но как реализовать это, я не знаю.
     
    Last edited by a moderator: Apr 5, 2014
  6. Follower
    Offline

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

    Joined:
    Feb 6, 2009
    Messages:
    186
    Likes Received:
    10
    Gender:
    Male
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

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

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

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    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 Недавно здесь

    Joined:
    Feb 6, 2009
    Messages:
    186
    Likes Received:
    10
    Gender:
    Male
    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 likes this.
  9. Offline

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

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    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 Недавно здесь

    Joined:
    Feb 6, 2009
    Messages:
    186
    Likes Received:
    10
    Gender:
    Male
    Re: Help! Как сделать индивидуальный дизайн (шаблон) для разных категорий товаров?

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

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

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    Мм.. тож верно. такой вопросик, а если прописать для нескольких категорий "свои условия", то это будет выглядеть так?

    Код (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 Недавно здесь

    Joined:
    Feb 6, 2009
    Messages:
    186
    Likes Received:
    10
    Gender:
    Male
  13. Offline

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

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    Тогда так?

    Код (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 Недавно здесь

    Joined:
    Feb 6, 2009
    Messages:
    186
    Likes Received:
    10
    Gender:
    Male
    Первый пример правильный, else и есть для всего остального, а в switch есть оператор default, почитайте про него, он как раз именно то. И разберитесь, где break должен стоять.
     
  15. Offline

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

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    Не работает(( Вот полный текст файла с изменениями

    Код (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 Недавно здесь

    Joined:
    Feb 6, 2009
    Messages:
    186
    Likes Received:
    10
    Gender:
    Male
    Ифы должны быть внутри блока 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 Недавно здесь

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    Теперь не ругается, спасибо! Но описание всё равно выдаёт "<?php echo $desc; ?>" Как сделать что бы он выдавал описание только там, где не подходят наши условия if, и выдавал их только после else ?
     
  18. Follower
    Offline

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

    Joined:
    Feb 6, 2009
    Messages:
    186
    Likes Received:
    10
    Gender:
    Male
    Если он вместо описания выдает echo $desc, то значит, вокруг этой строчки неправильно стоят знаки препинания. Проверьте там все.
     
  19. Offline

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

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    Нет, выдаёт то он описание, ну которое в настройках категории пишем. Т.е. выдаёт на экран не echo $desc, а то что в нём находится. Только проблема в том что он будет выводить это описание внезвисимости от того какой ID каталога, а хотелось бы чтоб он смотрел ID каталога и исходя из этого решал будет ли описание и в каком виде оно будет представлено. Хотя по идеи его можно вобще убрать и прописать всё в ифах и дивах. Я попробую и отпишусь что получиться.
     
  20. OlegM
    Offline

    OlegM Russian Joomla! Team Staff Member

    Joined:
    Apr 12, 2007
    Messages:
    4,310
    Likes Received:
    375
    Gender:
    Male
    Замени в 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 likes this.
  21. Offline

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

    Joined:
    Dec 10, 2011
    Messages:
    11
    Likes Received:
    0
    Gender:
    Male
    Спасибо! если бы я до конца понимал бы что делаю - тогда не просил бы помощи.
    П.С. Куда деваться? Если сама жизнь зарождается методом тыка...
     
    Last edited by a moderator: Apr 5, 2014

Share This Page

Loading...