Это только мне такой стиль шаблонов компонентов кажется бредовым? Разрешаю заминусовать тем кому такой стиль нравится.

Рейтинг: 34.9102  
Новая
Предложил Пользователь 3214 28.12.2013 16:11:57

Это только мне такой стиль шаблонов компонентов кажется бредовым? Разрешаю заминусовать тем кому такой стиль нравится.

Ну типа такого  (/bitrix/components/catalog.element/templates/template.php):

<?
if (!empty($arResult['DISPLAY_PROPERTIES']) || $arResult['SHOW_OFFERS_PROPS'])
{
?>
<div class="item_info_section">
<?
   if (!empty($arResult['DISPLAY_PROPERTIES']))
   {
?>
   <dl>
<?
      foreach ($arResult['DISPLAY_PROPERTIES'] as &$arOneProp)
      {
?>
      <dt><strong><? echo $arOneProp['NAME']; ?></strong> <?
         echo (
            is_array($arOneProp['DISPLAY_VALUE'])
            ? implode(' / ', $arOneProp['DISPLAY_VALUE'])
            : $arOneProp['DISPLAY_VALUE']
         );
?>
      </dt>
<?
      }
      unset($arOneProp);
?>
   </dl>
<?
   }
   if ($arResult['SHOW_OFFERS_PROPS'])
   {
?>
   <dl id="<? echo $arItemIDs['DISPLAY_PROP_DIV'] ?>" style="display: none;"></dl>
<?
   }
?>
</div>
<?
}
if ('' != $arResult['PREVIEW_TEXT'])
{
?>
<div class="item_info_section">
<?
   echo ('html' == $arResult['PREVIEW_TEXT_TYPE'] ? $arResult['PREVIEW_TEXT'] : '<p>'.$arResult['PREVIEW_TEXT'].'</p>');
?>
</div>
<?
}
if (isset($arResult['OFFERS']) && !empty($arResult['OFFERS']) && !empty($arResult['OFFERS_PROP']))
{
   $arSkuProps = array();
?>



.........
      <div class="bx_rb">
<div class="item_info_section">
<?
if ('' != $arResult['DETAIL_TEXT'])
{
?>
   <div class="bx_item_description">
      <div class="bx_item_section_name_gray" style="border-bottom: 1px solid #f2f2f2;"><? echo GetMessage('FULL_DESCRIPTION'); ?></div>
<?
   if ('html' == $arResult['DETAIL_TEXT_TYPE'])
   {
      echo $arResult['DETAIL_TEXT'];
   }
   else
   {
      ?><p><? echo $arResult['DETAIL_TEXT']; ?></p><?
   }
?>
   </div>
<?
}
?>
</div>
      </div>
 

ну и тд

Что конкретно не нравится.

Напоню что это ШАБЛОН компонента и значит ВЕРСТАЛЬЩИКУ гораздо понятней тёплые ламповые конструкции в стиле
<?if(...):?>
 ...
<?endif;?>

<?foreach(...):?>
....
<?endforeach;?>
Верстальщик не обязан быть программистом иначе стоимость такого верстальщика начинает приближаться к стоимости программиста.

Да меня конечно бесят фигурные скобочки друг под другом но в ПРОГРАММАХ с этим можно смириться коль скоро многие программеры не способны были поменять в редакторе дефаултный стиль для скобок к этому стилю привыкли.  
Но с шаблонами работают не программитсты а верстальщики, когда мне верстак говорит что он не хрена тут понять не может я не могу его гнать в шею потому что формально он прав.

Ладно проехали. Всё равно же не заставишь.

Но вот ''обычные" ПХП-шаблоны очень легко однозначно автоматически перехреначить в такой вид ( со скобочками ) а вот в обратную сторону  - тут компилятор нужен. Так что если нет особой сермяжной правды в использовании такого стиля в ШАБЛОНАХ то может есть смысл всё таки применять в них более удобный и приятный на вид стиль?

Если есть какая то очень важная причина (кроме лени сменить стиль в редакторе) - велкам в комменты.



[IMG]

Рейтинг: -4.3643  
Пользователь 32566 30.12.2013 06:09:34
А разве интеграцией верстки должен заниматься верстальщик? Не знал...
Но ставлю минус идее, меня эти if...endif и foreach...endforeach в коде бесят - потому как иногда не понять где блок начинается, а где заканчивается. Особенно когда отсутствуют отступы.
Да и исходный вариант шаблона не идеал.
Рейтинг: 0.144  
Пользователь 17890 30.12.2013 17:42:37
Поставил минус.
Во-первых, шаблоны - это не задача верстальщика.
Во-вторых, альтернативный PHP-синтаксис:

альтернативный синтаксис - теряется учет открытых-закрытых скобок (к тому же многие среды разработки позволяют легко найти открывающуюся скобку по закрытой, но не позволяют найти начало if (…): по его окончанию — endif )
Рейтинг: 0.5953  
Пользователь 1848 30.12.2013 18:09:04
Но ставлю минус идее, меня эти if...endif и foreach...endforeach в коде бесят - потому как иногда не понять где блок начинается, а где заканчивается. Особенно когда отсутствуют отступы.
А кто мешает ставить отступы?

Для меня шаблоны со скобками превращают шаблон в фарш. С end-ами шаблон смотрится лучше и понятнее.
Если уж писать со скобками то так:

<?
   if ('html' == $arResult['DETAIL_TEXT_TYPE'])
   {
   echo $arResult['DETAIL_TEXT'];
   }
   else
   {
   ?>
   <p>
      <? echo $arResult['DETAIL_TEXT']; ?>
   </p>
   <?
   }
?>
 
Но не так

<?if ('html' == $arResult['DETAIL_TEXT_TYPE'])  {
   echo $arResult['DETAIL_TEXT'];
   }  else
   {
   ?><p><? echo $arResult['DETAIL_TEXT']; ?></p><?
   }?>
 
А вообще в шаблонах верстальщику делать нечего. Это не его работа.
Рейтинг: 0.2132  
Пользователь 1848 30.12.2013 18:11:55
Ну вот, здешний виз. редактор убрал все отступы в моем комменте.
Рейтинг: 0  
Пользователь 32566 30.12.2013 19:03:04
А кто мешает ставить отступы?
В том-то и дело, что мне никто не мешает ставить и я ставлю. Но вот над проектами иногда работают говнокодеры :)
Рейтинг: -3.6525  
Пользователь 3214 02.01.2014 05:31:59
А разве интеграцией верстки должен заниматься верстальщик? Не знал...
Но ставлю минус идее, меня эти if...endif и foreach...endforeach в коде бесят - потому как иногда не понять где блок начинается, а где заканчивается. Особенно когда отсутствуют отступы.
Антон, спасибо за дискуссию.
Ну наверное да верстальщик, который знает как расфоричить массив $arResult (или любые другие данные поступающие в шаблон, не обязательно битриксовый, а скажем smarty или xtemplate), а не только умеет расхтмлить псд-шник, скорее всего может называться не "верстальщиком", а "продвинутым верстальщиком". Но если его начать назвать его программером, интегратором, кастомизатором или ещё как-то, то получится что либо вы забиваете гвозди сотовым телефоном, либо вы пытаетесь звонить по молотку. Насчёт отсутствующих отступов - тут естесственно путь "просьба-предупреждение-дверь".
Рейтинг: 0  
Пользователь 95726 12.01.2014 05:20:43
Да - стиль ужасный. Но все эти endifы еще хуже. Редактор их просто не подсвечивает, и даже отступы не спасут, если много вложений одного уровня, а кода может быть много внутри цикла перебирающего например товары, а в них же могут быть еще и прделожения... Ну и т.п.
Просто не надо под открывающую скобку отводить строку лишнюю. Я понимаю - стиль придумали когда мониторы были 4:3, но на дворе 2014 год и повальное увлечение мониторами-амбразурами, не надо тормозить - надо отказываться от ненужного наследия прошлого.
Но и тулить блочные html элементы в одну строку тоже не надо. Вот это вообще что такое:

<div class="bx_item_section_name_gray" style="border-bottom: 1px solid #f2f2f2;"><? echo GetMessage('FULL_DESCRIPTION'); ?></div>
?

И все будет читаемо и понятно.
Рейтинг: 0  
Пользователь 129131 13.01.2014 07:03:07
Два года верстаю, ни каких проблем тут не вижу.
В любом коде разбираюсь, не хрюкаю, не мукаю, мол: Какой тут некрасивый код, я не буду тут копаться, отдайте кому-нибудь другому...

Если верстальщик не знает основ синтаксиса PHP, не знает, что прилетает в компонент  и в каких переменных, то зачем вы его в код пускаете?

И еще, с чего вы взяли,  если верстальщик, который изучил основы синтаксиса PHP , научился работать в шаблонах - программист?)
Рейтинг: 0  
Пользователь 90886 21.01.2014 01:51:16
Однозначно ПЛЮС, лично для меня это проблема. При необходимости работы с этим шаблоном - или на вникание и выполнение работы уйдет 2 минуты, или 30 минут - разница-то огромна.

В сложных шаблонах иногда даже приходится тратить время на форматирование. Мне удобнее когда на каждый блок типа <?if?>/<?endif?>, <?foreach?>/<?endforeach?> расположены на новой строке и на отдельном уровне (с доп. табуляцией):

<div class="price">
   <?$Price = false;?>
   <?foreach($arResult["PRICES"] as $arPrice):?>
      <?if($arPrice["CAN_ACCESS"]):?>
         <?if($arPrice["DISCOUNT_VALUE"] < $arPrice["VALUE"]):?>
            <div class="old"><?=$arPrice["PRINT_VALUE"]?></div>
            <div class="new"><?=$arPrice["PRINT_DISCOUNT_VALUE"]?></div>
            <?$Price = $arPrice["PRINT_DISCOUNT_VALUE"];?>
         <?else:?>
            <div class="old"></div>
            <div class="new"><?=$arPrice["PRINT_VALUE"]?></div>
            <?$Price = $arPrice["PRINT_DISCOUNT_VALUE"];?>
         <?endif?>
      <?endif;?>
   <?endforeach;?>
</div>

Но шаблоны Битрикс, конечно, не для верстальщика.