Jump to content
  • 0

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


yakovjik
 Share

Question

6 answers to this question

Recommended Posts

  • 0

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

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

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

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

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

Link to comment
Share on other sites

  • 0

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


<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 зараза теперь вообще не выводит.

Link to comment
Share on other sites

  • 0

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();
?>

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

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

Link to comment
Share on other sites

  • 0

И мне понадобилось убрать пустые теги, если не задан заголовок.
Вот нашёл тему - 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'); 

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

Link to comment
Share on other sites

  • 0
В 27.04.2011 в 00:37, yakovjik сказал:

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

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

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy