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

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
Здравствуйте)

Нужно удалить строку
Код
<link href="/templates/шаблон/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon">

Пробовал несколькими способами:

Код
//1
$doc = JFactory::getDocument();
foreach ($doc->_links as $k => $array) {
 if ($array['attribs']['type'] == 'image/vnd.microsoft.icon') {
  unset($doc->_links[$k]);
 }
}

//2
$doc = JFactory::getDocument();
 foreach ( $doc->_links as $k => $array ) {
 if ( $array['relation'] == 'shortcut icon' ) {
 unset($doc->_links[$k]);
 }
}

//3
$doc = JFactory::getDocument();
$head = $this->document->getHeadData();
unset($head['links']['/templates/wtw_alfa2/favicon.ico']);

Не удаляется ..

Посмотрел, что внутри - ничего похожего нет:
Код
var_dump ($head);
var_dump ($doc->_links);

Подскажите, пожалуйста, как это можно сделать?

*

effrit

  • Легенда
  • 9566
  • 1051 / 13
  • effrit.com
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
Я пытаюсь сделать это прямо в шаблоне после вывода

<jdoc:include type="head" />

Проблема, скорее всего, в коде ..))
Было бы что запихивать
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
Думаю дело в то где этот исполнять.
Потому подключение favicon происходит после шаблона.
https://github.com/joomla/joomla-cms/blob/staging/libraries/src/Document/HtmlDocument.php#L664-L677

А тебе зачем ее сносить?

наверно имеет смысл в системный плагин запихать код и поставить его последним.
Боюсь что придется аж в afterRender регуляркой сносить
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

effrit

  • Легенда
  • 9566
  • 1051 / 13
  • effrit.com
на протостаре видит и отлично удаляет через плагин
Код
		$doc = JFactory::getDocument();
$head = $doc->getHeadData();
unset($head['links']['/templates/protostar/favicon.ico']);
*

AlekVolsk

  • Гуру
  • 6789
  • 396 / 4
вырезаем <jdoc:include type="head" /> полностью, вместо него выводим рендер функции, в которой получаем $doc->getHeadData();, полученное распарсиваем и формируем head ручками
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
Думаю дело в то где этот исполнять.
Потому подключение favicon происходит после шаблона.
https://github.com/joomla/joomla-cms/blob/staging/libraries/src/Document/HtmlDocument.php#L664-L677

А тебе зачем ее сносить?
Боюсь что придется аж в afterRender регуляркой сносить

В файле HtmlDocument.php для j3.8.12 - нет такого кода ... В нем всего 376 строк
Зачем? - SEO-шник сказал... Альтернативный код нужно вставить ..




*

AlekVolsk

  • Гуру
  • 6789
  • 396 / 4
SEO-шник сказал...
тыдыщ фейсом по палму...
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
на протостаре видит и отлично удаляет через плагин
Код
		$doc = JFactory::getDocument();
$head = $doc->getHeadData();
unset($head['links']['/templates/protostar/favicon.ico']);

onBeforeRender()?
Спасибо, щас попробую

вырезаем <jdoc:include type="head" /> полностью, вместо него выводим рендер функции, в которой получаем $doc->getHeadData();, полученное распарсиваем и формируем head ручками

как-то сложновато для меня))
*

effrit

  • Легенда
  • 9566
  • 1051 / 13
  • effrit.com
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
В файле HtmlDocument.php для j3.8.12 - нет такого кода ... В нем всего 376 строк
Эм эта ссылка с 3.9, а данный код в ней не менялся. Видать с файлом промахнулись.

на протостаре видит и отлично удаляет через плагин
Может просто циклом крутануть, тогда точный путь писать не придется.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
да, событие это, но путь свой пиши, там протостаровский шаб.
вардампом проверь head.
не, не удаляет ...

вардамп до unset - есть иконка
вардамп после unset - нет иконки!

А в коде страницы все равно подключается! (((

Код плагина
Код
class plgSystemFaviconremove extends JPlugin
{
public function __construct( & $subject, $config )
  {
    parent::__construct( $subject, $config );
    $this->loadLanguage();
  }

  public function onBeforeRender(){


    $doc = JFactory::getDocument();
    $head = $doc->getHeadData();
    unset($head['links']['/templates/wtw_alfa2/favicon.ico']);
    //var_dump ($head);

  }
}
« Последнее редактирование: 02.10.2018, 15:01:34 от fbr »
*

effrit

  • Легенда
  • 9566
  • 1051 / 13
  • effrit.com
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
вардамп после unset - нет иконки!
Значит как я и писал. Иконка добавляется при рендере, а в afterRender уже по простому не поменять. Даешь регулярки в afterrender.

P.S Суровая последовательность Joomla =)
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
Стоп! а кто хед на место ставить то будет!

Код
$doc->setHeadData($head);
« Последнее редактирование: 02.10.2018, 15:39:21 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
@fbr скинь плагин целиком, я его малясь подрехтую, чтобы универсальным был.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
не умничай, а пальцем покажи, где чего менять )

Код
 public function onBeforeRender(){


    $doc = JFactory::getDocument();
    $head = $doc->getHeadData();
    unset($head['links']['/templates/wtw_alfa2/favicon.ico']);
  $doc->setHeadData($head);

  }
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
Ну дайте установочный пакет, я цикл хочу сделать.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
у мну нету. я в свой плагин заколупал, чтоб проверить )
Если я свой начну делать, то меня понесет делать репозиторий, и обновлялку.

А такой плагин ни кому не нужен
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
прикрепил плагин
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
Ура! Работает!
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
Septdir, спасибо)
Я отредктировал, добавил  $doc->setHeadData($head);
Убил фавикон!

Ребята, спасибо огромное!
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
В protostar чет у меня не убивается(чет мне подсказывает что у еще раз позднее ставиться фавайкон). Однако если у вас убивается, вот такой код более универсальный. там два варианта. прегматч или relation

Код
	public function onBeforeRender()
{
$doc  = JFactory::getDocument();
$head = $doc->getHeadData();

foreach ($head['links'] as $key => $link)
{
// if (preg_match('/favicon/', $key))
// {
// unset($head['links'][$key]);
// }

if (!empty($link['relation']) && $link['relation'] == 'shortcut icon')
{
unset($head['links'][$key]);
}
}
$doc->setHeadData($head);
}
« Последнее редактирование: 02.10.2018, 16:05:00 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
Спасибо))
*

Septdir

  • Живу я здесь
  • 3051
  • 149 / 3
Кстати а может просто сносить сами favicons чекать есть ли файл и сносить.  :-*
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

fbr

  • Завсегдатай
  • 1407
  • 160 / 7
Можно просто удалить картинку favicon.ico - и подключать не будет
Но у меня еще одна иконка в корне сайта, для почтовых клиентов, и снести я ее не могу
А эта зараза, если нет иконки в шаблоне, берет из корня и все равно подключает!

Поэтому придется юзать плагин)

пс. Эти сеошники из меня уже почти всю кровь выпили)


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

Альтернативное подключение jdoc:include type='head'

Автор pavel2950

Ответов: 5
Просмотров: 91
Последний ответ 22.07.2019, 21:57:11
от Septdir
Удалить в ссылках на тег "/content/"

Автор HolySong

Ответов: 0
Просмотров: 73
Последний ответ 10.06.2019, 15:29:28
от HolySong
Удалить циклическую ссылку в переключателе языков

Автор Gerostrat

Ответов: 2
Просмотров: 89
Последний ответ 06.06.2019, 09:52:37
от Gerostrat
как тут удалить сообщение?

Автор Indexxx

Ответов: 1
Просмотров: 97
Последний ответ 23.05.2019, 23:50:39
от wishlight
Идеология подключения файлов php в модулях Joomla

Автор efimov777

Ответов: 6
Просмотров: 183
Последний ответ 17.04.2019, 23:22:01
от ProtectYourSite