Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Вывод в несколько колонок

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Self Author
phpBB 1.4.0
Сообщения: 36
Стаж: 19 лет
Откуда: Ростов-на-Дону
Благодарил (а): 1 раз

Вывод в несколько колонок

Сообщение Self Author »

Есть формирование некоего списка. Список формируется стандартно:

Код: Выделить всё

$template->assign_block_vars('list', array(...
А вот в шаблоне есть необходимость формировать этот список в 2 колонки. Для этого я сначала завёл шаблонную переменную, которая хранит количество элементов списка, а потом в шаблоне сделал так:

Код: Выделить всё

<td width="50%">
<!-- BEGIN list -->
	элемент списка...<br />
<!-- IF list.S_ROW_COUNT + 1 == LIST_COUNT >> 1 -->
</td>
<td width="50%">
<!-- ENDIF -->
<!-- END list -->
</td>
Всё работает замечательно.
Но вот потребовалось сделать вывод в несколько колонок. И ума не приложу, как это сделать.
Посоветуйте что-нибудь.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Вывод в несколько колонок

Сообщение Sheer »

Вложенные циклы.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Anvar
Former team member
Сообщения: 1965
Стаж: 14 лет 1 месяц
Благодарил (а): 57 раз
Поблагодарили: 625 раз

Re: Вывод в несколько колонок

Сообщение Anvar »

PHP

Код: Выделить всё

		$template->assign_block_vars('colon', array());

		$template->assign_block_vars('colon.left', array(
			'CONTENT'	=> '',
		));

		$template->assign_block_vars('colon.right', array(
			'CONTENT'	=> '',
		));
HTML

Код: Выделить всё

<div class="column1">
	<!-- BEGIN colon -->
	<!-- BEGIN left -->
		Содержимое левой колонки<br />
	<!-- END left -->
	<!-- END colon -->
</div>
<div class="column2">
	<!-- BEGIN colon -->
	<!-- BEGIN right -->
		Содержимое правой колонки<br />
	<!-- END right -->
	<!-- END colon -->
</div>
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Вывод в несколько колонок

Сообщение Sheer »

Содержимое левой колонки -- {colon.left.CONTENT}
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Self Author
phpBB 1.4.0
Сообщения: 36
Стаж: 19 лет
Откуда: Ростов-на-Дону
Благодарил (а): 1 раз

Re: Вывод в несколько колонок

Сообщение Self Author »

Sheer, по-хорошему php-код не должен знать, как будут отображаться данные, переданные шаблону. В одном шаблоне это может быть 2 колонки, в другом - 4 и т.д.

Anvar, 2 колонки я уже сделал (см. выше). Более того, я сделал и 4 колонки. Но мне нужно придумать, как сделать произвольное число колонок. И чтобы это решалось именно средствами шаблона, а не php.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 11 месяцев
Благодарил (а): 101 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

Re: Вывод в несколько колонок

Сообщение xisp »

Можно с помощью FlexBox в CSS, но это если не смущает относительно слабая поддержка браузерами. Заодно и от таблиц избавитесь.
phpBBex
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Вывод в несколько колонок

Сообщение Sheer »

Self Author писал(а): php-код не должен знать, как будут отображаться данные, переданные шаблону
Это как это??? Именно php-код отдает данные в шаблон, а тут, на те...
Self Author писал(а): И чтобы это решалось именно средствами шаблона, а не php.
Атандес... не выйдет.
Self Author писал(а): как сделать произвольное число колонок.
Посмотрите, как сделан календарик в phpBB Board Portal.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Self Author
phpBB 1.4.0
Сообщения: 36
Стаж: 19 лет
Откуда: Ростов-на-Дону
Благодарил (а): 1 раз

Re: Вывод в несколько колонок

Сообщение Self Author »

Sheer писал(а):
Self Author писал(а): php-код не должен знать, как будут отображаться данные, переданные шаблону
Это как это??? Именно php-код отдает данные в шаблон, а тут, на те...
Это так, что php-код один, и он даёт данные. А то, как эти данные показаны - знает шаблон.
Есть список. Всё его содержимое передано переменным шаблонизатора. А уже шаблон решает, как его показать: в одну колонку, в две или больше.
Натянул один дизайн - там одна колонка, натянул другой - там тот же список в 3 колонки...

Отправлено спустя 4 минуты 3 секунды:
Собственно говоря, я придумал, как сделать в 4 колонки, не трогая php.

Код: Выделить всё

<td width="25%">
<!-- BEGIN list -->
   элемент списка...<br />
<!-- IF list.S_ROW_COUNT + 1 == LIST_COUNT >> 1 || list.S_ROW_COUNT + 1 == LIST_COUNT >> 2 || list.S_ROW_COUNT + 1 == (LIST_COUNT >> 1) + (LIST_COUNT >> 2) -->
</td>
<td width="25%">
<!-- ENDIF -->
<!-- END list -->
</td>
Но, получается, таким способом я могу делать колонки, кратные 2: 2, 4, 8. А вот 3 или 6 колонок не сделаю. :( Пока в шаблонизаторе не будет функции округления...
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Вывод в несколько колонок

Сообщение Sheer »

Self Author писал(а): , кратные 2: 2, 4, 8. А вот 3 или 6 колонок не сделаю. :( Пока в шаблонизаторе не будет функции округления
Почитайте .... Руководство по синтаксису шаблонов
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Self Author
phpBB 1.4.0
Сообщения: 36
Стаж: 19 лет
Откуда: Ростов-на-Дону
Благодарил (а): 1 раз

Re: Вывод в несколько колонок

Сообщение Self Author »

Sheer писал(а):Почитайте .... Руководство по синтаксису шаблонов
Читал. Именно благодаря руководству и сделал это.
А Вы что имели в виду, предложив мне это? Я что-то не заметил?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Вывод в несколько колонок

Сообщение Sheer »

odd и even - четно и нечетно.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Self Author
phpBB 1.4.0
Сообщения: 36
Стаж: 19 лет
Откуда: Ростов-на-Дону
Благодарил (а): 1 раз

Re: Вывод в несколько колонок

Сообщение Self Author »

Sheer писал(а):odd и even - четно и нечетно.
И как мне это поможет?
Konstancius
phpBB 1.2.1
Сообщения: 20
Стаж: 15 лет 5 месяцев
Поблагодарили: 9 раз

Re: Вывод в несколько колонок

Сообщение Konstancius »

Полагаю, без CSS не обойтись.
В шаблоне:

Код: Выделить всё

<ul class="my_list">
{% for item in my_list %}
    <li>
        {{ item }}
    </li>
{% endfor %}
</ul>
Для этого кода делаете CSS файл с приблизительно таким содержанием:

Код: Выделить всё

.my_list li {
    float: left;
    width: 300px; /* здесь можно указать проценты, тогда список будет с фиксированным количеством колонок, а как здесь, количество колонок зависит от ширины родительского элемента */
    list-style-type: none;
    padding-right: 20px; /* так же можно указать проценты */
}
В расширении пишите:

Код: Выделить всё

$this->template->assign_var('my_list', array(...));
Можете посмотреть в сторону CSS3 column-count и column-width. Но могут быть проблемы с совместимостью, не все браузеры корректно это поддерживают

Вернуться в «Для разработчиков»