Kohandatud pluginad
Kohandatud plugin on PHP klass, mis rakendab TailwindPHP\Plugin\PluginInterface. See saab PluginAPI eksemplari ja kasutab seda staatiliste ning funktsionaalsete utiliitide, komponentide ja variantide registreerimiseks. Kui plugin on registreeritud käsuga registerPlugin(), leiab @plugin direktiiv selle nime järgi üles — sama mehhanismi kasutavad sisseehitatud tüpograafia- ja vormipluginad.
PluginInterface
Rakendage kolm meetodit:
namespace TailwindPHP\Plugin;
interface PluginInterface
{
public function getName(): string;
public function __invoke(PluginAPI $api, array $options = []): void;
public function getThemeExtensions(array $options = []): array;
}
getName()tagastab identifikaatori, mida kasutatakse@plugin "..."-s.__invoke()käivitab plugina ja registreerib kõik$apikaudu. Massiiv$optionssisaldab väärtusi ploki@pluginCSS kaudu.getThemeExtensions()tagastab teemaruumnimed, mis liidetakse enne utiliitide genereerimist (kui neid pole, tagastage[]).
Näide
use TailwindPHP\Plugin\PluginInterface;
use TailwindPHP\Plugin\PluginAPI;
class MyCustomPlugin implements PluginInterface
{
public function getName(): string
{
return 'my-custom-plugin';
}
public function __invoke(PluginAPI $api, array $options = []): void
{
// Static utilities
$api->addUtilities([
'.btn' => [
'padding' => '0.5rem 1rem',
'border-radius' => '0.25rem',
'font-weight' => '600',
],
'.btn-primary' => [
'background-color' => 'blue',
'color' => 'white',
],
]);
// Functional utilities (generates .gutter-sm, .gutter-md, .gutter-lg)
$api->matchUtilities(
[
'gutter' => fn ($value) => ['padding-inline' => $value],
],
['values' => ['sm' => '1rem', 'md' => '2rem', 'lg' => '3rem']]
);
// Component classes (sorted into the components layer)
$api->addComponents([
'.card' => [
'background-color' => 'white',
'border-radius' => '0.5rem',
'padding' => '1rem',
],
]);
// Custom variant (see the note below the API reference)
$api->addVariant('hocus', '&:hover, &:focus');
// Read a theme value
$primary = $api->theme('colors.blue.500', '#3b82f6');
}
public function getThemeExtensions(array $options = []): array
{
return []; // Return theme additions if needed
}
}
PluginAPI viide
API peegeldab TailwindCSS plugina API-t:
| Meetod | Signatuur | Eesmärk |
|---|---|---|
addBase |
addBase(array $css): void |
Lisab baaskihi stiilid. |
addUtilities |
addUtilities(array $utilities, array $options = []): void |
Registreerib selektoriga seotud staatilised utiliidiklassid. |
matchUtilities |
matchUtilities(array $utilities, array $options = []): void |
Registreerib funktsionaalsed utiliidid; $options['values'] annab väärtuste kaardi, $options['supportsNegativeValues'] lubab negatiivsed väärtused. |
addComponents |
addComponents(array $components, array $options = []): void |
Registreerib komponendiklassid (komponentide kiht). |
matchComponents |
matchComponents(array $components, array $options = []): void |
Registreerib väärtuste kaardiga funktsionaalsed komponendid. |
addVariant |
addVariant(string $name, string|array $variant): void |
Registreerib selektorist staatilise variandi. |
matchVariant |
matchVariant(string $name, callable $callback, array $options = []): void |
Registreerib funktsionaalse variandi; $options['values'] annab väärtuste kaardi. |
theme |
theme(string $path, mixed $defaultValue = null): mixed |
Loeb teemaväärtuse punktidega eraldatud tee järgi (e.g. colors.blue.500). |
config |
config(?string $path = null, mixed $defaultValue = null): mixed |
Loeb konfiguratsiooniväärtuse punktidega eraldatud tee järgi või kogu konfiguratsiooni, kui $path on null. |
prefix |
prefix(string $className): string |
Rakendab klassinimele seadistatud prefiksi. |
Tagasiheitele matchUtilities, matchComponents ja matchVariant antakse väärtus ning teise argumendina massiiv, mis sisaldab võtit modifier.
Valige utiliitide nimed, mida põhituum Tailwind juba ei kasuta. Kui plugina utiliidil on sama nimi kui põhituuma utiliidil (näiteks tab-*, mida põhituum Tailwind kasutab väärtuse tab-size jaoks alates versioonist v4.3), satuvad mõlemad deklaratsioonid samasse reeglisse ja põhituuma oma tuleb viimasena, seega jääb peale: plugina tab-4 vastendamine väärtusele 7 annab ikka tulemuseks tab-size: 4.
Teadaolev probleem:
addVariant()abil registreeritud variandid jamatchVariant()registreeritavad väärtuspõhised variandid ei rakendu praeguses versioonis. Ülaltoodud näitehocus:flexkompileeritakse kujule.hocus\:flex { display: flex; }ilma:hover/:focusselektorita (#10). Kuni see pole parandatud, määratlege variant failis CSS, kasutades@custom-variant; see toimib:@custom-variant hocus (&:hover, &:focus);.
Registreerimine ja kasutamine
Registreerige plugina eksemplar ja viidake sellele seejärel getName() nimest:
use TailwindPHP\tw;
use function TailwindPHP\registerPlugin;
registerPlugin(new MyCustomPlugin());
$css = tw::generate(
'<div class="btn btn-primary card gutter-md">…</div>',
'@plugin "my-custom-plugin"; @import "tailwindcss/utilities.css";'
);
Vaadake lehelt Pluginad teavet direktiivi @plugin kohta ja lehelt Teema väärtuste kohta, mida $api->theme() kaudu kasutatakse.