I'm using Wolf CMS, but I want to make it easier to include snippets.
At the moment one has to write this to include a snippet:
<?php $this->includeSnippet('scripts'); ?>
In here 'scripts' is the name of the snippet.
What I'd like to do is write a little piece of code that interprets this:
###scripts### as <?php $this->includeSnippet('scripts'); ?>
Cause the line of code is always the same, only the snippet name changes.
Would that be possible or am I asking the impossible here?
Thanks in advance
You could define a function for this:
function includeSnippetsFromList($snippets) {
foreach ($snippets as $snippet) {
$this->includeSnippet($snippet);
}
}
... and then call it like this:
$snippets = "snippet1,snippet2,scripts,specialSnippet,layoutSnippet";
// turn string to array of snippets and call function to include them:
includeSnippetsFromList(explode(",", $snippets));
The way you separate the snippets can of course be different.
If you want to have them embedded in a long text and wrapped like ###scripts###
, then you could use preg_match_all to extract them:
function includeSnippetsFromText($text) {
preg_match_all("/###(.*?)###/", $text, $matches);
foreach ($matches[1] as $snippet) {
$this->includeSnippet($snippet);
}
}
Use it like this:
$text =
"This is a text
that has snippets, like
###snippet1###
###snippet2###
###scripts###
but also these:
###specialSnippet###
###layoutSnippet###
This is the end of this text.";
includeSnippetsFromText($text);