как использовать тему bootstrap3 с расширением Yiistrap в среде Yii (версия начальной загрузки 2)

я использую тему администратора в своем бэкэнде, который использует Bootstrap 3.0 css (используется в качестве основного макета). в то время как у меня установлено расширение yiistrap, которое использует файлы CSS bootstrap 2 (для моих сеток и других виджетов), теперь, если я использую оба одновременно, все ломается (обычно тема), это очевидно, потому что используются обе версии, и один переопределяет css другого.

мне нужно знать, есть ли способ, которым я могу различать оба css или отображать один за другим каким-то образом? или мне нужно будет создать свой собственный шаблон/тему, используя файлы yiistrap?

позвольте мне привести вам пример, у меня есть макет темы в моем main.php (макет), все файлы темы добавлены в этот файл, затем я отображаю свое представление пользователя/администратора, которое содержит GridView Yiistrap, теперь, как вы можете видеть моя проблема, оба файла CSS необходимы для правильного рендеринга, Ханс кроется в моей проблеме. я хочу добавить оба файла одновременно, но не конфликтовать друг с другом. Предоставляет ли YII решение для этого? потому что это может случиться с любой темой, которую я использую, не только с бутстрапом.


person SAQIBZAFAR    schedule 25.10.2013    source источник
comment
пока не нашел решения, переключившись на более удобную тему администратора bootstrap 2.3.x, которая не создает особых проблем css. Если у кого-то есть решение, пишите сюда. Спасибо   -  person SAQIBZAFAR    schedule 29.10.2013


Ответы (2)


В Yiistrap есть метод register, который загружает все файлы CSS и JS в отрендеренный html. Насколько я знаю, это должно быть запущено вручную в какой-то момент жизненного цикла вашего приложения, и обычно это делается с помощью Yii::app()->bootstrap->register(). Все будет хорошо, если вы удалите этот вызов и замените его вызовом загрузчика Bootstrap 3.

Изменить

Поясню немного свой ответ. Прямо сейчас я предполагаю, что вы вызываете Yii::app()->bootstrap->register() где-то в своем приложении, включая файлы Bootstrap 3. Это, как вы заметили, приводит к конфликту. Yii::app()->bootstrap->register() будет включать только файлы CSS и JS, непосредственно необходимые для Yiistrap. Таким образом, либо полное удаление этого вызова, либо условная замена его включением Bootstrap 3 должно решить проблему.

person Nikolas Grottendieck    schedule 26.10.2013
comment
интересная мысль, плохо проверить это. но я думаю, что Yii::app()-›bootstrap-›register(); это добавит файлы в мои теги HEAD, не учитывая, где я их инициализировал, поэтому проблема останется. - person SAQIBZAFAR; 27.10.2013
comment
вы абсолютно правы в своем ответе, но проблема в том, что я могу обрабатывать Jquery с его версиями, но я не могу сделать то же самое для CSS, позвольте мне привести пример, у меня есть макет темы в моем main.php (макет) , все файлы темы добавлены в этот файл, затем я визуализирую свое представление пользователя/администратора, которое содержит GridView Yiistrap, теперь, как вы можете видеть мою проблему, оба файла CSS необходимы для правильного отображения всего, Ханс заключается в моей проблеме. я хочу добавить оба файла одновременно, но не конфликтовать друг с другом. Предоставляет ли YII решение для этого? потому что это может случиться с любой темой. - person SAQIBZAFAR; 28.10.2013
comment
Итак, вы хотите выборочно переопределить определенный CSS для Yiistrap/Bootstrap в зависимости от контекста. Вы можете поиграть с порядком регистрации или определить свою собственную составную таблицу стилей, которую вы загружаете при необходимости, что устраняет конфликты. - person Nikolas Grottendieck; 28.10.2013
comment
я переключил тему и отметил ваш ответ, я думаю, это лучшее, что я могу сделать в рамках текущих сроков проекта. будет играть с этим, когда будет достаточно времени. Спасибо за помощь - person SAQIBZAFAR; 29.10.2013

Вы можете переименовать папку ресурсов бутстрапа, а также определить путь как имя новой папки в админке и правильно разместить тему админки. то есть

theme/[your_theme_name]/views/layouts [здесь вы должны поместить основные файлы темы и написать код yiistrap в теге head для файлов ресурсов начальной загрузки]

theme/[your_theme_name]/views/admin [здесь следует размещать файлы темы администратора]

Если вы правильно разместите файлы, а также правильно назначите путь к файлам ресурсов в разделе <head></head> основного файла темы, я думаю, у вас не возникнет никаких проблем.

person StreetCoder    schedule 26.10.2013
comment
я думаю, вы неправильно поняли вопрос, все на своем месте, за исключением того, что у меня есть 2 бутстрапа, входящие в исходный код моей страницы, поэтому страница выглядит не так, как должна, но если я удалю любой, ее html искажается - person SAQIBZAFAR; 26.10.2013
comment
в соответствии с вашей последней строкой «должен ли я сделать свой собственный шаблон/тему, используя файлы yiistrap?» -- Вам решать, будете ли вы создавать новый шаблон или нет. Но Yiistrap поможет вам получить начальную загрузку в вашей теме. Поясните мне мое непонимание :) - person StreetCoder; 26.10.2013
comment
извините, если вы не поняли, проблема не в том, что есть какая-то проблема с загрузкой расширения или файлов темы; проблема в том, что мне нужно, чтобы обе вещи работали одновременно, расширение yiistrap, загруженное в тело моего макета, и тема для всей структуры, теперь, как вы могли догадаться, загрузка обоих одновременно создаст конфликт в CSS и JS, так как обе (тема и расширение yii — yiistrap) имеют разные версии начальной загрузки Twitter. поэтому мой вопрос заключался в том, как я могу заставить оба работать одновременно, не доставляя мне особых проблем, спасибо за ваш ответ, кстати :) - person SAQIBZAFAR; 27.10.2013
comment
Впрочем, теперь я понял. Таким образом, это будет зависеть от вашего форматирования. - person StreetCoder; 27.10.2013