Binds arbitrary meta data to conditions and allows to resolve them for provided context.
Meta data and condition processed using a CSV file.
composer require maximaster/meta-bind
url starts?;url contains?;url containsOnce?;title;description;h1
/catalog;;color=red;Red Products;All red product we offer;Red Products
- 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.
starts
contains
containsOnce
equals
- everything else would resolve as false
<?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]);
}