Во время работы над обновлением сайтов, обратил внимание на свою старую вёрстку, когда ещё плохо был знаком с php. С учетом приобретённого опыта видны недостатки старого метода вёрстки, когда HTML обрамляет PHP, а не находится внутри него.
К сожалению, я так и не нашёл ничего интересного на этот счёт, чтобы почитать, как же всё-таки лучше верстать. Однако рассматривая современный код вёрстки всё чаще замечал, что html практически всегда находится внутри php конструкций. И в этом есть значительные преимущества.
Рассмотрю преимущества нахождения HTML внутри PHP на примере вывода заголовка в WordPress.
Ниже конструкция из кода следующего типа: если имеются данные в определенном произвольном поле, то выводим заголовок с этими данными. Я взял код верстки в его первозданном виде, такой какой он был раньше. Выглядел он так:
<h3 class="archive-entry-title" itemprop="name"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php if (get_post_meta($post->ID, 'name_rus', true) ) : ?><?php echo get_post_meta($post->ID, 'name_rus', true); ?><?php endif; ?></a></h3>
<?php edit_post_link(__('...', 'ploshadka')); ?>
<!-- Title End -->
В такой конструкции кода есть несколько недостатков. Во-первых он не наглядный – всё написано в одну строчку. Сделано это специально, для того чтобы не было пустых пробелов между тегами H1, H2, H3. Ведь ничего хорошего нет в том, если в тегах заголовка будут пробелы. Нельзя предсказать, как в этом случае, среди поисковых систем, подобное скажется на сайте. Будут ли лишние пробелы уменьшать силу заголовка или нет. Учитывая что ответов на такой вопрос нет, следует предположить худшее. А потому писать слитно.
Иначе, в продолжении сказанного, если сделать вышеприведенный код наглядным:
<h3 class="archive-entry-title" itemprop="name">
<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">
<?php if (get_post_meta($post->ID, 'name_rus', true) ) : ?>
<?php echo get_post_meta($post->ID, 'name_rus', true); ?>
<?php endif; ?>
</a>
</h3>
<?php edit_post_link(__('...', 'ploshadka')); ?>
<!-- Title End -->
То при просмотре в браузере HTML кода страницы в заголовке тегов h3 увидим следующее:
Нам же нужно и чтобы код читался легко при редактировании и чтобы потом он также слитно отображался при загрузке сайта. А именно чтобы он выглядел таким образом:
Для этого следует воспользоваться PHP и завернуть весь html код в него. И получаем следующий вид php кода для заголовка WordPress:
<?php if ( get_post_meta($post->ID, 'name_rus', true) ) {
echo '<h3 class="archive-entry-title" itemprop="name">';
echo '<a href="' . get_permalink() . '" title="'. the_title('', '', false ) .'" rel="bookmark">';
echo get_post_meta($post->ID, 'name_rus', true);
echo '</a></h3>';
edit_post_link(__('...', 'ploshadka'));
}?>
<!-- Title End -->
В таком формате кода есть и ещё одно преимущество. Он выдержан в едином стиле, а потому легко читается.
Кроме того если if не сработает в качестве true, то обрамляющие теги (H3) тоже не будут выведены. И тем самым не будет нарушен стиль сайта. Что обязательно было бы в первом примере кода.