Sign in to follow this  
yakovjik

Как убрать пустой h1 в шаблоне битрикса?

Recommended Posts

когда у страницы нет заголовка, h1 пустой, поисковики этого не любят, а как его убрать, ведь он задается уже позже чем в шаблоне выводится?

Share this post


Link to post
Share on other sites

Для того есть отложенные функции: http://dev.1c-bitrix.ru/api_help/main/general/technology/suspended_functions.php

Вот только беда в том, что эти функции ничего не возвращают, а только выводят в поток.

Мне в своё время удалось такую задачу решить только при помощи глобальной переменной.

Либо, как вариант, можно буферизацию использовать.

Иных способов вывести значение раньше, чем оно задано, не вижу.

Share this post


Link to post
Share on other sites

ради интереса попробовал повозюкаться с шаблоном битрикса на эту тему, получилось фифти\фифти:


<div id="workarea">
<?
if($APPLICATION->ShowTitle(false)) {
echo '<h1 id="pagetitle">
$APPLICATION->ShowTitle(false)
$APPLICATION->ShowProperty("ADDITIONAL_TITLE", "")
</h1>'; }
?>
#WORK_AREA#<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
IncludeTemplateLangFile(__FILE__);
?>
</div>

h1 зараза теперь вообще не выводит.

Share this post


Link to post
Share on other sites

rus, а потому что неправильно.

У этого метода несколько неожиданное поведение: он не возвращает никакого результата.

И потому if($APPLICATION->ShowTitle(false)) не имеет никакого смысла. С таким же успехом можно написать if(false).

Тут суть вот в чём:

заголовок выводится в начале страницы, но определён он может быть при этом где-нибудь в середине, то есть позже.

Как вывести раньше то, что определено позже? Правильно, буферизация в помощь.

Метод SetTitle() устанавливает заголовок. Затем обрабатывается буфер, и в то место, где встречается вызов ShowTitle(), подставляется значение, установленное SetTitle(). То есть, проверять установленность заголовка этой функциоей нельзя. Она не для того.

Есть ещё GetTitle() — с его помощью можно проверять. Но в данном случае тоже неприемлемо, ибо заголовок ещё не задан.

Вообще, не до конца понимаю, почему отложенные функции работают именно так, а не иначе. В этом определённое неудобство есть для разработки.

В своё время, когда у меня была подобная задача, решилось написанием такого компонента:


<?
global $my_title;
$my_title = false;

function myShowTitle($t="title"){
global $APPLICATION;
echo $APPLICATION->AddBufferContent("myGetTitle");
}

function mySetTitle($t){
global $my_title;
if(strlen(trim($t))>0) {
$my_title = "<h1>".$t."</h1>";
} else {
$my_title = $t;
}
}

function myGetTitle(){
global $my_title;
if($my_title === false) {
global $APPLICATION;
$my_title = "<h1>".$APPLICATION->GetTitle()."</h1>";
}
return $my_title;
}


$this->IncludeComponentTemplate();
?>

Чую, что криво. Но работает исправно.

Если кто обругает мой вариант и предложит более правильный — заранее спасибо.

Share this post


Link to post
Share on other sites

И мне понадобилось убрать пустые теги, если не задан заголовок.
Вот нашёл тему - https://dev.1c-bitrix.ru/support/forum/forum6/topic72981/
Т.е. вставляем код в \bitrix\php_interface\init.php :

// функция убирает пустые теги H1, если заголовок пустой
function custom_page_filter(&$content) {
$content = str_replace('<h1></h1>', '', $content); 
} 
AddEventHandler('main', 'OnEndBufferContent', 'custom_page_filter'); 

Всё, больше ничего не требуется, всё работает.

Share this post


Link to post
Share on other sites
В 27.04.2011 в 00:37, yakovjik сказал:

когда у страницы нет заголовка, h1 пустой, поисковики этого не любят, а как его убрать, ведь он задается уже позже чем в шаблоне выводится?

как убрать пустой h1...первый h1 пустой, второй с заголовком в статье оформленный h1 http://prntscr.com/h2zm6g /

Как убрать первый пустой?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Member Statistics

    46,389
    Total Members
    3,128
    Most Online
    Неугомонный
    Newest Member
    Неугомонный
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.



  • Спрашивают сейчас

  • Пишут сейчас

    • https://jsfiddle.net/q2Lfaew5/2/ Пытаюсь добавить иконку к ссылке. Казалось бы, довольно простая задача, но есть несколько условностей, из-за которых пока ничего не получается. 1) Текст должен быть inline-элементом. Для того, чтобы к каждой строке применялась граница, и пустота в них была не кликабельной (как в первом примере). 2) Иконка всегда должна быть вертикально отцентрированная. Реально ли это сделать?
    • Здравствуйте. Почему в этом примере https://jsfiddle.net/pk2rgj3o/4/ в IE11 не срабатывает max-width для изображения? Мне нужно, чтобы фото не выходило за пределы родителя, при этом его ширина и ширина flex-item оставались автоматическими. В данный момент я нашел два решения этой проблемы: 1) width: 100% для фото и 2) flex: 1 для flex-item, но они оба не подходят.
    • Задаю контенту фиксированную высоту, но все равно он под футером. Вы не знаете, лучше оставить высоту футера auto?   <main class="project">
          
          <div class="blog-container">
              <div class="blog-header">
                  <div class="blog-cover">
                      
                  </div>
              </div>
              <div class="blog-body">
                  <div class="blog-title">
                      <h1><a href="#">Lorem ipsum dolor sit amet</a></h1>
                  </div>
                  <div class="blog-text"><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Neque sapiente quae enim eius sit ratione doloremque, non quo, quaerat soluta sint aspernatur nostrum doloribus dolor perferendis saepe numquam molestiae rerum. Iusto explicabo molestias cumque expedita officia repellendus excepturi vitae iure.</p>
                  </div>
                  <div class="blog-tags">
                      <ul>
                          <li><a href="#">Lorem</a></li>
                          <li><a href="#">ipsum</a></li>
                          <li><a href="#">dolar</a></li>
                          <li><a href="#">consectetur</a></li>
                      </ul>
                  </div>
              </div>
              <div class="blog-footer">
                  <ul>
                      <li class="published-date">4 days ago</li>
                  </ul>
              </div>
          </div>     
      </main> <footer>
          
      <nav>
          
      <a href="index.html">HOME</a>
                      <a href="projects.html">PROJECTS</a>
                      <a href="blog.html">BLOG</a>
                      <a href="contact.html">CONTACT</a>
                      <a href="about.html">ABOUT</a>
                      <a href="services.html">SEVICES</a>
                      <a href="location.html">LOCATION</a>
                       </nav>
      <div class="logo">
          <a href="index.html"><img class="graphiclogo" src="logo.png" alt="logo"></a>
      </div>
      <div class="social">
          <a href="#"><img src="img/social/em.png" alt="em"></a>
          <a href="#"><img src="img/social/face.png" alt="em"></a>
          <a href="#"><img src="img/social/goo.png" alt="em"></a>
          <a href="#"><img src="img/social/inst.png" alt="em"></a>
          <a href="#"><img src="img/social/pint.png" alt="em"></a> </div> <p>Version 2019</p>
      </footer>
          <script src="js/script.js"></script>
      </body>                     .blog-container {
          background: #fafafa;
          border-radius: 5px;
          box-shadow: rgba(0,0,0,0.2) 0 4px 2px -2px;
          font-weight: 100;
          margin: 48px auto;
          margin-bottom: 100px;
          width: 50rem;
          height: 20px; } footer {
          width: 100%;
          height: auto;
          background: black;
          margin: 0 auto;
          text-align: center;
          padding-top: 25px;
          position:absolute; 
          bottom:0
      }
  • Popular Contributors