Форум русской поддержки Joomla!® CMS
05.12.2016, 08:33:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Настраиваемые поля и стили для них. Как сделать для каждого поля свои стиль

 (Прочитано 56 раз)
0 Пользователей и 1 Гость смотрят эту тему.
neGODnic
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 140


« : 21.10.2016, 18:01:40 »

Столкнулся с такой проблемой у VM3 не плохо реализована система Costum Fields. но есть пару вопросов.
Все товары выгружаются из 1с с доп. параметрами "своиство" и "характеристика"
Но в VM они заходят как 1 контейнер и стиль им всем назначается общий. А так как эти поля можно указывать почти в любых позициях на сайте, то и стили должны быть для каждого поля свои. А ВИРТ назначает всем одинаковые.
Пример: у меня основное поле имеет значение в CSS style="width:39%" и этот стиль получают все блоки и получается, что где то их режет, где то наоборот больше чем надо и вся верстка сползает.
Как можно реализовать для каждого поля свой стиль? Пока писал, пришла мысль, что может в настройках самого поля можно назначить необходимый класс стиля, но увы не додумали создатели пока такого момента.
Вот код моего customfields.php
Код:
<?php
/**
* sublayout products
*
* @package    VirtueMart
* @author Max Milbers
* @link http://www.virtuemart.net
* @copyright Copyright (c) 2014 VirtueMart Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL2, see LICENSE.php
* @version $Id: cart.php 7682 2014-02-26 17:07:20Z Milbo $
*/

defined('_JEXEC') or die('Restricted access');

$product = $viewData['product'];
$position = $viewData['position'];
$customTitle = isset($viewData['customTitle'])? $viewData['customTitle']: false;;
if(isset($viewData['class'])){
    $class = $viewData['class'];
} else {
    $class = 'product-fields';
}

if (!empty($product->customfieldsSorted[$position])) {
    ?>
    <div class="<?php echo $class?>">
        <?php
        if($customTitle and isset($product->customfieldsSorted[$position][0])){
            $field = $product->customfieldsSorted[$position][0]; ?>
        <div class="product-fields-title-wrapper"><span class="product-fields-title"><strong><?php echo vmText::_ ($field->custom_title)?></strong></span>
            <?php if ($field->custom_tip) {
                echo JHtml::tooltip (vmText::_($field->custom_tip), vmText::_ ($field->custom_title), 'tooltip.png');
            } ?>
        </div> <?php
        }
        $custom_title = null;
        foreach ($product->customfieldsSorted[$position] as $field) {
            if ( $field->is_hidden || empty($field->display)) continue; //OSP http://forum.virtuemart.net/index.php?topic=99320.0
            ?><div class="product-field product-field-type-<?php echo $field->field_type ?>">
                <?php if (!$customTitle and $field->custom_title != $custom_title and $field->show_title) { ?>
                   <span class="product-fields-title-wrapper"><span class="product-fields-title"><strong><?php echo vmText::_ ($field->custom_title)?></strong></span> <?php /* text*/?>
                        <?php if ($field->custom_tip) {
                            echo JHtml::tooltip (vmText::_($field->custom_tip), vmText::_ ($field->custom_title), 'tooltip.png');
                        } ?></span>
                <?php }
                
                if (!empty($field->custom_desc)){
                    ?><div class="product-field-desc"><?php echo vmText::_($field->custom_desc)?><div class="product-field-line"></div></div> <?php
                }
if (!empty($field->display)){
                    ?><div class="product-field-display2"><?php echo $field->display ?></div><?php
                }
                ?>
            </div>
        <?php
         //   $custom_title = $field->custom_title;
        } ?>
      <div class="clearfix"></div>
    </div>
<?php
} ?>

Нашел какое-то решение, но не получается с ним разобраться. Помогите с решением.
https://forum.virtuemart.net/index.php?topic=128936.0
« Последнее редактирование: 21.10.2016, 18:08:40 от neGODnic » Записан
neGODnic
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 140


« Ответ #1 : 24.10.2016, 19:36:57 »

Пока ждал ответа сам разобрался. Так как в CSS не очень силен, то пришлось покопаться в уроках CSS и найти элементарное решении:

Так как класс у меня один, но он входит в другие классы то это делается элементарно:
.product-field-type-Y .product-field-display { display:inline-block; float:right; /*padding-right:15px;*/ vertical-align:bottom; width:39%;}
.product-field-type-S .product-field-display { display:inline-block; float:left; /*padding-right:15px;*/ vertical-align:bottom; width:100%;}

Пример из учебника:
#first {color: red;} /* обращаемся к id с именем first */
.second {color: blue;} /* обращаемся к классу с именем second */
#first .second {color: orange;} /* обращаемся к классу с именем second, ТОЛЬКО если он находится ВНУТРИ тега с идентификатором first */
.first .third {color: grey;} /* обращаемся к классу с именем third, ТОЛЬКО если он находится ВНУТРИ тега с классом first */ - наш вариант!

Спасибо. Можно закрывать тему.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet