В мои дни перед Laravel (5) У меня была система, которая заменила местозаполнитель скриптом PHP с тем же именем, что и заполнитель. Эти «плагины» должны были добавить функциональность, просто добавив в текст код плагина (отредактированный моей собственной CMS).Laravel 5 заменить [string] кодом (php)/include
Позвольте мне дать вам пример:
Пользователь поддерживает страницу в CMS. На каждой странице можно выбрать несколько изображений в поле «галерея» для этой страницы. Они не добавляются в текст, поле изображений отделено от содержимого. Эти текстовые поля содержат массив (объект json) с изображениями после сохранения.
Если он хочет использовать изображения на веб-странице, он должен добавить «плагин», чтобы показать изображения, добавив [галерею] в текст в желаемой позиции.
Когда страница показана [галерея] заменена скриптом PHP (gallery.plugin.php), который берет массив изображений и показывает их красиво отформатированные и настроенные с помощью сценария галереи лайтбоксов, чтобы просматривать их в большем размере ,
Пользователи не должны беспокоиться о макете и функциональности галереи и могут размещать их в любом месте, в котором они находятся.
То, как я сделал это по-старому: (Старый, никогда не обновленный код, работал безотказно)
public function decorateContent($content)
{
if ($_parts = preg_split('/(\[.*?\])/', $content, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY))
{
foreach ($_parts as $key => $value)
{
if (strstr($value, "[") and strstr($value, "]"))
{
$_plugin = explode(":", str_replace(array("[", "]"), "", $value));
if (file_exists("templates/plugins/" . str_replace("_", "/", trim($_plugin[0])) . ".plugin.php"))
{
$cntnt .= $this->get_include_content("templates/plugins/" . str_replace("_", "/", trim($_plugin[0])) . ".plugin.php", $_plugin);
}
}
else
$cntnt .= trim($value);
}
}
else
{
$cntnt = trim($cntnt);
}
return $cntnt;
}
function get_include_content($filename, $_plugin)
{
global $db, $Website, $parameter;
if (is_file($filename))
{
ob_start();
include($filename);
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
return false;
}
С этим я легко мог бы добавить все функции я хотел, [галерея], [form_contact ] (_ преобразуется в косую черту для пути: form/contact.php) и т. д. Просто создайте скрипт в каталоге плагина с тем же именем, что и плагин-заполнитель в тексте.
Помимо ссылок на перевод строк некоторые плагины могут быть снабжены переменными, используя: в имени плагина, например. [intro: 3] В этом примере 3 - количество интроблоков (div с содержимым), которые показаны в этом конкретном скрипте.
Где начать в Laravel 5
Я хотел бы добавить эту функцию снова в моих Laravel 5 проектов, но я хотел бы сделать это правильно на этот раз. Есть ли какие-либо предпочтительные способы сделать это прилично?
Этот вопрос слишком локализован по моему мнению. – itachi
«Есть ли какие-нибудь предпочтительные способы сделать это прилично?» поставил бы ваш вопрос закрытым/удержанием –