0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 1896 Просмотров
*

Aiden

  • Захожу иногда
  • 123
  • 0 / 0
Убираем пустые поля в head
« : 12.03.2016, 08:55:14 »
Конкретно, как можно убрать пустые meta robots, keywords и description

Нашел статью, но по ней ничего толкового не вышло.

Кто нибудь может написать грамотное решение что бы поля robots, keywords и description выводились только если заполнены. Тем более в J 2.5 это есть по дефолту, функционал всё таки полезный.

« Последнее редактирование: 12.03.2016, 15:34:42 от Aiden »
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Re: Убираем пустые поля в head
« Ответ #1 : 12.03.2016, 21:58:27 »
Так сделайте миграцию на 3* версию и голову ломать не надо будет.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Убираем пустые поля в head
« Ответ #2 : 12.03.2016, 22:03:13 »
Попробуйте следующее:

Код
$doc = JFactory::getDocument();

if(isset($doc->_metaTags['standard']['robots']) && empty($doc->_metaTags['standard']['robots']))
{
    unset($doc->_metaTags['standard']['robots']);
}
*

Aiden

  • Захожу иногда
  • 123
  • 0 / 0
Re: Убираем пустые поля в head
« Ответ #3 : 12.03.2016, 22:33:02 »
flyingspook из за метатегов менять родненькую 1.5 на 3? Нет уж.

Филипп Сорокин

Если добавить в index.php шаблона то robots выводится в обычном режиме.

Ладно, не буду мучить т.к. там наверное не 1 файл нужно редактировать, а я даже не понял из вашего поста для какого файла ваш вариант.Попробую закинуть тз в коммерческий раздел.
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Re: Убираем пустые поля в head
« Ответ #4 : 13.03.2016, 13:49:36 »
Если сайт будет развиваться то его обновлять, если нет, то хакать по ядру можно или для такого рода задач можно плагины писать.
как выше написали можно в шаблоне писать
если хакать то файл отвечает за это в 1.5
libraries\joomla\document\html\renderer\head.php
пишите на каждый вывод условие на - если не пусто или не равно пусто
вариантов массы как их удалить из кода
*

AGusar

  • Осваиваюсь на форуме
  • 19
  • 1 / 1
Re: Убираем пустые поля в head
« Ответ #5 : 15.03.2016, 12:45:05 »
Уберите из текущего шаблона сайта код, который выводит тег title. Для этого нужно открыть файл templates/папка_текущего_шаблона/index.php и закомментировать строчку < title>< ?php echo $mosConfig_sitename; ?></title> или совсем удалите.
Исправьте код файла /includes/frontend.php для discription.

//$mainframe->appendMetaTag( 'description', $mosConfig_MetaDesc );
//$mainframe->appendMetaTag( 'keywords', $mosConfig_MetaKeys );
$description = '';
$keywords = '';
 
$_meta_keys_index = -1;
$_meta_desc_index = -1;
 
$n = count( $mainframe->_head['meta'] );
for ($i = 0; $i < $n; $i++) {
  if ($mainframe->_head['meta'][$i][0] == 'keywords') {
    $_meta_keys_index = $i;
    $keywords = $mainframe->_head['meta'][$i][1];               
  } else if ($mainframe->_head['meta'][$i][0] == 'description') {
    $_meta_desc_index = $i;
    $description = $mainframe->_head['meta'][$i][1];               
  }
}
 
if (!$description) {
  $mainframe->appendMetaTag( 'description', $mosConfig_MetaDesc );
}
 
if (!$keywords) {
  $mainframe->appendMetaTag( 'keywords', $mosConfig_MetaKeys );
}   

Что касается keywords. Установите iJoomla Metatag Generator и настройте его.
*

Aiden

  • Захожу иногда
  • 123
  • 0 / 0
Re: Убираем пустые поля в head
« Ответ #6 : 16.03.2016, 12:35:16 »
AGusar к чему совет про title?

Решил всё таки добить тему. Практически нашел нужное решение, осталось совсем чуть, всё делается в файле

Код
libraries/joomla/document/html/renderer/head.php

Оригинал:

Спойлер
[свернуть]


Новый вариант:


Спойлер
[свернуть]

После этого description появляется только если поле заполнено, что хорошо, а вот keywords и robots не появляются если поля заполнены. Keywords всё равно не использую, а вот почему не появляется meta robots??

Смысл в том, что бы дефолтные index, follow не выводились, а только то, что прописывается вручную в материале, например прописали в материале noindex - он и появился
« Последнее редактирование: 16.03.2016, 12:55:05 от Aiden »
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Re: Убираем пустые поля в head
« Ответ #7 : 16.03.2016, 14:28:34 »
Вам в файле libraries\joomla\document\html\html.php надо за комментировать просто строку
Код: php
$this->setMetaData('robots', 'index, follow' );
и ни чего своего не писать для robots ни где
*

Aiden

  • Захожу иногда
  • 123
  • 0 / 0
Re: Убираем пустые поля в head
« Ответ #8 : 16.03.2016, 16:09:56 »
В файле libraries\joomla\document\html\html.php закомментировал  строку
Код: php
$this->setMetaData('robots', 'index, follow' );

В head.php код вывода такой

Спойлер
[свернуть]

Хорошо, что
Robots выводится только если заполнено поле
Description выводится только если заполнено поле
но плохо что пустой
Keywords выводится

Код: php
<meta name="keywords" content="" />


Блин  :dry:


В принципе он вообще не нужен, осталось его отключить, пока не получается т.к. не могу понять откуда вообще берется: ни в document.php ни в HTML.php ни в head.php ничего похожего на keywords нету
« Последнее редактирование: 16.03.2016, 18:52:54 от Aiden »
*

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Re: Убираем пустые поля в head
« Ответ #9 : 16.03.2016, 20:08:44 »
keywords формируют расширения его убирать надо на уровне шаблона или плагин писать
*

Aiden

  • Захожу иногда
  • 123
  • 0 / 0
Re: Убираем пустые поля в head
« Ответ #10 : 16.03.2016, 22:15:04 »
Может быть кому нибудь пригодится:

По умолчанию Joomla 1.5 выводит meta даже если они не заполнены:

Код
<meta name="robots" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />

После изменений:
Код
<meta name="robots" content="blabla" /> выводится только если заполнен в материале или SEF
<meta name="keywords" content="" /> не выводится
<meta name="description" content="blabla" /> выводится только если заполнен в материале или SEF
<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" /> не выводится

1. В файле libraries\joomla\document\html\html.php


Код: php
$this->setMetaData('robots', 'index, follow' );

меняем на

Код: php
// $this->setMetaData('robots', 'index, follow' );

2. В файле libraries\joomla\document\html\renderer\head.php

меняем

Код: php
foreach ($document->_metaTags as $type => $tag)
{
foreach ($tag as $name => $content)
{
if ($type == 'http-equiv') {
$strHtml .= $tab.'<meta http-equiv="'.$name.'" content="'.$content.'"'.$tagEnd.$lnEnd;
} elseif ($type == 'standard') {
$strHtml .= $tab.'<meta name="'.$name.'" content="'.str_replace('"',"'",$content).'"'.$tagEnd.$lnEnd;
}
}
}

$strHtml .= $tab.'<meta name="description" content="'.$document->getDescription().'" />'.$lnEnd;
$strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd;

$strHtml .= $tab.'<title>'.htmlspecialchars($document->getTitle()).'</title>'.$lnEnd;

на

Код: php
foreach ($document->_metaTags as $type => $tag)
        {
         foreach ($tag as $name => $content)
         {
            if ($type == 'http-equiv') {
               $strHtml .= $tab.'<meta http-equiv="'.$name.'" content="'.$content.'"'.$tagEnd.$lnEnd;
            } elseif ($type == 'standard') {
                                        if ($name != 'keywords') {
                      $strHtml .= $tab.'<meta name="'.$name.'" content="'.str_replace('"',"'",$content).'"'.$tagEnd.$lnEnd;
                                        }
                             }
                  }
        }

               
$documentDescription = $document->getDescription();
if ($documentDescription) {
  $strHtml .= $tab.'<meta name="description" content="'.$document->getDescription().'" />'.$lnEnd;


}
  $strHtml .= $tab.'<title>'.htmlspecialchars($document->getTitle()).'</title>'.$lnEnd;
 


Работоспособность проверил на 1.5.26

Всем спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как подключить js не в <head> а в конец страницы.

Автор vanya829

Ответов: 25
Просмотров: 17069
Последний ответ 18.06.2017, 16:37:11
от skytype
Убираем следы Joomla 1.5

Автор Elimelech

Ответов: 30
Просмотров: 2933
Последний ответ 16.12.2016, 11:19:52
от flyingspook
Оптимизацич JS и переписывание <jdoc:include type="head" />

Автор Varyag0488

Ответов: 23
Просмотров: 23341
Последний ответ 15.11.2014, 16:26:57
от beliyadm
Как вставить свой код в head отдельной статьи?

Автор sasha777

Ответов: 4
Просмотров: 3282
Последний ответ 28.01.2012, 15:59:43
от Fedor Vlasenko
Все js переместить внизу сраницы, а CSS после тега head

Автор cantsave

Ответов: 1
Просмотров: 1667
Последний ответ 26.11.2011, 20:41:39
от mohax