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

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

[Решено] Создание модуля. Генерировать CSS для каждой копии модуля

 (Прочитано 2856 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eugenes
Новичок
*

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

Сообщений: 4


« : 16.11.2014, 17:05:42 »

Доброго времени суток, уважаемые форумчане  Smiley В Joomla еще совсем новичек, до этого работал с другими CMS, вроде битрикса или Wordpressа. С-но вопрос - пишу модуль, с созданием и получением параметров модуля я разобрался, теперь следующий вопрос: необходимо по настройкам модуля генерировать оформление. Т.е. если пользователь выбрал, что текст должен быть красного цвета, то получаем этот параметр и в шаблоне выводим текст красного цвета. Я вижу следующие решения: генерировать css-ник, который подключается через JHTML::stylesheet($filename, $path), либо прописывать в месте вывода текста через style=""
Второй вариант проще, но он менее красивый+насколько я знаю через style="" нельзя прописать псевдоклассы, например hover и т.п.
Следовательно необходимо по параметрам модуля генерировать CSS и подключать его. Но тут встает следующая проблема: допустим, человек захочет, чтобы на сайте было две копии модуля, но при этом по-разному оформлены, например в первом модуле текст будет выводится зеленым цветом, во втором красным. Получается, я генерирую css-ник первым модулем, второй его затирает и генерирует свои настройки. Следующий вариант: генерировать уникальный css-ник, но на чем основывать его уникальность? Вариант который пришел в голову - прибавлять к имени файла id-шник модуля, но пока не разобрался, можно ли изнутри модуля получить id-шник. Если кто знает, буду очень признателен, если поможете. У этого метода тоже есть минус - если пользователь удалит модуль, то после него останется неиспользуемый CSS. Но пока другого не придумал. Буду очень-очень благодарен, если кто подскажет куда рыть, т.к. у меня есть чувство, что рою не в том направлении
Заранее огромное спасибо
« Последнее редактирование: 16.11.2014, 19:27:27 от eugenes » Записан
Shustry
Группа развития
*****

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

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


Рисую дизайны


« Ответ #1 : 16.11.2014, 17:47:58 »

Усложняете. Достаточно присвоить отличительный класс параметром из админки, а оформление всех вариантов писать в одном подключаемом файле. Также, правилом хорошего тона будет возможность НЕ подключать внешний CSS. Допустим у вас селектом выбирается цветовая схема: красный/жёлтый/зелёный. Тогда всему контейнеру модуля назначаем класс div class="<?php echo $colorclass"…, а затем в стилях прописываем:
Код
.colorred {backgroung:…
.colorred p {color:…
.colorred h3…

.colorgreen {backgroung:…
.colorgreen p {color:…
.colorgreen h3…
 
Записан
eugenes
Новичок
*

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

Сообщений: 4


« Ответ #2 : 16.11.2014, 18:39:43 »

Спасибо большое за ответ!
Допустим у вас селектом выбирается цветовая схема: красный/жёлтый/зелёный.
Немного не так - есть ссылка, при нажатии на которую открывается форма. Соответственно, есть такие параметры, как цвет ссылки, шрифт, подчеркивание, цвет при наведении. Т.е. не выпадающий список, а формы выбора цвета, чекбоксы и т.п.
Насчет подключения внешнего CSS - Вы правы, но остается вопрос с уникальностью стилей, прописанных в хедере... Если прибавлять к имени класса, например значение цвета, то может получится, что значение цвета в модулях будет одинаковым, а все остальное разным.
Может в параметрах модуля есть возможность генерировать уникальный ключ?
Записан
fbr
Живу я здесь
******

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

Сообщений: 1316


« Ответ #3 : 16.11.2014, 19:06:27 »

Просто приведу код, как я делал у себя:
Код
//создаем имя
$cssPath = '/modules/mod_combonews/css/mod-combonews-' . $module->id . '.css';
 
//генерируете файл с этим именем
...
//подключаем
jimport('joomla.filesystem.file');
$document = JFactory::getDocument();
$document->addStyleSheet($cssPath);
Получаем файл стилей с уникальным именем, включающим id  для каждого экземпляра модуля
Записан
eugenes
Новичок
*

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

Сообщений: 4


« Ответ #4 : 16.11.2014, 19:16:08 »

$module->id . '.css';
Подскажите пожалуйста ламеру, как получить id-шник модуля внутри модуля
Записан
fbr
Живу я здесь
******

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

Сообщений: 1316


« Ответ #5 : 16.11.2014, 19:24:49 »

так и получаете))

$id_module = $module->id;
Записан
eugenes
Новичок
*

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

Сообщений: 4


« Ответ #6 : 16.11.2014, 19:26:34 »

$id_module = $module->id;
Огромное спасибо)
Записан
Страниц: [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