Основной курс по Joomla
0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 21008 Просмотров
*

drobinkin

  • Осваиваюсь на форуме
  • ***
  • 90
  • 4
  • Старый пират
Т.е. при выводе, допустим, Блог-Содержимое категории в 2 колонки. Тут на форуме (http://joomlaforum.ru/index.php/topic,4402.0.html) человек советует играться с отступами у table.contentpaneopen. Но если я правильно понимаю, это изменит ОБА отступа и у левой и правой колонок. Да, расстояние между ними изменится. Но также и изменится расстояния до внешних границ. А надо, чтобы только внутренние отступы менялись, т.е. у левой колонки правый отступ, а у правой - левый :). Но что-то мне подсказывает, что джумла (или джустина) не может контролировать, где левая, а где правая колонка. Или есть какое-то решение? Подскажите, пожалуйста.
Спасибо.
« Последнее редактирование: 12.01.2008, 19:04:35 от drobinkin »
Бостон — чемпион!
*

yunoshev

  • Разработчик расширений для Joomla 1.0
  • *
  • 1239
  • 175
Как на мой взгляд, ваша проблема решается добавлением кода в файле content.php в функции
Код
function BlogOutput ( &$rows, &$params, $gid, &$access, $pop, &$menu, $limitstart, $limit, $total, $archive=NULL, $archive_page=NULL ) {
в строки
Код
                // this is required to output a closing </tr> tag if one of the 3 conditions are met
                // 1. No of intro story output = number of columns
                // 2. Total number of items is reached before the number set to display
                // 3. Reached the last item but it does not fully fill the last row of output - a blank column is left
                if ( !( ( $z + 1 ) % $columns ) || $columns == 1 ) {
                    echo '</tr>';
                } else if ($i >= $total) {
                    echo '</tr>';
                } else if ( ( ( $z + 1 )==$intro ) && ( $intro % $columns ) ) {
                    echo '</tr>';
                }

Что нужно добавить? Проверку на количество заданных колонок и если их 2, то вставить просто-напросто между ними еще одну колонку без содержимого с шириной процентов в 2% (или сами подберете). А в коде этой же функции, чуть выше, найти строки, где задается параметр $width (он в коде вычисляется простым делением 100 на кол-во колонок), и уменьшить это значение на заданную вами ширину отступа.
Вот. Должно получиться.
*

drobinkin

  • Осваиваюсь на форуме
  • ***
  • 90
  • 4
  • Старый пират
Я к сожалению, не совсем програмер, но попробую, спасибо :)

Пока ждал ответа, в голову пришла мысль - это скорее к разрабам или к умельцам. По идее, ничего особо сложного :)
Идея такая:
Ввести параметр типа X (это и будет величина расстояния между клонками)
А общий вывод колонок делать примерно так:
Число колонок и так задается в админке. Подозреваю, что вывод происходит циклически :)
У первой ячейки в строке делать только правый отступ равным Х/2
у всех последующих, кроме последней - оба отступа равными Х/2
у последней в строке - только левый.
При переходе на следующую строку все повторяется.

Думаю, мысль понятна.
Причем, это по идее, должно работать независимо от числа колонок.
Что думаете?
Бостон — чемпион!
*

yunoshev

  • Разработчик расширений для Joomla 1.0
  • *
  • 1239
  • 175
Думаете в правильном направлении!  :)
Именно так и происходит вывод содержимого в этом цикле. Если вам это не срочно, то завтра я бы мог проверить эту версию в действии. Сегодня, к сожалению, много чего нужно сделать.
*

drobinkin

  • Осваиваюсь на форуме
  • ***
  • 90
  • 4
  • Старый пират
В принципе, время терпит. Т.е. прямо сейчас не нужно. :)
Хотя некое ученическо-исследовательское нетерпение (или жажда) присутствует :), но я с ними постараюсь справиться :)
Да и думаю, другим будет интересно и полезно, ибо потребность у людей в этом решении (как я вижу) периодически возникает.
Бостон — чемпион!
*

drobinkin

  • Осваиваюсь на форуме
  • ***
  • 90
  • 4
  • Старый пират
Вдогонку:

Хорошо бы завести этот параметр расстояния между колонками в разделе настроек оформления вывода блога, скажем, сразу после указания числа колонок.
Ну или на худой конец в виде какого-нибудь .суффикса стиля, если такое возможно.
С первым мне кажется должно быть проще.
Бостон — чемпион!
*

yunoshev

  • Разработчик расширений для Joomla 1.0
  • *
  • 1239
  • 175
приветствую! я сделал, завтра выложу. (Сегодня общаюсь с мобильного.)
*

yunoshev

  • Разработчик расширений для Joomla 1.0
  • *
  • 1239
  • 175
Здравствуйте!
Выкладываю решение для изменения расстояния между колонками
Цитировать
при выводе ... Блог-Содержимое категории
в ЛЮБОЕ количество колонок (в пределах разумного, разумеется  ;) ).

Сразу обговорю некоторые моменты:
1. Тестировалось на Joomla! 1.0.12 LE.
2. В некоторых случаях шинира самих колонок неравномерна (ширина первой отличается от ширины последней, хотя все задается одинаково, -- где глюк, не знаю).

Шаг 1
Открываем файл ххх\www\components\com_content\content.php. Переходим к строке №1277 вида:
Код
...
echo '<td valign="top" '. $width .'>';
...
Это находится в теле функции:
Код
function BlogOutput ( &$rows, &$params, $gid, &$access, $pop, &$menu, $limitstart, $limit, $total, $archive=NULL, $archive_page=NULL ) {

Нашли? Меняем их на следующий код:
Код
		$paddings = $params->def( 'paddings', 5 );
    $style_str = "";
    $cur_style = "";
    $cur_column = $z % $columns;
    if ($columns > 1) {
    if (($cur_column+1) < $columns) {
  $style_str .= 'padding-right: '.$paddings.'px;';
  }
    if (($cur_column+1) <= $columns && $cur_column != 0){
    $style_str .= ($style_str === "") ? 'padding-left: '.$paddings.'px;' : ' padding-left: '.$paddings.'px;';
    }
$cur_style = ' style="'. $style_str. '"';
}

echo '<td valign="top" '. $width . $cur_style. '>';
Впрочем, строку:
Код
	   				$style_str .= ($style_str === "") ? 'padding-left: '.$paddings.'px;' : ' padding-left: '.$paddings.'px;';
можно упростить:
Код
	   				$style_str .= 'padding-left: '.$paddings.'px;';

Шаг 2
Открываем файл ххх\www\administrator\components\com_menus\content_blog_category\content_blog_category.xml Переходим к строке №29 вида:
Код
...
<param name="columns" type="text" size="3" default="2" label="Колонки" description="Когда показывается вступление, во сколько колонок выстраивать материалы" />
...
и добавляем сразу после нее новый параметр paddings -- ОТСТУПЫ (будет виден в админке):
Код
		<param name="paddings" type="text" size="3" default="5" label="Отступы" description="Какие отступы между колонками материалов" />
С помощью этого параметра мы будем указывать расстояние отступа (в пикселях). Внимание! Расстояние между соседними колонками будет, соответственно, больше в два раза!

Вот и все! :)
К материалу прилагаю архив с измененными файлами.

P.S. Замечен глюк. После изменения кода, в браузере изменнения в силу не вступают, пока не поменяешь количество колонок...

[вложение удалено Администратором]
« Последнее редактирование: 15.01.2008, 17:29:08 от yunoshev »
*

drobinkin

  • Осваиваюсь на форуме
  • ***
  • 90
  • 4
  • Старый пират
Ух-ты, вот здорово, спасибо
Попробую погонять :)
Бостон — чемпион!
*

yunoshev

  • Разработчик расширений для Joomla 1.0
  • *
  • 1239
  • 175
На здоровье! :)
Я так понял, что после того, как мы внесли изменения в компонент Content - они работают и для Блог- Категории, и для Блог-Секции. Только, чтобы добавить форму управления отступами для Блог - Секция, нужно внести код из Шага 2 в com_menus\content_blog_section\content_blog_section.xml

Я правильно понял?
*

yunoshev

  • Разработчик расширений для Joomla 1.0
  • *
  • 1239
  • 175
*

cyberbattler

  • Осваиваюсь на форуме
  • ***
  • 30
  • 0
*

ArieZ

  • Осваиваюсь на форуме
  • ***
  • 48
  • 3
Привет всем! а как это можно применить для 1,5? очень нужно, после выравнивания по ширине текст как бы сливается в один, вот и думаю как можно сделать немного отступ. Думал вставить ещё один столбец между ними , но не знаю куда именно. =(
*

yunoshev

  • Разработчик расширений для Joomla 1.0
  • *
  • 1239
  • 175
с 1.5 не работаю :)