Доступ к странице OctoberCMS в коде?

У меня есть Static Page в OctoberCMS с именем General, которая имеет множество настроек для всего сайта, включая номер телефона и адрес. Можно ли получить доступ к этой странице в коде, чтобы прочитать эти настройки из своего ViewBag?

ОБНОВИТЬ: был создан плагин со следующим, где свойства, такие как twitter_username например, теперь можно получить доступ к шаблонам с {{ general('twitter_username') }}:

use System\Classes\PluginBase;
use RainLab\Pages\Classes\Page;
use Cms\Classes\Theme;

class Plugin extends PluginBase
{
private static $generalViewBag = null;

public function registerMarkupTags()
{
return [
'functions' => [
'general' => function($var) {
if (self::$generalViewBag === null) {
self::$generalViewBag = Page::load(Theme::getActiveTheme(), 'general')
->getViewBag();
}

return self::$generalViewBag->$var;
},
],
];
}
}

twitter_username Поле формы было добавлено на страницу General в бэкэнде с помощью отдельного плагина:

use System\Classes\PluginBase;
use Event;

class Plugin extends PluginBase
{
public function boot()
{
Event::listen('backend.form.extendFields', function($widget) {
if (! $widget->getController() instanceof \RainLab\Pages\Controllers\Index) {
return;
}
if (! $widget->model instanceof \RainLab\Pages\Classes\Page) {
return;
}

switch ($widget->model->fileName) {
case 'general.htm':
$widget->addFields([
'viewBag[twitter_username]' => [
'label' => 'Twitter username',
'type' => 'text',
'tab' => 'Social Media',
],
], 'primary');
break;
}
});
}
}

0

Решение

да, вы можете сделать это на самом деле вам нужно использовать этот код в методе жизненного цикла страницы

В блок кода страницы Вы можете использовать что-то вроде этого ИЛИ ЖЕ где-нибудь еще

use RainLab\Pages\Classes\Page as StaticPage;

function onStart() {
$pageName = 'static-test';
$staticPage = StaticPage::load($this->controller->getTheme(), $pageName);
dd($staticPage->viewBag);
}

дайте мне знать, если вы найдете какие-либо проблемы

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]