Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ink Laravel Package

relaticle/ink

Filament-native content publishing for Laravel: Eloquent models, full admin for posts/categories, SEO + JSON-LD, RSS, search, Blade UI components, and 13 MCP tools for AI agents. Headless by default with optional public blog routes.

View on GitHub
Deep Wiki
Context7

title: Search description: Portable search across blog posts with a config-driven backend hook. navigation: icon: i-lucide-search

The package ships a Post::search($term) query scope and a BlogSearch Livewire component.

Default behavior

Post::search($term) does a LIKE search across title, excerpt, and content. Works on every database driver out of the box.

$posts = Post::query()
    ->published()
    ->search($request->query('q', ''))
    ->latest('published_at')
    ->paginate(12);

Empty / whitespace-only terms are no-ops — the scope leaves the query unchanged. LIKE wildcards in the term are escaped.

Override the backend

Set search.callback in config/ink.php to use Postgres FTS, MySQL FULLTEXT, Scout, Meilisearch, or anything else:

'search' => [
    'callback' => function (\Illuminate\Database\Eloquent\Builder $query, string $term): void {
        $query->whereRaw(
            "to_tsvector('english', title || ' ' || excerpt || ' ' || content) @@ plainto_tsquery('english', ?)",
            [$term]
        );
    },
],

Whatever the callback applies becomes the search strategy. Empty terms still short-circuit before the callback fires.

Livewire component

Use <livewire:blog::search /> anywhere. It reads ?q= from the URL, debounces 400ms, and renders up to 20 matches with an empty state.

To restyle, publish the view:

php artisan vendor:publish --tag=ink-views

Then edit resources/views/vendor/ink/livewire/blog-search.blade.php.

SEO

When the shipped /blog route handles ?q=, the package emits <meta name="robots" content="noindex,follow"> on the search result page. Search queries should not be indexed as separate URLs.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity