maximaster / meta-bind
Binds arbitrary meta data to conditions and allows to resolve them for provided input.
1.0.0
2025-05-23 11:06 UTC
Requires (Dev)
- kahlan/kahlan: ^6.0
- phpstan/phpstan: ^2.1
- symplify/easy-coding-standard: ^12.5
README
Binds arbitrary meta data to conditions and allows to resolve them for provided context.
Meta data and condition processed using a CSV file.
Install
composer require maximaster/meta-bind
Prepare your CSV file
url starts?;url contains?;url containsOnce?;title;description;h1
/catalog;;color=red;Red Products;All red product we offer;Red Products
Condition column name format
- variable name (any name without spaces which you will later pass into
firstFit
method) - space
- condition name (see below)
- ends with
?
Columns that are not end with ?
treats as meta data values.
Supported conditions
starts
contains
containsOnce
equals
- everything else would resolve as false
Use it (example for Bitrix CMS)
<?php $csv = new SplFileObject(__DIR__ . '/seo.csv'); $storage = MetaStorage::fromCsv($csv, separator: ';'); $meta = $storage->firstFit([ 'url' => $_SERVER['REQUEST_URI'], 'url.path' => parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), ]); if ($meta === null) { return; } $supportedMetas = [ 'h1', 'title', 'robots', 'keywords', 'description', 'canonical', ]; global $APPLICATION; foreach ($supportedMetas as $supportedMeta) { if (array_key_exists($supportedMeta, $meta) === false) { continue; } // Optionally, if your meta data has templates, process // {$meta[$supportedMeta]} here to replace supported placeholders. $APPLICATION->SetPageProperty($supportedMeta, $meta[$supportedMeta]); }