Foren / National / Russian / Тех. поддержка / Как получит значение системной переменной $env ?

Виктор
#1 13. September 2020, 07:30

Как получит значение системной переменной $env (нужен $env['location']) в файле шаблона шаблон.rc.php?

в файлах модулей module.list.php прописано $env['location'] = 'module.list' и тд;

или вернее вопрос будет правильней как сделать переменную $env "видимой" в файле шаблона шаблон.rc.php?


Dieser Beitrag wurde von Виктор (am 13. September 2020, 07:39, vor 3 Jahre) bearbeitet
Roffun
#2 13. September 2020, 17:01

В своём расширении (модуле/плагине) нужно её объявить в зависимости от того где нужна видимость.

$env['location'] = 'mymodule.mylocation'

 

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
jCube Group
#3 13. September 2020, 17:29

global $env; 
это до кода где нужно ее применять (один раз на фаил).

Если это не поможет значит ее там нет, возможно она обьявлена выше этого файла, в такос случаи ищите другой путь, попробуйте print_r($_REQUEST) или $_GET посостите что есть что вам может помочь.  но на сколько я помню в шаблоне можно получить эту переменную.

Сделал группу в телеге https://t.me/Cotonti_help если что помогу с вопросами.
Виктор
#4 13. September 2020, 17:36
#45076 Roffun:

В своём расширении (модуле/плагине) нужно её объявить в зависимости от того где нужна видимость.

$env['location'] = 'mymodule.mylocation'

 

ну так и есть,  переменные обьявлены в модулях и плагинах для каждого свое значение, для разделов modname.main, modname.list, modname.test и тд каждая "локация" своя, и это очень удобно

Здесь же  задача выводить дополнительные скрипты js, css в зависимости где находимся, и так скажем хотелось бы чтобы редактировать все это в одном файле шаблона .rc.php, но $env не видна в этом файле, возможно лучше будет сделать небольшой плагин по хуках footer и header

Додано 2 хвилини потому:

#45077 jCube Group:

global $env; 
это до кода где нужно ее применять (один раз на фаил).

Если это не поможет значит ее там нет, возможно она обьявлена выше этого файла, в такос случаи ищите другой путь, попробуйте print_r($_REQUEST) или $_GET посостите что есть что вам может помочь.  но на сколько я помню в шаблоне можно получить эту переменную.

ее там нет однозначно, print_r($_REQUEST) или $_GET не то они возвращают сам модуль

по хуку header.tags $env видна

по footer.tags тоже видна, проще сделать плагин

 


Dieser Beitrag wurde von Виктор (am 13. September 2020, 18:18, vor 3 Jahre) bearbeitet
Roffun
#5 13. September 2020, 22:19

Дело в том что в шаблон.rc.php переменная $env есть, но она пуста. Если нужно именно в этом месте получить значения, то можно взять из переменной $_GET значения 'e', 'c', 'al', 'id' и разобрать их, например так:

$myEnv = array_filter(array(
   'e' => isset($_GET['e']) ? cot_import('e', 'G', 'ALP') : false,
   'c' => isset($_GET['c']) ? cot_import('c', 'G', 'TXT') : false,
   'al' => isset($_GET['al']) ? cot_import('al', 'G', 'TXT') : false,
   'id' => isset($_GET['id']) ? cot_import('id', 'G', 'INT') : false
), function ($v) {
    return $v !== false;
});

if (isset($myEnv['id']) || $myEnv['al']) {
    $myEnv['location'] = 'main';
} elseif (!empty($myEnv['c'])) {
    $myEnv['location'] = 'list';
} elseif (!empty($myEnv['e'])) {
    $myEnv['location'] = $myEnv['e'];
} else {
    $myEnv['location'] = 'home';
}

Теперь в переменной $myEnv будут нужные значения в зависимости от локации. Условий может быть и больше. Или же сделать плагин на нужный хук в котором переменная уже видна.

Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts

Dieser Beitrag wurde von Roffun (am 14. September 2020, 00:01, vor 3 Jahre) bearbeitet