Weave 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

Sahibinden Style Provider Extension Laravel Package

visiosoft/sahibinden_style_provider-extension

A Laravel/PHP extension for Visiosoft that adds Sahibinden-style classifieds provider support, enabling marketplace-style listing cards, search results, and browsing with minimal configuration.

View on GitHub
Deep Wiki
Context7

Getting Started

This is a Visiosoft/Streams Platform addon, not a standalone Laravel package. It is meant to be dropped into an Openclassify/Visiosoft installation (Laravel + visiosoft/streams-platform + the ads/classifieds modules) and provides an alternate "sahibinden-style" listing provider — i.e. a presentation layer for ads/categories modelled on sahibinden.com.

Minimal steps:

  1. Confirm your baseline first. You need a working Visiosoft/Openclassify app on a Laravel version compatible with a September-2023 addon (expect Laravel 8/9, PHP 8.0/8.1). Do not attempt this on a fresh Laravel 10/11 skeleton — there is nothing to attach to.
  2. Install via Composer into that app:
    composer require visiosoft/sahibinden_style_provider-extension
    
    Because the package has zero dependents and a single 2023 tag, pin it explicitly (:^1.0 or the exact tag) and commit composer.lock.
  3. Register/install the addon using the Streams CLI rather than relying on auto-discovery:
    php artisan addon:install visiosoft.extension.sahibinden_style_provider
    
    (Verify the exact addon slug from the package's composer.json extra block — the vendor/name here does not necessarily match the dot-notation slug.)
  4. Where to look first, in this order:
    • src/*ServiceProvider.php — what views, assets, config, and routes it registers.
    • config/ — the provider key you must set to activate it.
    • resources/views/ — the actual sahibinden-style Blade templates; this is the deliverable.
    • migrations/ — any Streams fields/assignments it adds.
    • resources/lang/ — tr/en strings, a hint at intended audience.
  5. First use case: switch the listing provider for the ads/category module from the default to sahibinden (via the admin addon/settings screen or the module config array), clear caches, and load a category page with at least a few seeded ads. Success = the category/listing view renders with the sahibinden layout (price, location, date, gallery thumbnails) instead of the default grid.

Implementation Patterns

Provider swapping, not forking. The idiomatic workflow is: keep the default provider installed, activate sahibinden per section or globally in config, and compare output side by side. Treat it as a swappable renderer, so you can fall back instantly if a page breaks.

View override layer. Never edit resources/views/ inside the vendor directory. Streams resolves views through a namespace; override them from your app by publishing or mirroring paths (typically into resources/views/vendor/<namespace>/... or the theme's override directory). Establish this override directory in your first commit so upgrades via composer update are safe.

Asset registration. Providers of this type usually push CSS/JS through the service provider's register/boot using Asset::add(...) or a resources/assets manifest. If styling looks broken, check whether assets were published (php artisan vendor:publish) and whether your theme's layout includes the provider's asset stack.

Compose with existing modules rather than extending the provider. Add fields, filters, or badges through the Streams ads module (fields + assignments) and consume them in your overridden Blade partials. This keeps business logic in your app's modules and leaves the provider as pure presentation — which is the only sane way to maintain a 0-star dependency.

Typical day-to-day loop:

php artisan view:clear && php artisan cache:clear
php artisan addon:reinstall visiosoft.extension.sahibinden_style_provider --force  # if migrations changed

Then reload a seeded category page and diff against the default provider.

Integration tip — feature-flag it. Wrap the provider switch behind an env/config flag per environment so staging can run sahibinden while production stays on the stable default until you have signed off on every listing page (category, ad detail, search results, empty states).

Testing. There is no meaningful upstream test suite to rely on for a package like this. Write your own smoke tests that hit /, a category URL, and an ad detail URL, asserting HTTP 200 and the presence of price/location markup. That is your real regression net.

Gotchas and Tips

  • Staleness is the headline risk. Last release 2023-09-05, zero stars, zero dependents. Assume no upstream maintenance: no Laravel 10/11 compatibility, no PHP 8.2+ guarantees, no CVE triage. Budget time to read the source end-to-end before committing to it, and consider vendoring/forking it internally.
  • Install failures are usually slug mismatches. The Composer package name and the Streams addon slug are different namespaces. addon:install with the wrong dot notation produces confusing "addon not found" errors. Read composer.json → extra.visiosoft/extra.streams for the canonical slug.
  • Asset/view cache masks every change. If edits appear ignored, it is view:clear, cache:clear, or the theme's compiled assets — not your code. Make cache clearing part of every deploy script touching this provider.
  • Migrations are Streams-shaped. Streams field/assignment migrations behave differently from plain Laravel migrations; ordering matters and partial installs leave orphaned fields. Use addon:reinstall --force in dev, and a fresh DB in CI rather than incremental migrations.
  • Config caching. Providers often resolve their active state from a config array or DB setting. php artisan config:cache in production can freeze the provider choice — clear and rebuild config during deploys that flip it.
  • Debugging path: php artisan tinker into the Streams repository to confirm which provider is active for a section, then dd() in your override view if it is not being hit. If your override is silently ignored, the path/namespace is wrong — not the provider.
  • Extension points are the views and the config key, not the PHP. Do not monkey-patch the service provider or bind over its classes; small internal refactors in a future release will break you with no changelog to warn you. Overrides live in templates and config.
  • Localization: expect tr strings by default. If you are shipping for another locale, audit resources/lang early — missing translation keys in listing labels are a common low-effort bug in these addons.
  • Vendor it if you ship it. With zero dependents there is no community backstop. Fork into your own namespace, pin it as a VCS/path repository, and you gain the ability to patch PHP 8.3 deprecations and security fixes yourself.
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.
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox