названия блоков и страниц

Главные вкладки

Аватар пользователя verhomnazvezde verhomnazvezde 18 апреля 2015 в 2:09

Всем доброго времени суток. Возник вопрос: как задавать названия id для блоков?

< id="block-block-2" class="block block-block contextual-links-region" ><div>  

Это очень не удобно для меня.
возможно можно просто делать блоки без этих оберток, а с дивами внутри?
Бывают ситуации, когда нужен полный блок с оберткой, а бывает когда просто пустой блок с дивом. Как это сделать в Друпал 7.36?

Комментарии

Аватар пользователя Plazik Plazik 18 апреля 2015 в 9:15

Лучшие практики говорят, что не надо использовать ID, используйте классы, а для этого есть модуль block_class

Аватар пользователя verhomnazvezde verhomnazvezde 18 апреля 2015 в 15:36

"Plazik" wrote:
Лучшие практики говорят, что не надо использовать ID, используйте классы, а для этого есть модуль block_class

Спасибо, попробую этот модуль, но что-то мне подсказывает, что он не убирает лишние обертки типа

div class="region region-top-line"><div class="region-inner clearfix"><div id="block-block-9" class="block block-block no-title" ><div class="block-inner clearfix">
Я понимаю, что мощностей современных ЭВМ достаточно, что бы загрузить хоть миллиард этих дивов, но мне приятней работать когда один див (если разметка позволяет использоать только один), допустим <div class="myblock"
Недавно читал статью о том, как вычистить код, который от Display Suite и Views, но там какие-то полу-решения....
Может быть как-то через хук препроцесс прицепить кастомные блоки, которые без оберток и с моим названием? Или это плохое решение?

Аватар пользователя voviko voviko 18 апреля 2015 в 17:22

создать block--block--ID.tpl.php.

<?php
<div id="<?php print $block_html_id; ?>" class="<?php print $classes; ?>"<?php print $attributes?>>

  <?php print render($title_prefix); ?>
<?php 
if ($block->subject): ?>
  <h2<?php print $title_attributes?>><?php print $block->subject ?></h2>
<?php endif;?>
  <?php print render($title_suffix); ?>

  <div class="content"<?php print $content_attributes?>>
    <?php print $content ?>
  </div>
</div>

?>

Аватар пользователя verhomnazvezde verhomnazvezde 18 апреля 2015 в 19:13

voviko wrote:
создать block--block--ID.tpl.php.

<?php
<div id="<?php print $block_html_id; ?>" class="<?php print $classes; ?>"<?php print $attributes?>>

  <?php print render($title_prefix); ?>
<?php 
if ($block->subject): ?>
  <h2<?php print $title_attributes?>><?php print $block->subject ?></h2>
<?php endif;?>
  <?php print render($title_suffix); ?>

  <div class="content"<?php print $content_attributes?>>
    <?php print $content ?>
  </div>
</div>

?>

я боюсь что айди блока может поменяться, когда я буду удалять ненужные блоки, переносить, переносность сайт на хостинг итд, и тогда стили полетят все.

Аватар пользователя verhomnazvezde verhomnazvezde 18 апреля 2015 в 19:27

"toshic" wrote:
не, айдишник останется

это радует)
Зачем вообще выводить айди блока, если я буду делать стили к классу блока?
можно отключить вывод айди без последствий? я обожаю чистый короткий код)

Аватар пользователя toshic toshic 18 апреля 2015 в 19:37

Я наверное тебя не правильно понял. id блоку присваивает сам друпал, числовой айди и в потоке браузер выводит блок с id как
block-block-3 или block-block-8, у каждого блока свой числовой идентификатор.
Есть еще такой модуль Block class, который в форме редактирования блока добавляет поле для вставки собственного класса. Прописываешь там свой класс, только без селектора и применяй к нему стили какие надо и тогда не надо будет в шаблоне добавлять дивы в ручную

Аватар пользователя voviko voviko 18 апреля 2015 в 20:15

block.tpl.php в папке с темой
код:


<?php
<div id="<?php print $block_html_id; ?>">

<?

php if ($block->subject): ?>
  <h2><?php print $block->subject ?></h2>
<?php endif;?>
  <div>
    <?php print $content ?>
  </div>
</div>

?>

Аватар пользователя verhomnazvezde verhomnazvezde 18 апреля 2015 в 20:34

voviko wrote:
block.tpl.php в папке с темой
код:


<?php
<div id="<?php print $block_html_id; ?>">

<?

php if ($block->subject): ?>
  <h2><?php print $block->subject ?></h2>
<?php endif;?>
  <div>
    <?php print $content ?>
  </div>
</div>

?>

воо спасибо, уже лучше! протестировал, верстка не слетела, адаптивность осталась

<div class="region region-top-line">
<div class="region-inner clearfix">
<div id="block-block-9">
<div>
<div class="top_phone">Телефон<strong>+7 (495)<span>9500-00-00</span></strong></div>
<div class="top_obr_zvon"><a href="#obr">обратный звонок</a></div>
<div class="top_zakaz"><a href="#zakaz">zakaz@mail.ru</a></div>
</div></div>

остается
<div class="region-inner clearfix"> отключить
<div id="block-block-9"> может быть вообще убрать айди, а вместо этого сделать класс <div class="top_header_line">
или айди ни в коем случае убирать нельзя и потом будут проблемы?

Аватар пользователя verhomnazvezde verhomnazvezde 18 апреля 2015 в 20:23

"toshic" wrote:
Я наверное тебя не правильно понял. id блоку присваивает сам друпал, числовой айди и в потоке браузер выводит блок с id как
block-block-3 или block-block-8, у каждого блока свой числовой идентификатор.
Есть еще такой модуль Block class, который в форме редактирования блока добавляет поле для вставки собственного класса. Прописываешь там свой класс, только без селектора и применяй к нему стили какие надо и тогда не надо будет в шаблоне добавлять дивы в ручную

Ну вот например у меня есть линия вверху с телефоном, заказом и емэйлом.

сейчас так:

<div class="region region-top-line">
<div class="region-inner clearfix">
<div id="block-block-9" class="block block-block no-title" >
<div class="block-inner clearfix">  
<div class="block-content content">
<div class="top_phone">Телефон<strong>+7 (495)<span>8500-00-00</span></strong></div>
<div class="top_obr_zvon"><a href="#obr">обратный звонок</a></div>
<div class="top_zakaz"><a href="#zakaz">zakaz@mail.ru</a></div>
</div></div></div></div></div>

а в статичной верстке было так:

<div class="header line">
<div class="main"> <!-- линияя -->
<div class="top_line"></div></div>
<div class="wrapper">
<div class="logo"></div>
<div class="phone">Телефон<strong>+7 (495) <span>9500-00-00</span></strong></div>
<div class="top_obr_zvon"><a href="#obr">обратный звонок</a></div>
<div class="top_zakaz"><a href="#zakaz">zakaz@mail.ru</a></div></div></div>    

вот я сделал регион и блок под это дело (телефон, заказ, мэил)
хочу сделать так:

<div class="region region-top-line">нужен
<div class="region-inner clearfix"> не всегда он нужен, нужно в некоторых регионах убирать, в некоторых оставлять
<div id="block-block-9" class="block block-block no-title" > хотелось бы просто назвать block-9
и class например header_line а не block block-block no-title
впринципе если в этом модуле Block class можно стереть стандартный block block-block no-title и вписать свой то это
 круто) но что-то мне подсказывает что стандартный block block-block no-title всеравно останется(
<div class="block-inner clearfix">  тоже не всегда нужен.
<div class="block-content content">не нужен, но без него контент по идее не выведется в блок?
<div class="top_phone">Телефон<strong>+7 (495)<span>8500-00-00</span></strong></div>это уже мои дивы,
без них не сделать все в одну линию наверху, картинку вектор с телефоном, мейлом итд
<div class="top_obr_zvon"><a href="#obr">обратный звонок</a></div>мои 
<div class="top_zakaz"><a href="#zakaz">zakaz@mail.ru</a></div>мои
</div></div></div></div></div>