Перейти к содержимому


Фотография
- - - - -

Уникальные ID или CLASS для элементов.


  • Закрытая тема Тема закрыта
Сообщений в теме: 8

#1 arbatws

arbatws

Отправлено 07 June 2012 - 05:48

Ситуация такая. Есть ZOO 2.5.15. На него установлено приложение catalog, оно же JBZoo. Поправьте если ошибаюсь.

В этом каталоге созданы поля. Что заголовки полей, что их значения выводятся обычным текстом без обрамления тегами, либо обрамляется например хедером только заголовок, либо div'ом заголовок с содержимым. А мне нужно чтобы у каждого значения и заголовка был свой id или class чтобы их можно было задизайнить по-разному.

На примере:

<div class="item-anons">
Адрес Малыгина 9 
Этажность (2 из 9) 
Цена 2000 руб./сутки

И так далее. А нужно так:

<div class="item-anons">
<div class="adres_head">Адрес</div> <div class="adres_value"Малыгина 9</div>
<div class="etazhnost_head">Этажность</div> <div class="etazhnost_value"> (2 из 9) </div>
<div class="tsena_head">Цена</div> <div class="tsena_value">2000 руб./сутки</div>

Было бы неплохо если бы при добавлении пункта помимо имени и значения по умолчанию можно было опционально задать что-то подобное. Очень облегчило бы жизнь

[вложение удалено администратором (более 90 дней)]
  • 0

#2 modmixa

modmixa

Отправлено 07 June 2012 - 07:57

Все можно поправить ручками. Все шаблоны вывода лежат - Ваш сайт\media\zoo\applications\jbuniversal\templates\catalog\renderer
Вам с вопросом сюда - Ваш сайт\media\zoo\applications\jbuniversal\templates\catalog\renderer\item тут править в папке ...\produkt  файл full.php или создать такую папку(каталог) по аллиасу Вашего каталога - перенести нужные для правки шаблоны уже в нее и отредактировать (дополнить) что нужно.
Сам только разбираюсь, но для себя сделал именно так.
  • 0

#3 arbatws

arbatws

Отправлено 07 June 2012 - 08:15

Плавали там, знаем про это. Вот участок кода:
    <?php if ($this->checkPosition('anons')) : ?>
        <div class="item-anons">
            <?php echo $this->renderPosition('anons'); ?>
        </div>
    <?php endif; ?>

Вот этот массив, 'anons', это все содержимое блока, т.е. весь приведенный код HTML грубо говоря:
<div class="item-anons">
Адрес Малыгина 9 
Этажность (2 из 9) 
Цена 2000 руб./сутки
</div>

Сюда как видно если и добавить что-то, то цели я не достигну. Просто весь блок будет заключен в еще один div.

Мне в таком случае нужно место где этот массив формируется, дальше возможно сам справлюсь
  • 0

#4 modmixa

modmixa

Отправлено 07 June 2012 - 08:27

У Вас созданы поля - адрес, этажность, цена и Вы из ставите в позицию anons. Значит все созданные поля и будут в одном диве позиции anons. Добавте позиции, получите для каждого поля свой уникальный див и пропишите ему свойства css - как бы логично.
  • 0

#5 arbatws

arbatws

Отправлено 07 June 2012 - 08:31

Как вариант на совсем крайний случай это рассматривается. Но, при таком решении я получаю обрамленые дивом заголовок со значением ВМЕСТЕ, а нужно по отдельности.
  • 0

#6 arbatws

arbatws

Отправлено 07 June 2012 - 11:51

Выход найден!
Да, во-первых, под каждый пункт требующий такого кропотливого дизайна какой описан выше, необходимо создать свою позицию (modmixa, буду должен :) )

Пример: мне нужно описать такие данные: "Цена 2000 руб./сутки". Для слова "цена" - один дизайн, для фразы "2000 руб./сутки" - другой.

Что нужно сделать:
1) в файле \media\zoo\applications\jbuniversal\templates\catalog\renderer\item\product\positions.xml прописать позицию таким образом:
<positions layout="full">
<!--блаблабла-->
<position name="price">Price</position>
<!--блаблабла-->
</positions>

2) в файле \media\zoo\applications\jbuniversal\templates\catalog\renderer\item\product\full.php прописать обработчик вот так:
<?php if ($this->checkPosition('price')) : ?>
        <div class="item-price">
            <?php echo $this->renderPosition('price', array(
                'style'    => 'jbblock',                                         \\ Задаем "блочный" стиль, обязательный параметр
                'labelTag' => 'div class=price_value',                \\ Задаем тег для обрамления слова "Цена"
                'tag'      => 'div class=price_header'                 \\ Задаем тег для обрамления фразы "Цена 2000 руб./сутки" целиком
            )); ?>
        </div>
    <?php endif; ?>

3) Разместить соответствующим образом элементы в позициях в админке.

В результате получаем такой HTML:
<div class="item-price">
   <div class="price_header" class="element-text element-jbblock first last">
      <div class="price_value" class="element-label element-label-text"> Цена</div class=price_value>  
      2000 руб./сутки
   </div class=price_header>
</div>
С классами конечно не особо красиво получилось, но по крайней мере браузерами читается и то что нужно в том числе.

CSSку пишем насколько хватает фантазии. С учетом того что возможно придется дублировать каждый параметр с разными значениями из-за того что слои получились вложенные и чайлд наследует стили родителя.

Peace!
  • 0

#7 modmixa

modmixa

Отправлено 07 June 2012 - 14:59

А как у Вас проходит валидацию код с классом в закрывающемся диве?
  • 0

#8 modmixa

modmixa

Отправлено 07 June 2012 - 15:07

да и не проще ли все таки встроенными средствами воспользоваться. В созданном поле есть "Альтернативная метка" при редактировании шаблона из админки  вводим "Цена" и ставим показать ярлык - редактируем php  и css как нам нужно, а в item при создании материала  вписываем значение полю "2000 руб./сутки" и так же редактируем на свое усмотрение. Все без лишних обработчиков и т.п.
  • 0

#9 SmetDenis

SmetDenis

Отправлено 07 June 2012 - 17:40

ох.... серьезно накрутили вы тут, стоит только отвернуться))))

\components\com_zoo\renderer\element\ тут лежат примеры стилей для позиций

Почему бы не скопировать один из них? назвать нужным именем (например "price", для позиции цен)

В коде для переменной $class добавить нужных классов.
Через массив $params можно получать любые параметры, например можно передавать имя класса.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!