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

andragor

  • Осваиваюсь на форуме
  • 30
  • 5 / 0
Здравствуйте,

Кто-нибудь знает как можно сделать некликабельными ссылки на всех страницах, ссылающихся самих на себя? Плагин или хак какой-нибудь?
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
Системный плагин. Событие onAfterRender
Код
        global $app;
        if($app->isSite()){
            $body = $app->getBody();
            /* Здесь регулярным выражением ищите в $body ссылки на текущуую страницу и вырезаете их */
            $app->setBody($body);
        }
На связи в телеге @sivers
*

arma

  • Завсегдатай
  • 1513
  • 70 / 2
Ещё один совет сеошника? Глупасть
*

draff

  • Живу я здесь
  • 3943
  • 263 / 7
  • Ищу работу
Кто-нибудь знает как можно сделать некликабельными ссылки на всех страницах, ссылающихся самих на себя? Плагин или хак какой-нибудь?
Так удаление ссылок или отключение ? ВОт JavaScript , перед закрывающим  тегом body в шаблон. Скрипт с локалки, на хостинге нужно определиться с добавкой к  атрибуту
Код
	<script>
jQuery(function() {
jQuery('a').each( function(e) {
jQuery('a').on('click', function() {
let testim_href = 'http://localhost' + jQuery(this).attr('href');
// console.log(testim_href);
if(testim_href == "<?php echo JURI::current(); ?>") return false;;
});
});
});
</script>
« Последнее редактирование: 15.03.2019, 10:51:48 от draff »
*

andragor

  • Осваиваюсь на форуме
  • 30
  • 5 / 0

Системный плагин. Событие onAfterRender
Спасибо, а куда его вставлять, чтобы заработал?
Ещё один совет сеошника? Глупасть
Да, SEO-шник сказал, что ссылок со страницы на саму себя быть не должно. А почему глупость? Ссылку по этому вопросу не скинешь?
Так удаление ссылок или отключение ? ВОт JavaScript , перед тегом body в шаблон. Скрипт с локалки, на хостинге нужно определиться с добавкой к  атрибуту
Отключение скорее, чтобы вместо Ссылка было Ссылка.
Запихал скрипт в head и поправил localhost на https://www.moydomen.ru - не заработал. Что-то не так делаю?
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
Да, SEO-шник сказал, что ссылок со страницы на саму себя быть не должно.
В этом случае решения на JS/jQuery вам не подойдут - в коде страницы все ссылки будут на месте и роботы их увидят.

Как сделать плагин - там в плагинах даже заготовка есть. Но можете воспользоваться вот этим ресурсом: inet-reklama .com (сервисы => создание плагина). Там можно создавать пустые (почти) заготовки. Пользуюсь им, когда лень с нуля делать. Создайте там плагин, системное имя делайте на английском одним словом маленькими буквами, в событиях ставьте группу system и чекбокс на onAfterRender, можете заполнить остальные поля. Потом жмете "Сформировать плагин", сохраняете и устанавливаете (перед установкой полезно заглянуть внутрь архива, чтоб не думалось...).

После этого останется только регулярку правильно написать. С этим помогу.
На связи в телеге @sivers
*

draff

  • Живу я здесь
  • 3943
  • 263 / 7
  • Ищу работу
Запихал скрипт в head
Забыл уточнить
перед закрывающим  тегом body в шаблон.
На рабочем хостинге прописать https:/ . Joomla выводить ссылки относительно корня сайта /moydomen.ru . А лучше посмотреть в консоли, там же я оставил вывод закоментированным или в коде страницы
поправил localhost на https://www.moydomen.ru - не заработал. Что-то не так делаю?
*

andragor

  • Осваиваюсь на форуме
  • 30
  • 5 / 0
После этого останется только регулярку правильно написать. С этим помогу.

Плагин сделал, спасибо!
Код
class plgSystemNoselflinking extends JPlugin
{
/**
* Class Constructor
* @param object $subject
* @param array $config
*/
public function __construct( & $subject, $config )
{
parent::__construct( $subject, $config );
$this->loadLanguage();
}

function onAfterRender(){
global $app;
        if($app->isSite()){
            $body = $app->getBody();
            /* Здесь регулярным выражением ищите в $body ссылки на текущую страницу и вырезаете их */
            $app->setBody($body);
        }}
}
А как регулярку сделать? Например, для адреса: https://www.site.ru/cat/alias

draff, спасибо за уточнение, а твой плагин меняет код или только отображения на странице?
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
А как регулярку сделать?
Добавьте в плагин функцию с содержимым:
Код
    public function onAfterRender(){
        global $app;
        if($app->isSite()){
            $body = $app->getBody();
            $uri = $_SERVER['REQUEST_URI'];
            if(strpos($body, $uri) !== false && preg_match_all('|<a[^>]*href="[^"]*'.$uri.'"[^>]*>(.*)</a>|isU', $body, $pregs, PREG_SET_ORDER)){
                foreach($pregs as $preg){
                    $body = str_replace($preg[0], $preg[1], $body);
                }
                $app->setBody($body);
            }
        }
    }
Если сразу не заработает - пишите. В этом случае надо будет делать отладку RE на вашем сайте, потому как мог ошибиться (тестить не на чем).
« Последнее редактирование: 18.03.2019, 13:35:49 от sivers »
На связи в телеге @sivers
*

ChaosHead

  • Гуру
  • 5124
  • 442 / 13
Пользы от таких ссылок нет: https://devaka.ru/articles/selfie-experiment
Вред если и есть, то незначительный: https://searchengines.guru/showpost.php?p=8975876&postcount=39 (в целом согласен с этим мнением, т.к. на мой взгляд логично, но как вес считают поисковики - знают только поисковики, а это просто догадки)

Если всё другое на сайте уже сделали, то может и эти 0,001% дадут какой-то эффект. Однако чуть уменьшится ответ сервера при работе плагина и это так-же даст какой-то обратный эффект на -0,001%. Кто победит - неизвестно ;D, но сеошники зарплату получат :D

P.S. вон у Яндекса ссылка на саму себя в логотипе на главной https://yandex.ru, ничё, живёт как-то ;)
« Последнее редактирование: 18.03.2019, 14:35:29 от ChaosHead »
*

draff

  • Живу я здесь
  • 3943
  • 263 / 7
  • Ищу работу
draff, спасибо за уточнение, а твой плагин меняет код или только отображения на странице?
Делает не кликабельным ссылку. Это не плагин, а JavaScript.
*

andragor

  • Осваиваюсь на форуме
  • 30
  • 5 / 0
Добавьте в плагин функцию с содержимым:
sivers, огромное спасибо за помощь!  *DRINK* Всё заработало с первого раза!  :D +1

ChaosHead, спасибо за полезные ссылки! Насчёт вреда/пользы верно подметил.  ^-^

draff, понятно. Тогда спасибо, но не совсем то. Нужно, чтобы a href из исходного кода тоже вырезался. Плагин как раз это и делает.  8)

Если sivers не против, могу выложить плагин для всеобщего пользования. Хотя его и самому сделать пара минут.
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
С чего мне быть против? Код и так выложен выше.
На связи в телеге @sivers
*

AlekVolsk

  • Гуру
  • 6774
  • 395 / 4
решение с плагином - вредный совет, любая дополнительная обработка уже готового рендера контента - это нагрузка, при нагрузке или на дешёвом хостинге это больно ударит в плане производительности

в Joomla подобный вопрос решается соответствующим переопределением шаблонов используемых расширений и добавлением условия вывода ссылок

ссылки внутри кастомного контента (материалы, html-модули) вырезаются вручную, их изначально не следовало делать - это глупость

Да, SEO-шник сказал, что ссылок со страницы на саму себя быть не должно.
SEO-шник ваш - извините - идиот, ибо на SEO ссылки на странице на саму себя давно уже никак не влияют
*

sivers

  • Давно я тут
  • 633
  • 63 / 0
Пара замечаний для тех, кто будет использовать этот плагин:
1. Регулярка заточена под теги <a></a>, в которых значение атрибута href взято в двойные кавычки.
2. Лучше использовать более оптимальный вариант кода (без цикла):
Код
    public function onAfterRender(){
        global $app;
        if($app->isSite()){
            $body = $app->getBody();
            $uri = $_SERVER['REQUEST_URI'];
            if(strpos($body, $uri)!== false && preg_match_all('|<a[^>]*href="[^"]*'.$uri.'"[^>]*>(.*)</a>|isU', $body, $pregs)){
                $body = str_replace($pregs[0], $pregs[1], $body);
                $app->setBody($body);
            }
        }
    }

И еще. Не забывайте, что это все-таки жирный костыль и что стоит прислушаться к советам ChaosHead и AlekVolsk - я разделяю их мнение и на своих сайтах подобными костылями стараюсь не пользоваться.
На связи в телеге @sivers
*

andragor

  • Осваиваюсь на форуме
  • 30
  • 5 / 0
AlekVolsk Спасибо за информацию!

Плагин всё-таки выложу. Вдруг кому-то пригодится такой вариант решения вопроса.

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

Удаление неиспользуемых материалов

Автор tom_jdev

Ответов: 5
Просмотров: 194
Последний ответ 21.06.2019, 09:25:43
от tom_jdev
Проблема с загрузкой async при валидации страниц

Автор Stasweb

Ответов: 46
Просмотров: 462
Последний ответ 06.06.2019, 14:20:33
от sivers
Сбилось форматирование страниц К2

Автор Foros

Ответов: 0
Просмотров: 52
Последний ответ 24.05.2019, 08:11:11
от Foros
Добавление страниц

Автор andrew1423

Ответов: 2
Просмотров: 165
Последний ответ 29.04.2019, 22:49:04
от andrew1423
Выводится код файла template.css в коде всех страниц, кроме главной

Автор Ramz707

Ответов: 3
Просмотров: 160
Последний ответ 24.04.2019, 10:11:43
от Ramz707