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

Filament Easy Footer Laravel Package

devonab/filament-easy-footer

Add a customizable footer to your Filament admin with minimal setup. Configure position, custom text, logo + link, extra links, top border, optional GitHub version and page load time, enable/disable globally, and hide it on specific pages.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Install the package:
    composer require devonab/filament-easy-footer:^2.0
    
  2. Register the plugin in your AppServiceProvider or Filament panel provider:
    use Devonab\FilamentEasyFooter\EasyFooterPlugin;
    
    public function register(): void
    {
        Filament::serving(function () {
            FilamentPanel::register(EasyFooterPlugin::make());
        });
    }
    
  3. Publish config (if customizing defaults):
    php artisan vendor:publish --tag="filament-easy-footer-config"
    

First Use Case

Add a basic footer with your app name (from .env or config) to the default panels::footer position:

EasyFooterPlugin::make()
    ->footerEnabled() // Optional (enabled by default)

Implementation Patterns

Common Workflows

  1. Custom Footer Position Use render hooks for flexible placement:

    EasyFooterPlugin::make()
        ->withFooterPosition('sidebar') // Options: 'footer', 'sidebar', 'sidebar.footer'
    
  2. Dynamic Content Combine static and dynamic elements (e.g., load time + GitHub version):

    EasyFooterPlugin::make()
        ->withLoadTime('Page loaded in ')
        ->withGithub(showLogo: true, showUrl: true)
    
  3. Conditional Rendering Hide from specific pages (e.g., auth pages):

    EasyFooterPlugin::make()
        ->hiddenFromPagesEnabled()
        ->hiddenFromPages(['admin/login', 'admin/forgot-password'])
    
  4. Theming Integration Extend your custom theme by sourcing the plugin’s views:

    /* theme.css */
    @source '../../../../vendor/devonab/filament-easy-footer/resources/views/**/*';
    

Integration Tips

  • Logo Customization: Use withLogo() for branded footers, passing null for optional parameters (e.g., link/text).
  • Link Management: Add up to 3 links via withLinks(), structured as ['title' => '...', 'url' => '...'].
  • HTMLString Support: Use Livewire\HtmlString for rich text in withSentence() (e.g., <strong>Custom</strong> Footer).

Gotchas and Tips

Pitfalls

  1. Missing Theme Configuration

    • Issue: Footer styles may not apply if the custom theme isn’t configured.
    • Fix: Ensure @source directive is added to theme.css and run npm run build.
  2. GitHub Token Requirements

    • Issue: Private repos require a GitHub token with read-only permissions on "Contents".
    • Fix: Publish config and set github.token in config/filament-easy-footer.php.
  3. Render Hook Conflicts

    • Issue: Custom sidebar positions may overlap with Filament’s default sidebar content.
    • Fix: Test positions (sidebar vs. sidebar.footer) and adjust CSS if needed.
  4. Caching Quirks

    • Issue: GitHub version cache may stale if cache_ttl isn’t updated.
    • Fix: Clear cache (php artisan cache:clear) or adjust github.cache_ttl in config.

Debugging

  • Inspect Render Hooks: Use Filament’s renderHooks to verify footer placement:
    Filament::registerRenderHook('panels::footer', fn () => view('filament-easy-footer::footer'));
    
  • Check Published Views: Override default views by publishing them:
    php artisan vendor:publish --tag="filament-easy-footer-views"
    
    Then modify resources/views/vendor/filament-easy-footer/footer.blade.php.

Extension Points

  1. Custom Views Extend the footer by copying the published view and adding your own sections (e.g., legal disclaimers).

  2. Dynamic Data Fetch real-time data (e.g., server stats) via a custom withSentence() closure:

    ->withSentence(fn () => "Users: " . User::count())
    
  3. Conditional Logic Use Filament’s authorize() or middleware to toggle the footer dynamically:

    ->footerEnabled(fn () => auth()->check())
    
  4. Multi-Tenant Support Override config per tenant by binding the config to a service provider:

    config(['filament-easy-footer.app_name' => tenant()->name]);
    
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.
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui