Wie gesagt, ich würde das einfach mit einer eigens implementierten Shipping Methode machen.
PHP-Code:
// src/Isotope/Model/Shipping/MyShipping.php
namespace App\Isotope\Model\Shipping;
class MyShipping extends \Isotope\Model\Shipping\Flat
{
public function isAvailable()
{
if (!parent::isAvailable()) {
return false;
}
return $this->isAvailableDependingOnProductAttribute();
}
private function isAvailableDependingOnProductAttribute(): bool
{
foreach (Isotope::getCart()->getItems() as $item) {
// …
}
// …
}
}
PHP-Code:
// contao/config/config.php
use App\Isotope\Model\Shipping\MyShipping;
use Isotope\Model\Shipping;
Shipping::registerModelType('myshipping', MyShipping::class);