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.
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:
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.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.)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.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.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.
addon:install with the wrong dot notation produces confusing "addon not found" errors. Read composer.json → extra.visiosoft/extra.streams for the canonical slug.view:clear, cache:clear, or the theme's compiled assets — not your code. Make cache clearing part of every deploy script touching this provider.addon:reinstall --force in dev, and a fresh DB in CI rather than incremental migrations.php artisan config:cache in production can freeze the provider choice — clear and rebuild config during deploys that flip it.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.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.How can I help you explore Laravel packages today?