PHPackages                             avxman/rel-nofollow - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. avxman/rel-nofollow

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

avxman/rel-nofollow
===================

The module on/off follow inside links in a post for laravel &gt;=8.0

1.0.2(4y ago)09MITPHP ^7.4|8.\*

Since Jan 7Compare

[ Source](https://github.com/avxman/rel-nofollow)[ Packagist](https://packagist.org/packages/avxman/rel-nofollow)[ Docs](https://github.com/avxman/rel-nofollow)[ RSS](/packages/avxman-rel-nofollow/feed)WikiDiscussions Synced today

READMEChangelog (3)Dependencies (1)Versions (4)Used By (0)

Модуль вкл./откл. индексацию внешних ссылок в контенте laravel &gt;= 8
======================================================================

[](#модуль-вклоткл-индексацию-внешних-ссылок-в-контенте-laravel--8)

#### Работа с индексацией внешних ссылок в контенте на сайте. Вывод и сохранение внешних ссылок.

[](#работа-с-индексацией-внешних-ссылок-в-контенте-на-сайте-вывод-и-сохранение-внешних-ссылок)

Установка модуля с помощью composer
-----------------------------------

[](#установка-модуля-с-помощью-composer)

```
composer require avxman/rel-nofollow
```

Настройка модуля
----------------

[](#настройка-модуля)

После установки модуля не забываем объязательно запустить команды artisan: `php artisan vendor:publish --tag="avxman-rel-nofollow-config"`, `php artisan vendor:publish --tag="avxman-rel-nofollow-migrate"`и после `php artisan migrate`. Это установит таблицу ссылок для индексации.

### Команды artisan

[](#команды-artisan)

- Выгружаем все файлы

```
php artisan vendor:publish --tag="avxman-rel-nofollow-all"
```

- Выгружаем миграционные файлы

```
php artisan vendor:publish --tag="avxman-rel-nofollow-migrate"
```

- Выгружаем файлы моделек

```
php artisan vendor:publish --tag="avxman-rel-nofollow-model"
```

- Выгружаем конфигурационные файлы

```
php artisan vendor:publish --tag="avxman-rel-nofollow-config"
```

Методы
------

[](#методы)

### Дополнительные (очерёдность вызова метода - первичная)

[](#дополнительные-очерёдность-вызова-метода---первичная)

- **`reset()`** - Сброс параметров класса (очищаем свойства класса)
- **`setEnabled()`** - Вкл./Откл. закрытия от индексации ссылок
- **`setModel()`** - Указываем модель (таблица), где хранятся данные о ссылках для индексации
- **`setExceptModel()`** - Перечисляем модели, где поиск ссылок в тексте не будет учитываться
- **`setPattern()`** - Перечисляем значения в свойстве rel="(.\*)" в теге &lt;a&gt;
- **`setExceptDomain()`** - Перечисляем домены без протокола, которые не будут учитываться при поиске в тексте
- **`setFields()`** - Перечисляем ключи, где производится поиск текста

### Вывод (очерёдность вызова метода - последняя)

[](#вывод-очерёдность-вызова-метода---последняя)

- **`getOne()`** - Открываем/Закрываем индексацию для одиночной модели
- **`getMany()`** - Открываем/Закрываем индексацию для множественных моделей
- **`lazyMany()`** - Открываем/Закрываем индексацию для множественных моделей при использовании ленивой загрузки
- **`getString()`** - Результат без привязки модели или моделей - обработка напрямую
- **`errorMessage()`** - Получить список ошибок
- **`saveOne()`** - Сохранение ссылок в базу данных

Использование метода `saveOne(Model $model) : bool`
---------------------------------------------------

[](#использование-метода-saveonemodel-model--bool)

Метод может наследовать `Дополнительные методы (очерёдность первичная)`перед вызовом saveOne()
К примеру:

```
// Вариант 1
\Avxman\NoFollow\Facades\NoFollowFacade::saveOne($model::find($model_id));
// Вариант 2
\Avxman\NoFollow\Facades\NoFollowFacade::saveOne($model::first());
// Вариатн 3
$model::lazyById(100)->each(function ($model, $index){
    // Сохраняем отсутствующие ссылки из текста
    // взяты из любой записи (блог, товар, категория и т.д.)
    if(\Avxman\NoFollow\Facades\NoFollowFacade::reset()->saveOne($model)) {
        // После сохранение, запускаем обновление индексации для текущей записи
        // reset(true) - сброс старого списка ссылок для индексации, так как
        // в тексте может появится новая ссылки
        \Avxman\NoFollow\Facades\NoFollowFacade::reset(true)->getOne($model);
    }
});
// Вариант 4
\Avxman\NoFollow\Facades\NoFollowFacade::setFields(['desc', 'title'])->saveOne($model_id);
// Вариант 5
// Можно получать текст из полей взяты из связей
// В модели(ях), где получаем текст для обработки, нужно указать соответствующие связи
// К примеру, в модели \Models\User добавляем связь public function comment(){}
// Вызываем код
// Сохраняем отсутствующие ссылки из текста
if(\Avxman\NoFollow\Facades\NoFollowFacade::setFields(['desc', 'comment.title'])->saveOne($model_id)){
    // Обновляем индексацию в полях ('desc', 'comment.title')
    \Avxman\NoFollow\Facades\NoFollowFacade::setFields(['desc', 'comment.title'])->getOne($model);
}
// Вариант 6
$model::lazyById(100)->each(function ($mod, $index){
    if(NoFollowFacade::reset()->saveOne($mod)) {
        NoFollowFacade::reset(true)->getOne($mod);
    }
});

```

Примеры получения результатов
-----------------------------

[](#примеры-получения-результатов)

#### Вызов в controllers

[](#вызов-в-controllers)

```
use Models\Users;
use Avxman\NoFollow\Facades\NoFollowFacade;

// Очерёдность первичная
NoFollowFacade::reset();
NoFollowFacade::setEnabled(true);
NoFollowFacade::setModel(\Models\Users::class);
NoFollowFacade::setExceptModel([\Models\Users::class]);
NoFollowFacade::setPattern(['nofollow', 'noreferrer']);
NoFollowFacade::setExceptDomain(['text.com', 'test.online']);
NoFollowFacade::setFields(['body', 'name', 'comment.body']);
// Очередность последняя
NoFollowFacade::getOne(Users::find(1));
NoFollowFacade::getMany(Users::limit(50)->get());
NoFollowFacade::lazyMany(Users::class);
NoFollowFacade::getString('либо-какой текст');
NoFollowFacade::errorMessage();

// Также можно вызывать одновременно несколько первичных методов
// и комбинировать методы с первичными и последним
NoFollowFacade::reset()->setExceptDomain(['test.com']);
NoFollowFacade::getOne(Users::first());
// ИЛИ
NoFollowFacade::reset()->setExceptDomain(['test.com'])->getOne(Users::first());

```

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~23 days

Total

3

Last Release

1591d ago

PHP version history (2 changes)1.0.1PHP 8.\*

1.0.2PHP ^7.4|8.\*

### Community

Maintainers

![](https://www.gravatar.com/avatar/21d314358577f4f26cd65eb711363b98327a7ba7e8b924ccecd735f0c9509c6e?d=identicon)[avxman](/maintainers/avxman)

### Embed Badge

![Health badge](/badges/avxman-rel-nofollow/health.svg)

```
[![Health](https://phpackages.com/badges/avxman-rel-nofollow/health.svg)](https://phpackages.com/packages/avxman-rel-nofollow)
```

###  Alternatives

[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

17878.9k](/packages/markwalet-nova-modal-response)[crumbls/layup

A visual page builder plugin for Filament 5 — Divi-style grid layouts with extensible widgets.

592.7k2](/packages/crumbls-layup)[team-nifty-gmbh/tall-datatables

Server-side rendered datatables for Laravel and Livewire

1320.9k4](/packages/team-nifty-gmbh-tall-datatables)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.4k](/packages/tomshaw-electricgrid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
