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

This package is auto-updated.

Last update: 2025-05-23 11:08:27 UTC


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]);
}