Форум русской поддержки Joomla!® CMS
03.12.2016, 04:26:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Передать переменную в переопределение шаблона

 (Прочитано 561 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Yastroitel
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 112



« : 20.01.2016, 16:37:42 »

Добрый день!

Предположим в файле index.php я генерирую некую переменную и называю ее например $some

Как мне вызвать эту переменную внутри переопределения шаблона?

Ну то есть - я пробую вызвать - а она не вызывается:)
Очевидно я что-то не понимаю в областях видимости или нечто подобного

Спасибо!
Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #1 : 20.01.2016, 16:56:18 »

Тут технический форум, поэтому вам лучше сразу привести данные: что, в каких файлах и какие действия пытались совершать. А так, я могу только спросить, почему вы решили генерировать эту переменную именно в index.php?
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #2 : 20.01.2016, 17:11:29 »

а еще можно спросить - в каком именно index.php вы ее определяете? и шаблон чего именно вы переопределяете? и еще много вопросов можно задать Azn без правильно заданного вопроса тяжело что-то советовать...
Записан
Yastroitel
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 112



« Ответ #3 : 20.01.2016, 17:44:30 »

Пардон:)

Туплю

Рассказываю план действий целиком

Есть основной index.php шаблона - тот который лежит в корне шаблона

В нем я считываю параметр заданный в админке примерно так

Код:
if ($this->params->get('mainColor')) $maincolor =" ".$this->params->get('mainColor');

Таким образом у меня получается параметр $maincolor - который я потом планировал подставлять в разных местах в стили CSS - для наглядности и удобства (может зря я так кстати?)

После чего - я переопределяю шаблон com_content - и иду править default.php в com_content\featured

Просто для тестирования беру фрагмент, который выводит заголовок страницы и подставляю свою переменную

Но она не появляется.

Причем само переопределение проходит верно - так как я удалил предыдущие стили и они исчезли

Вот фрагмент вывода

Код:
<div>
<h1<? if ($maincolor) echo " class=\"".$maincolor."\"";?>>
<?php echo $this->escape($this->params->get('page_heading')); ?>
</h1>
</div>
Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #4 : 20.01.2016, 18:18:44 »

Переопределенный файл вызывается в его родном расширении (в данном случае - com_content), поэтому нужно получить доступ к объекту JTemplate для работы с ним ($this здесь уже совсем другой объект).
Код
$params=JFactory::getApplication()->getTemplate(true)->params;
$test=$params->get('test');
 
« Последнее редактирование: 20.01.2016, 18:33:02 от robert » Записан
Yastroitel
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 112



« Ответ #5 : 20.01.2016, 18:37:02 »

Спасибо за ответ!

Так то есть я не прав - сохраняя параметры из объектов в переменные заранее?

И получается теперь мне нужно получать доступ к объекту Jtemplate всегда - в любом переопределении?

Это же масло масляное?
Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #6 : 20.01.2016, 19:42:21 »

Так то есть я не прав - сохраняя параметры из объектов в переменные заранее?
Почему? Не понял.
Это же масло масляное?
Тоже не понял.
« Последнее редактирование: 20.01.2016, 20:10:06 от robert » Записан
Yastroitel
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 112



« Ответ #7 : 20.01.2016, 20:11:07 »

Я хотел в первом индексном файле шаблона переложить конкретные параметры в переменные.
И дальше вызывать эти переменные в переопределенных элементах.
Если я вас правильно понял - это не возможно и нужно внутри переопределяемого вывода получать доступ к JTemplate и брать параметры оттуда.

Таким образом я понял что если у меня будет несколько переопределенных элементов, то мне придётся в каждом получать доступ к JTemplate?

Все верно?
Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #8 : 20.01.2016, 20:16:07 »

Да. И что за параметры у вас? Если это CSS-свойства, то почему не хранить их в файле CSS?
Записан
Arkadiy
Группа развития
*****

Репутация: +431/-0
Offline Offline

Пол: Мужской
Сообщений: 5313


Крепитесь, други.


« Ответ #9 : 20.01.2016, 20:20:32 »

Можно вместо переменной определить константу. Она будет доступна почти везде (в любом месте кода, которое выполняется позже определения константы).
Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #10 : 20.01.2016, 21:01:00 »

Код шаблона исполняется после кода компонента, если не ошибаюсь.
Записан
Yastroitel
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 112



« Ответ #11 : 20.01.2016, 21:38:41 »

У меня есть несколько свойств CSS - например - red, blue, green

В настройках шаблона пользователь выбирает один из цветов.

Во время исполнения - берется параметр например - red и подставляет в соответствующий class элемента

Этот класс будет единым для нескольких разных элементов

Вот как-то так мне это видится
Записан
Arkadiy
Группа развития
*****

Репутация: +431/-0
Offline Offline

Пол: Мужской
Сообщений: 5313


Крепитесь, други.


« Ответ #12 : 20.01.2016, 21:40:54 »

К сожалению да. Я в основном для модулей константами пользуюсь.
Записан
Yastroitel
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 112



« Ответ #13 : 21.01.2016, 12:41:19 »

Спасибо большое за ответы!

Пошел читать/экспериментировать с Jtemplate
Записан
Yastroitel
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 112



« Ответ #14 : 21.01.2016, 16:38:24 »

Спасибо большое robert за совет

Все заработало - видимо переменная не передавалась - так как действительно код исполняется после кода компонента
Записан
Театрал
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 96



« Ответ #15 : 24.01.2016, 07:47:45 »

То, что вы хотите (выбор определённого стиля шаблона из админки), я делал через класс или id для body. Намного гибче получается.

Например, если <body class="red">, то для заголовка h1 на всём сайте можно просто в CSS указать стиль:
Код:
.red h1 {color: #880000;}
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet