Тема оформления на основании bootstrap

Автор lameman, 03 октября 2013, 15:05:17

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

lameman

Пытался прикрепить оформление от bootstrap. Начал с того, что пытался менять нужные мне элементы поочередно. Но в этом дефолтовом бреду фиг разберешся. Что, за чем идет?? Убрать все div, span и оставить только разметку типографскую? Задача не из легких. Такого нагромождения вложенности див-ных слоев я еще не видел. Бросил это дело. Кто-то пробовал так делать? На основании какой темы проще и легче? Какую тему в репозитории взять за основу (с минимальным количеством оформления, без выкрутасов с раскраской)? Смотрел тему core - но в ней меньше вполовину файлов - значит какой-то функциональности нет. Обрезана по самое не хочу.
Даже "освобождение" от разметки умолчательной темы не приносит ясности в порядке её оформления.
Извините конечно, но поражаюсь "изворотливости" кодеров движка форума.

Bugo

Видимо, проще с нуля тему верстать, со своими divами и spanами.
В админке создайте копию темы Curve, с ней (с копией) и экспериментируйте.

lameman

Этого я и боялся. Curve очень "дикая" в расположении блоков. Плюс к тому, хотя бы знать какая функция за что отвечает в выводе на экран. Там же бред сумасшедшего. Меню: переделал, но работать как выпадающее отказывается, видно что-то мешает. Посмотрел принцип построения, получается, что в class впихивается активное/неактивное состояние + идентификатор пункта. Идиотизм. А мне класс нужен свой, от bootstrap. И уже получается надо выкидывать вот эту функциональность (актив/неактив) и резать саму функцию.

Bugo

Ага, резать многое придется, потому что HTML-код в SMF не только в файлах шаблонов, но и в других (папка Sources) файлах имеется.

lameman

Чего то я с копированием темы не понял? Я написал новое название, нажал "Установить", смотрю в Админке - мое название появилось. Смотрю в Проводнике - папка с темой, а в ней 3 папки и 3 файла, хотя в Curve 7 папок и 62 файла. Остальное я должен сам докинуть из исходника?

Bugo

Вы создали копию, получили 3 папки и 3 файла, можете менять в них всё, как вам надо, а остальные файлы будут подхватываться из дефолтной темы.
Когда закончите экспериментировать со своими 3 папками и 3 файлами, можно начинать работать с другими файлами. Допустим, захотите поменять вид внутри темы — возьмете файл Display.template.php из папки дефолтной темы, закинете в свою папку (если файла в папке темы нет, используется аналогичный файл из дефолтной темы; если файл есть — используется он), поменяете в этом файле все блоки на те, что нужны вам. Надеюсь, не слишком сумбурное объяснение :)

lameman

Про "подхват" я понял. Это увидел в "изнанке" индексного файла. Две переменные $settings['theme_url'] и $settings['default_theme_url'] указывают именно на это. У меня уже "затык" произошел - как и говорил, застрял на меню.
Итак, "кишки" родного меню выглядели так:

echo '<div id="main_menu"><ul class="dropmenu" id="menu_nav">';
foreach ($context['menu_buttons'] as $act => $button)
{
echo '<li id="button_', $act, '"><a class="', $button['active_button'] ? 'active ' : '', 'firstlevel" href="', $button['href'], '"', isset($button['target']) ? ' target="' . $button['target'] . '"' : '', '>
<span class="', isset($button['is_last']) ? 'last ' : '', 'firstlevel">', $button['title'], '</span></a>';
if (!empty($button['sub_buttons']))
{
echo '<ul>';
foreach ($button['sub_buttons'] as $childbutton)
{
echo '<li><a href="', $childbutton['href'], '"', isset($childbutton['target']) ? ' target="' . $childbutton['target'] . '"' : '', '>
<span', isset($childbutton['is_last']) ? ' class="last"' : '', '>', $childbutton['title'], !empty($childbutton['sub_buttons']) ? '...' : '', '</span></a>';
if (!empty($childbutton['sub_buttons']))
{
echo '<ul>';
foreach ($childbutton['sub_buttons'] as $grandchildbutton)
echo '<li><a href="', $grandchildbutton['href'], '"', isset($grandchildbutton['target']) ? ' target="' . $grandchildbutton['target'] . '"' : '', '>
<span', isset($grandchildbutton['is_last']) ? ' class="last"' : '', '>', $grandchildbutton['title'], '</span></a></li>';
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul></div>';

Привести надо к такому состоянию (пример):

<nav class="navbar navbar-default" role="navigation">
<div class="collapse navbar-collapse navbar-ex1-collapse">
    <ul class="nav navbar-nav">
      <li><a href="/">Главная</a></li>
      <li><a href="#">Сайт</a></li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">PvP-команды <b class="caret"></b></a>
        <ul class="dropdown-menu">
          <li><a href="#">Патриоты</a></li>
          <li><a href="#">Знак качества</a></li>
          <li><a href="#">Гражданская оборона</a></li>
        </ul>
      </li>
    </ul></div>
</nav>

Я делаю так:
echo '<div class="row"><nav class="navbar navbar-default" role="navigation">
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav nav-pills">';
foreach ($context['menu_buttons'] as $act => $button)
{
echo '<li id="button_', $act, '" class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="', $button['href'], '"', isset($button['target']) ? ' target="' . $button['target'] . '"' : '', '>', $button['title'], '</a>';
if (!empty($button['sub_buttons']))
{
echo '<ul class="dropdown-menu">';
foreach ($button['sub_buttons'] as $childbutton)
{
echo '<li><a href="', $childbutton['href'], '"', isset($childbutton['target']) ? ' target="' . $childbutton['target'] . '"' : '', '>
', $childbutton['title'], !empty($childbutton['sub_buttons']) ? '...' : '', '</a>';
if (!empty($childbutton['sub_buttons']))
{
echo '<ul class="dropdown-menu">';
foreach ($childbutton['sub_buttons'] as $grandchildbutton)
echo '<li><a href="', $grandchildbutton['href'], '"', isset($grandchildbutton['target']) ? ' target="' . $grandchildbutton['target'] . '"' : '', '>
', $grandchildbutton['title'], '</a></li>';
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul></div></nav></div>';

Не срабатывает. Полоску меню выдает, но как выпадающее не работает. Сейчас из индексного файла выкинуты все указатели на стили от default, поставлены на bootstrap и Jquery. Также не правильно реагирует на вставку указателя, что меню имеет подменю (<b class="caret"></b>) - треугольнички появляются на каждом пункте. Может еще убрать "id=" и "target=" из кнопок?

GeorG

Цитата: lameman от 03 октября 2013, 17:49:54Привести надо к такому состоянию (пример):
Это делается проще всего через файл ../Sources.Subs.php (там выстраивается меню).
Ну или лепить очень сложную систему, или легкую, прям так и вставить в функцию template_menu. Через стили и идентификаторы выстраивать то что нужно.

p.s. Все темы делаются на основе дефолтной, т.е. тупо переделываются, а не с нуля...

Цитата: lameman от 03 октября 2013, 17:49:54Может еще убрать "id=" и "target=" из кнопок?
:facepalm:
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

lameman

Вот вы мне показываете "рука-лицо" на мое предложение убрать "id=" и "target=". Вы хоть поняли, что я убираю вообще(!) все линки на стилевые таблицы от default, а "id=" ссылается как раз на одну из этих таблиц, то смысл её оставлять?? "Мусора" больше? В котором потом копатся еще дольше? Логики не понимаю. Зачем оставлять то, с чем вообще не будем работать. Я говорил, мне нужен "голый" html.
Цитата: GeorG от 08 октября 2013, 09:09:31Все темы делаются на основе дефолтной, т.е. тупо переделываются, а не с нуля...
Вот и хреново, что так. Что разработчики курили, непонятно. И ведь не дураки.

kak2z

Цитата: lameman от 08 октября 2013, 10:22:28
Вот вы мне показываете "рука-лицо" на мое предложение убрать "id=" и "target=". Вы хоть поняли, что я убираю вообще(!) все линки на стилевые таблицы от default, а "id=" ссылается как раз на одну из этих таблиц, то смысл её оставлять?? "Мусора" больше? В котором потом копатся еще дольше? Логики не понимаю. Зачем оставлять то, с чем вообще не будем работать. Я говорил, мне нужен "голый" html.Вот и хреново, что так. Что разработчики курили, непонятно. И ведь не дураки.
а как по мне это гениальное решение... даже тот же вопрос с модами часто решается без ручного допиливания при установке на нестандартную тему.
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

GeorG

lameman, все там логично и все работает, если делать нормально, что вы там повырезали, после чего у вас лишние идентификаторы пунктов появились, мне лично неизвестно (вы же досконально то не описываете, свои "хирургические" действа). Вложенность блоков нормальная, вообще не понимаю причем тут это и чем вложенность не нравится, т.е., лучше без неё?
Честно, под сотню тем переверстал уже, никогда не сталкивался с вашими проблемами.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

lameman

Ну конечно, как я с Вами спорить буду. У вас опыт, наработки есть, куда мне. Ничего лишнего не вырезал, а то, что вы считаете, что там все отлично, это ваше право. Я привел меню из файла index.template.php, которое идет по-умолчанию. Говорил я про пункты:
1) <li id="button_', $act, '">
2) <a class="', $button['active_button'] ? 'active ' : '', 'firstlevel" href="', $button['href'], '"', isset($button['target']) ....
Видно же, что id и class есть. Опять таки id будет ссылаться на несуществующий пункт в таблице стилей (которой физически уже нет), и пункт отвечающий за class, который у меня совершенно другой, и берется из стиля bootstrap.
Или вы как-то по-другому меню строите?
И вы оставляете это определение кнопки (активная/неактивная)?
Определение уровня пункта меню (первый/последний/подчиненный) тоже?

GeorG

Вот теперь понятно, раньше как-то всё немного сумбурно было описано.
Если это ID убрать, то и правда ничего не изменится. Наверно разработчик не нашёл куда запихнуть ключ с foreach xD

А вот про ваши классы, тут я ничего не могу сказать, у меня нет темы что вы там используете и я не знаю какие файлы стилей там подключены. Чтобы кнопка стала активной, в неё по-умолчанию подставляется класс "active", вычисляется по вот этой переменной  - $button['active_button'], там могут присутствовать другие классы (например для формирования самой кнопки),  можно и этот класс заменить на какой нибудь другой, который будет показывать что кнопка активна.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

lameman

Спасибо. Что и требовалось доказать.
Странно, разве Вы не знаете про bootstrap. На его основе довольно таки просто строить оформление.

GeorG

Проще всего, делать на дефолтной теме, там точно ничего из функционала не вырезано.
А там вообще мобильный фреймворк, не имеющий отношения к smf, из него делать только не сложные сайты, ну никак не тему для смф (вы весь функционал потеряете).

Кстати, вы в свой "такой" стиль, не одного мода не установите (кроме разве тех что на хуках), без капитальной их переделки.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

lameman

Абсолютно вы не правы. Очень много тем построено на его основе. Тусуюсь постоянно на Themeforest, чтобы быть в курсе.
А моды - это зло. Некоторые вносят такие правки, что не дай бог. Пора уже разрабам думать, как бы оформить особо популярные в постоянную функциональность форума.

anton4ik

lameman, интересные у Вас рассуждения. Сначала Вы говорите:
Цитата: lameman от 08 октября 2013, 10:22:28
Логики не понимаю. Зачем оставлять то, с чем вообще не будем работать.

а потом добавляете
Цитата: lameman от 08 октября 2013, 13:13:48
Пора уже разрабам думать, как бы оформить особо популярные (моды) в постоянную функциональность форума.

не совсем ясно, чего Вы хотите на самом деле)
Голый форум или функциональный, каким он есть сейчас?!

GeorG

Цитата: lameman от 08 октября 2013, 13:13:48Пора уже разрабам думать, как бы оформить особо популярные в постоянную функциональность форума
Всего не предусмотреть и не каждому они нужны, всем нужно что-то своё.

P.s. Вот увидите, через пару месяцев надоест с этой темой возится, ну т.е. мне кажется что её и невозможно сделать за это время (я в том смысле, чтобы она соответствовала задуманному функционалу разработчика), если получится, покажите что получилось :)
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru