Интеграция адаптивного Bootstrap шаблона сайта в 1С-Битрикс по шагам - УРОК 11


В предыдущих уроках мы интегрировали всю вёрстку каркаса шаблона, а так же реализовали главную страницу сайта, используя компоненты 1С-Битрикс. Мы создали множество компонентом так или иначе, выводящих часть информации и дающих ссылку на новость, отзыв или какой-то иной контент. Однако сами страницы для этого контента мы не сделали, поэтому сейчас наш проект имеет множество отсутсвующих страниц.

В таких случаях следует выводить 404 ошибку "документ не найден", которую мы реализуем в 11 уроке интеграции Адаптивного Twitter Bootstrap дизайна в 1С-Битрикс.

 

1С-Битрикс автоматически может выводить страницу 404.php для всех ненайденных на сервере документов (такая логика заложена по умолчанию в /bitrix/urlrewrite.php), поэтому нам осталось лишь правильно оформить эту страницу! Для этого мы воспользуемся оригинальной страницей 404.html из исходной вёрстки (можно взять в 0 и 1 уроках, а так же в нашем репозитории на GitHub):

страница 404 ошибки из исходной вёрстки Bootstrap шаблона Stylish

Вёрстка этого документа имеет уже привычный нам каркас шаблона и следующий код в области контента:

<div class="row block-404">
<div class="span8">
<img src="img/404.png" alt="">
</div>
<div class="span4">
<h1>Sorry!</h1>
<h4>404 page not found</h4>
<p class="p3">The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.</p>
Please try using our search box below to look for information on the website
<form id="form-search" action="search.php" method="GET" accept-charset="utf-8" class="form-404" >
<div class="clearfix">
<input type="text" name="s" onBlur="if(this.value=='') this.value=''" onFocus="if(this.value =='' ) this.value=''" >
<a href="#" onClick="document.getElementById('form-search').submit()" class="btn btn_ btn-small_">search</a>
</div>
</form>
</div>
</div>

Обратим внимание, что с точки зрения 1С-Битрикс 404.php может быть обычной страницей с небольшой добавкой в заголовок (перед вызовом headre.php шаблона сайта):

include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");

Таким образом задаётся заголовок ответа сервера.

  • Для обычный страниц он 200
  • Для страниц "документ не найден" правильный заголовок - 404 (потому такие страницы и называются "ошибка 404")

Теперь добавим код исходной вёрстки в контентную область страницы, не забыв про руссификацию.

В частности, картинка с грусным смайликом находится вместе со всеми картинками шаблона в /bitrix/template/stylish/images/.

Создадим там папку 404, переместим туда эту картинку (переименовав) и создадим рядом руссифицированную копию. Мы сделаем это на всякий случай (если кто-то захочет использовать англоязычную картинку), но вы можете просто заменить уже имеющееся изображение.

Так же не забудем про ЗАГОЛОВОК (title) страницы, значение которого задаётся в свойствах:

свойство заголовка 404 страницы 1С-Битрикс

Или привычной нам функцией установки заголовка страницы:

$APPLICATION->SetTitle("404 - Страница не найдена!");


Форма поиска

Единственный динамический компонент на нашей 404 странице - форма поиска, которая заметно отличается от той, что мы используем в шапке.

Воспользуемся компонентом bitrix:search.form и скопируем шаблон компонента .default в шаблон сайта, переименовав в stylish (форма выглядит довольно универсальной, возможно мы воспользуемся ею ещё где-то).

Удалим все лишние файлы (.parameters.php и его языковые файлы).

Теперь в файле /bitrix/templates/stylish/components/bitrix/search.form/stylish/template.php код шаблона компонента (минимально кастомизировав имеющийся шаблон под нашу вёрстку):

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<form class="form-404" id="form-search" action="<?=$arResult["FORM_ACTION"]?>">
<div class="clearfix">
<input type="text" name="q" value="" size="15" maxlength="50" />
<a href="#" onClick="document.getElementById('form-search').submit()" class="btn btn_ btn-small_"><?=GetMessage("BSF_T_SEARCH_BUTTON");?></a>
</div>
</form>

Тогда компонент можно будет вызвать на странице:

<?$APPLICATION->IncludeComponent("bitrix:search.form", "stylish", Array(
"PAGE" => "#SITE_DIR#search/index.php", // Страница выдачи результатов поиска (доступен макрос #SITE_DIR#)
),
false
);?>


Заключение

В результате код страницы 404.php будет выглядеть:

<? include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("404 - Страница не найдена!");
?>


<div class="row block-404">
<div class="span8">
<img src="/bitrix/templates/stylish/img/404/404_ru.png" alt="">
</div>
<div class="span4">
<h1>ОЙ!</h1>
<h4>404 - страница не найдена</h4>
<p class="p3">Страница, которую вы ищете, возможно, была удалена, переименована, или она временно недоступна.</p>
Пожалуйста попробуйте воспользоваться поиском по сайту
<?$APPLICATION->IncludeComponent("bitrix:search.form", "stylish", array(
"PAGE" => "#SITE_DIR#search/index.php"
),
false
);?>

</div>
</div>


<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Это один из самых простых (и тем не менее один из самых полезных) наших уроков по реализации адаптивной Bootstrap вёрстки в 1С-Битрикс:

404.php в адаптивной Twitter Bootstrap шаблоне 1С-Битрикс (русская версия)

В частности, SEO оптимизаторы будут нам очень благодарны за хорошую и удобную страницу 404, корректно объясняющую поисковым системам когда те попадают на несуществующую страницу или документ.

В будущем вы можете сделать эту страницу более привлекательной, разместив на ней галерею каких-то потенциально полезных товаров или услуг с помощью компонентов вывода информации из инфоблока, поскольку 404.php в архитектуре 1С-Битрикс - ОБЫЧНАЯ СТРАНИЦА!


Результаты урока как всегда можно найти в нашем репозитории на GitHub.



Интеграция адаптивного Bootstrap шаблона сайта в 1С-Битрикс по шагам - УРОК 11

<p style="text-align: justify;">В предыдущих уроках мы интегрировали всю вёрстку каркаса шаблона, а так же реализовали главную страницу сайта, используя компоненты 1С-Битрикс. Мы создали множество компонентом так или иначе, выводящих часть информации и дающих ссылку на новость, отзыв или какой-то иной контент. Однако сами страницы для этого контента мы не сделали, поэтому сейчас наш проект имеет множество отсутсвующих страниц.</p> <h2 style="text-align: justify;"><b>В таких случаях следует выводить 404 ошибку &quot;документ не найден&quot;, которую мы реализуем в 11 уроке интеграции Адаптивного Twitter Bootstrap дизайна в 1С-Битрикс.</b></h2> <p style="text-align: justify;"> </p> <p style="text-align: justify;">1С-Битрикс автоматически может выводить страницу 404.php для всех ненайденных на сервере документов (<i>такая логика заложена по умолчанию в /bitrix/urlrewrite.php</i>), поэтому нам осталось лишь правильно оформить эту страницу! Для этого мы воспользуемся оригинальной страницей 404.html из исходной вёрстки (можно взять в 0 и 1 уроках, а так же в нашем репозитории на GitHub):</p> <p style="text-align: justify;"><img src="/upload/medialibrary/ed1/ed1b6efda555842ae9af544418db2a3b.png" title="страница 404 ошибки из исходной вёрстки Bootstrap шаблона Stylish" hspace="5" vspace="5" border="0" alt="страница 404 ошибки из исходной вёрстки Bootstrap шаблона Stylish" width="700" height="263" /></p> <p style="text-align: justify;">Вёрстка этого документа имеет уже привычный нам каркас шаблона и следующий код в области контента:</p> <div style="border: 1px solid; padding: 10px;"><code class="HTML">&lt;div class=&quot;row block-404&quot;&gt; <br /> &lt;div class=&quot;span8&quot;&gt; <br /> &lt;img src=&quot;img/404.png&quot; alt=&quot;&quot;&gt; <br /> &lt;/div&gt; <br /> &lt;div class=&quot;span4&quot;&gt; <br /> &lt;h1&gt;Sorry!&lt;/h1&gt; <br /> &lt;h4&gt;404 page not found&lt;/h4&gt; <br /> &lt;p class=&quot;p3&quot;&gt;The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.&lt;/p&gt; <br /> Please try using our search box below to look for information on the website <br /> &lt;form id=&quot;form-search&quot; action=&quot;search.php&quot; method=&quot;GET&quot; accept-charset=&quot;utf-8&quot; class=&quot;form-404&quot; &gt; <br /> &lt;div class=&quot;clearfix&quot;&gt; <br /> &lt;input type=&quot;text&quot; name=&quot;s&quot; onBlur=&quot;if(this.value=='') this.value=''&quot; onFocus=&quot;if(this.value =='' ) this.value=''&quot; &gt; <br /> &lt;a href=&quot;#&quot; onClick=&quot;document.getElementById('form-search').submit()&quot; class=&quot;btn btn_ btn-small_&quot;&gt;search&lt;/a&gt; <br /> &lt;/div&gt; <br /> &lt;/form&gt; <br /> &lt;/div&gt; <br /> &lt;/div&gt;</code></div> <p style="text-align: justify;"> Обратим внимание, что с точки зрения 1С-Битрикс 404.php может быть обычной страницей с небольшой добавкой в заголовок (перед вызовом headre.php шаблона сайта): </p> <div style="border: 1px solid; padding: 10px;"><code class="php">include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php'); <br /> CHTTP::SetStatus(&quot;404 Not Found&quot;); <br /> @define(&quot;ERROR_404&quot;,&quot;Y&quot;);</code></div> <p style="text-align: justify;"> Таким образом задаётся заголовок ответа сервера. </p> <p style="text-align: justify;"> </p> <ul> <li>Для обычный страниц он 200</li> <li>Для страниц &quot;документ не найден&quot; правильный заголовок - 404 (потому такие страницы и называются &quot;ошибка 404&quot;)</li> </ul> <p></p> <p style="text-align: justify;">Теперь добавим код исходной вёрстки в контентную область страницы, не забыв про руссификацию.</p> <p style="text-align: justify;">В частности, картинка с грусным смайликом находится вместе со всеми картинками шаблона в /bitrix/template/stylish/images/.</p> <p style="text-align: justify;">Создадим там папку 404, переместим туда эту картинку (переименовав) и создадим рядом руссифицированную копию. <i>Мы сделаем это на всякий случай (если кто-то захочет использовать англоязычную картинку), но вы можете просто заменить уже имеющееся изображение</i>.</p> <p style="text-align: justify;"> Так же не забудем про ЗАГОЛОВОК (title) страницы, значение которого задаётся в свойствах: </p> <p style="text-align: justify;"><img src="/upload/medialibrary/b15/b15e6faf122e475d64235bcaee2b6955.png" title="свойство заголовка 404 страницы 1С-Битрикс" hspace="5" vspace="5" border="0" alt="свойство заголовка 404 страницы 1С-Битрикс" width="700" height="510" /></p> <p style="text-align: justify;">Или привычной нам функцией установки заголовка страницы:</p> <div style="border: 1px solid; padding: 10px;"><code class="php">$APPLICATION-&gt;SetTitle(&quot;404 - Страница не найдена!&quot;);</code></div> <p style="text-align: justify;"> <br /> </p> <h2 style="text-align: justify;">Форма поиска</h2> <p style="text-align: justify;">Единственный динамический компонент на нашей 404 странице - форма поиска, которая заметно отличается от той, что мы используем в шапке.</p> <p style="text-align: justify;">Воспользуемся компонентом bitrix:search.form и скопируем шаблон компонента .default в шаблон сайта, переименовав в stylish (форма выглядит довольно универсальной, возможно мы воспользуемся ею ещё где-то).</p> <p style="text-align: justify;">Удалим все лишние файлы (.parameters.php и его языковые файлы).</p> <p style="text-align: justify;">Теперь в файле /bitrix/templates/stylish/components/bitrix/search.form/stylish/template.php код шаблона компонента (минимально кастомизировав имеющийся шаблон под нашу вёрстку):</p> <div style="border: 1px solid; padding: 10px;"><code class="php">&lt;?if(!defined(&quot;B_PROLOG_INCLUDED&quot;) || B_PROLOG_INCLUDED!==true)die();?&gt; <br /> <br /> &lt;form class=&quot;form-404&quot; id=&quot;form-search&quot; action=&quot;&lt;?=$arResult[&quot;FORM_ACTION&quot;]?&gt;&quot;&gt; <br /> &lt;div class=&quot;clearfix&quot;&gt; <br /> &lt;input type=&quot;text&quot; name=&quot;q&quot; value=&quot;&quot; size=&quot;15&quot; maxlength=&quot;50&quot; /&gt; <br /> &lt;a href=&quot;#&quot; onClick=&quot;document.getElementById('form-search').submit()&quot; class=&quot;btn btn_ btn-small_&quot;&gt;&lt;?=GetMessage(&quot;BSF_T_SEARCH_BUTTON&quot;);?&gt;&lt;/a&gt; <br /> &lt;/div&gt; <br /> &lt;/form&gt;</code></div> <p style="text-align: justify;"> Тогда компонент можно будет вызвать на странице: </p> <div style="border: 1px solid; padding: 10px;"><code class="php">&lt;?$APPLICATION-&gt;IncludeComponent(&quot;bitrix:search.form&quot;, &quot;stylish&quot;, Array( <br /> &quot;PAGE&quot; =&gt; &quot;#SITE_DIR#search/index.php&quot;, // Страница выдачи результатов поиска (доступен макрос #SITE_DIR#) <br /> ), <br /> false <br /> );?&gt;</code></div> <p style="text-align: justify;"> <br /> </p> <h2 style="text-align: justify;">Заключение</h2> <p style="text-align: justify;">В результате код страницы 404.php будет выглядеть:</p> <div style="border: 1px solid; padding: 10px;"><code class="php">&lt;? include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php'); <br /> CHTTP::SetStatus(&quot;404 Not Found&quot;); <br /> @define(&quot;ERROR_404&quot;,&quot;Y&quot;); <br /> <br /> require($_SERVER[&quot;DOCUMENT_ROOT&quot;].&quot;/bitrix/header.php&quot;); <br /> $APPLICATION-&gt;SetTitle(&quot;404 - Страница не найдена!&quot;); <br /> ?&gt; <br /> <br /> <br /> &lt;div class=&quot;row block-404&quot;&gt; <br /> &lt;div class=&quot;span8&quot;&gt; <br /> &lt;img src=&quot;/bitrix/templates/stylish/img/404/404_ru.png&quot; alt=&quot;&quot;&gt; <br /> &lt;/div&gt; <br /> &lt;div class=&quot;span4&quot;&gt; <br /> &lt;h1&gt;ОЙ!&lt;/h1&gt; <br /> &lt;h4&gt;404 - страница не найдена&lt;/h4&gt; <br /> &lt;p class=&quot;p3&quot;&gt;Страница, которую вы ищете, возможно, была удалена, переименована, или она временно недоступна.&lt;/p&gt; <br /> Пожалуйста попробуйте воспользоваться поиском по сайту <br /> &lt;?$APPLICATION-&gt;IncludeComponent(&quot;bitrix:search.form&quot;, &quot;stylish&quot;, array( <br /> &quot;PAGE&quot; =&gt; &quot;#SITE_DIR#search/index.php&quot; <br /> ), <br /> false <br /> );?&gt; <br /> <br /> &lt;/div&gt; <br /> &lt;/div&gt; <br /> <br /> <br /> &lt;?require($_SERVER[&quot;DOCUMENT_ROOT&quot;].&quot;/bitrix/footer.php&quot;);?&gt;</code></div> <p style="text-align: justify;"> Это один из самых простых (и тем не менее один из самых полезных) наших уроков по реализации адаптивной Bootstrap вёрстки в 1С-Битрикс: </p> <p style="text-align: justify;"><img src="/upload/medialibrary/643/643f9a418cfc0ba85d6df77472b8ee35.png" title="404.php в адаптивной Twitter Bootstrap шаблоне 1С-Битрикс (русская версия)" hspace="5" vspace="5" border="0" alt="404.php в адаптивной Twitter Bootstrap шаблоне 1С-Битрикс (русская версия)" width="700" height="525" /></p> <p style="text-align: justify;"> <i>В частности, SEO оптимизаторы будут нам очень благодарны за хорошую и удобную страницу 404, корректно объясняющую поисковым системам когда те попадают на несуществующую страницу или документ. </i></p> <p style="text-align: justify;"><i>В будущем вы можете сделать эту страницу более привлекательной, разместив на ней галерею каких-то потенциально полезных товаров или услуг с помощью компонентов вывода информации из инфоблока, поскольку 404.php в архитектуре 1С-Битрикс - ОБЫЧНАЯ СТРАНИЦА!</i></p> <p style="text-align: justify;"> <br /> </p> <p style="text-align: justify;">Результаты урока как всегда можно найти в <noindex><a href="https://github.com/lexnekr/bitrixtemplate_stylish/tree/69830a4c21f1c2b385e76e9bc32cd46ddfe95363" rel="nofollow" >нашем репозитории на GitHub</a></noindex>.</p> <p style="text-align: justify;"> <br /> </p> <div style="text-align: right;"><a href="http://plus.google.com/+АлексейЗадойный?rel=author" target="_blank" >Задойный А.В.</a></div>

Возврат к списку

Яндекс.Метрика