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

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

Подключение стилей CSS с параметрами для модуля

 (Прочитано 882 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4716

Мама, я снова верстал во сне...


« : 12.02.2015, 02:11:38 »

Требуется: динамический CSS, зависящий от заданных в админке в настройках модуля параметров. Например, позиционирование того или иного элемента.

Вариантов имеем.

1) стандартный. Стили подключаем как обычно

Код
JHTML::stylesheet('modules/' . $module->module . '/assets/css/simpleslider.css');

Параметры передаем в макет и выводим инлайном. Что не нравится - инлайн стили.

2) Вариант два - делаем сам CSS динамичным - собственно, генерируем на лету, переменные используем прямо в нем.

Код
require_once("modules/mod_slider/assets/css/simpleslider.css.php");

Что не нравится - стили выводятся в позиции модуля напрямую.

Чего бы хотелось?

Подключать в head как в первом варианте, но в то же время оставить его динамичным - как во втором, с возможностью использования переменных.

Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #1 : 12.02.2015, 02:19:58 »

так а в чем проблема
Код
JHTML::stylesheet('modules/' . $module->module . '/assets/css/simpleslider.css.php');
 
в начале simpleslider.css.php Корректно отдаем заголовки + кеширование + сжатие
Код
<?php
header('Content-type: text/css; charset: UTF-8');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000). ' GMT');
header("Content-Encoding: gzip");
header('Last-Modified: '.gmdate('D, d M Y H:i:s',filemtime(__FILE__)).' GMT');
?>
 
а здесь уже пишем обычное CSS
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4716

Мама, я снова верстал во сне...


« Ответ #2 : 12.02.2015, 02:27:46 »

Не-а)
Цитировать
GET http://joomla3/modules/mod_slider/assets/css/simpleslider.css.php net::ERR_CONTENT_DECODING_FAILED
Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #3 : 12.02.2015, 02:30:02 »

Убери тогда
Код
//header("Content-Encoding: gzip");
попробуй.
решение с рабочего сайта. может еще какие настройки
по крайней мере для начала попробуй с одной строкой
Код
<?php
header('Content-type: text/css; charset: UTF-8');
?>
 
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4716

Мама, я снова верстал во сне...


« Ответ #4 : 12.02.2015, 02:32:41 »

Уряяяя! Заррработало!

 Kiss
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

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



« Ответ #5 : 12.02.2015, 03:19:52 »

Интересное решение, возьму на заметку, спс.
Записан
orsy
Давно я тут
****

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

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


Web-Factor Ukraine


« Ответ #6 : 11.07.2015, 19:18:56 »

а как в этот динамический файл *.css.php передать параметры указанные в админке модуля?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4716

Мама, я снова верстал во сне...


« Ответ #7 : 11.07.2015, 22:09:32 »

Код
$duration = $params->get('animation_duration');
Записан
orsy
Давно я тут
****

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

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


Web-Factor Ukraine


« Ответ #8 : 11.07.2015, 23:10:16 »

Код
$duration = $params->get('animation_duration');

если включить этот код то подключается пустой файл

подключается содержимое динамического файла CSS вплоть до этой строки, а то что идет после нее обрезается

вы не могли бы выложить содержимое вашего CSS файла полностью со стилями и условиями? очень интересно посмотреть.
« Последнее редактирование: 11.07.2015, 23:20:57 от orsy » Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4716

Мама, я снова верстал во сне...


« Ответ #9 : 12.07.2015, 00:30:32 »

Я его тогда не сделала - баловалась для себя, времени не хватило. Сейчас посмотрю что там как получается.
Записан
orsy
Давно я тут
****

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

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


Web-Factor Ukraine


« Ответ #10 : 12.07.2015, 05:29:43 »

Я его тогда не сделала - баловалась для себя, времени не хватило. Сейчас посмотрю что там как получается.
буду крайне признателен за помощь
Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #11 : 12.07.2015, 14:00:12 »

ваш CSS.php при этом ведь никак не связан с фреймворком, в нем значение params не определенно
вам нужно создать класс одиночку и передавать params туда в точке входа модуля и инклудить его в CSS.php получая при этом значение params
создать файл (мост), есть еще много решений,
к примеру записывать значения в POST, GET
подключать фреймворк в CSS.php, делать запрос в базу за настройками модуля
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4716

Мама, я снова верстал во сне...


« Ответ #12 : 30.08.2015, 20:59:00 »

Хм... подключила фреймворк в файл стилей. Но в этом application нет ни малейшего упоминания о модуле. Если даже вывести

Код
var_dump(get_defined_vars());

- параметров модуля в этих переменных нет  Shocked

Подключала так

Код
define( '_VALID_MOS', 1 ); 
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
 
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$app =JFactory::getApplication('site');
$app->initialise();
$my_params = $app->getParams('mod_mht');
Записан
fbr
Живу я здесь
******

Репутация: +136/-6
Offline Offline

Сообщений: 1250


« Ответ #13 : 30.08.2015, 21:39:42 »

Я делаю немного по другому.
Создаю массив со стилями содержащими параметры, и дописываю в конец стилевого файла.

Код
$mcnParams = array();
 
$mcnParams[] = '.class_name { color:' . $params->get('paramColor', '#fff'). ';}';
$mcnParams[] = ...        
 
$fp = file_put_contents(__DIR__.'/css/styles.css', $mcnParams, FILE_APPEND);

Обычно генерирую файл параметров для less, а уже потом компилирую в CSS
Но можно и сразу CSS
Записан
fbr
Живу я здесь
******

Репутация: +136/-6
Offline Offline

Сообщений: 1250


« Ответ #14 : 30.08.2015, 21:47:49 »

Хотя с CSS, пожалуй, будет не очень ..
При изменении параметров они будут не заменять, а дописываться в конец файла

В Less проще, там просто генерируешь файл параметров (без флага FILE_APPEND), типа @coloParam: #ddd;
и перезаписываешь его каждый раз при изменении параметров.
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4716

Мама, я снова верстал во сне...


« Ответ #15 : 08.09.2015, 12:57:40 »

сделала через сессию
Записан
Страниц: [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