Как изменить тему для таблиц, созданных с помощью theme_table ()?

Я хочу изменить внешний вид таблиц Drupal. Я строил свою собственную тему, используя STARTERKIT от Zen, и текущий внешний вид не очень хорош.

Как изменить шаблон для таблиц? В частности, мне нравится, что тема таблицы отображается в панели администрирования /панели администратора. Как использовать эту тему для моих таблиц?

6 голосов | спросил giga 29 MaramThu, 29 Mar 2012 09:31:04 +04002012-03-29T09:31:04+04:0009 2012, 09:31:04

4 ответа


1

Это стили, определяемые семью темой для таблиц:

table {
  width: 100%;
  font-size: 0.923em;
  margin: 0 0 10px;
  border: 1px solid #bebfb9;
}
table td,
table th {
  vertical-align: middle;
  padding: 8px 10px;
  border: 0;
  color: #000;
}
tr.even,
tr.odd {
  border-width: 0 1px 0 1px;
  border-style: solid;
  border-color: #bebfb9;
  background: #f3f4ee;
}
tr.odd {
  background: #fff;
}
tr.drag {
  background: #fe7;
}
tr.drag-previous {
  background: #ffb;
}
table th {
  text-transform: uppercase;
  background: #e1e2dc;
  font-weight: normal;
  border-width: 1px;
  border-style: solid;
  border-color: #bebfb9;
  padding: 3px 10px;
}
table th.active {
  background: #bdbeb9;
}
table th a {
  display: block;
  position: relative;
}
table th.active a {
  padding: 0 25px 0 0; /* LTR */
}
table th.active img {
  position: absolute;
  top: 3px;
  right: 3px;
}
table td.active {
  background: #e9e9dd;
}
table tr.odd td.active {
  background: #f3f4ee;
}
table tr.selected td.active,
table tr.selected td {
  background: #ffc;
  border-color: #eeb;
}
table.system-status-report tr {
  border-bottom: 1px solid #ccc;
}
table.system-status-report tr.ok {
  color: #255b1e;
  background-color: #e5ffe2;
}
table.system-status-report tr.info {
  color: #040f37;
  background-color: #bdf;
}
table.system-status-report tr.warning {
  color: #840;
  background-color: #fffce5;
}
table.system-status-report tr.error {
  color: #8c2e0b;
  background-color: #fef5f1;
}
/**
 * Exception for webkit bug with the right border of the last cell
 * in some tables, since it's webkit only, we can use :last-child
 */
tr td:last-child {
  border-right: 1px solid #BEBFB9;
}

Отбросьте это в файл CSS вашей темы (после удаления любых существующих правил для таблиц), и ваши таблицы должны выглядеть в значительной степени идентичными тем, что указаны в теме Семь. Очевидно, вы можете отредактировать это «до вашего сердца».

ответил Clive 29 MarpmThu, 29 Mar 2012 12:07:31 +04002012-03-29T12:07:31+04:0012 2012, 12:07:31
7

Я думаю, что вам нужно просто изменить стили CSS, используемые для таблицы, как предложил Клайв. Это не изменит результат, полученный из theme('table'), но это изменит способ отображения этого вывода.

Если вы действительно хотите изменить вывод, потому что вы хотите добавить теги HTML к тому, что обычно выводится для таблиц, вам необходимо переопределить функцию темы. Если THEMENAME является именем вашей темы, вам нужно написать функцию THEMENAME_table() в файле template.php для вашей темы. вы можете посмотреть код theme_table () , в качестве примера которого код для записи. Обычно вы хотите добавить вывод или слегка изменить вывод, и в этом случае вы используете большую часть кода, уже используемого в theme_table().

В Drupal 7 существует еще одна альтернатива, которая возможна, если то, что вы хотите сделать, это изменить значение переменных, переданных функции темы: каждая функция темы, даже те, которые не используют шаблон, имеют функцию препроцесса. В этом случае переменные, используемые из функции темы, следующие:

    $variables['header'] литий> $variables['rows'] литий> $variables['attributes'] литий> $variables['caption'] литий> $variables['colgroups'] литий> $variables['sticky'] литий> $variables['empty'] литий>

Написание кода в функции с именем THEMENAME_preprocess_table() (с помощью $variables в качестве параметра), вы можете изменить значение этих переменных до того, как они будут переданы в функцию темы.

  

Как изменить шаблон для таблиц?

Для функции темы таблицы нет файлов шаблонов; в этом случае также можно использовать файл шаблона, но вы должны написать больше кода, чтобы получить немного. Я могу сообщить, как это сделать, но я бы не предложил сделать это.

  

Как использовать эту тему для моих таблиц?

Вы просто вызываете функцию темы с помощью theme('table', $variables), где $variables - это массив, содержащий значения, требуемые от функции темы, которые:

  • header: массив, содержащий заголовки таблиц. Каждый элемент массива может быть либо локализованной строкой, либо ассоциативным массивом со следующими ключами:
    • "data": локализованное название столбца таблицы.
    • "field": поле базы данных, представленное в столбце таблицы (требуется, чтобы пользователь мог сортировать по этому столбцу).
    • «sort»: порядок сортировки по умолчанию для этого столбца («asc» или «desc»).
    • Любые атрибуты HTML, такие как «colspan», применяются к ячейке заголовка столбца.
  • rows: массив строк таблицы. Каждая строка представляет собой массив ячеек или ассоциативный массив со следующими ключами:
    • "data": массив ячеек
    • Любые атрибуты HTML, такие как «класс», применяются к строке таблицы.
    • «no_striping»: логическое значение, указывающее, что строка не должна принимать стиль «четный /нечетный». По умолчанию FALSE.
  • Каждая ячейка может быть либо строкой, либо ассоциативным массивом со следующими ключами:
    • "data": строка, отображаемая в ячейке таблицы.
    • "header": указывает, что эта ячейка является заголовком.
    • Любые атрибуты HTML, такие как «colspan», применяются к ячейке таблицы.
ответил kiamlaluno 29 MarpmThu, 29 Mar 2012 19:28:41 +04002012-03-29T19:28:41+04:0007 2012, 19:28:41
1

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

Первый заголовок

$header = array(
  array('data' => 'Servie Name', 'class' => array('my_class')), // you can add any html attributes or just add class atribute and then change table cell with css.
  array('data' => 'Number of Passengers', 'width' => '10%'),
);

Следующие строки

$rows = array(
  array('data' => $servie_name),
  array('data' => $pax),
);

Теперь вы получите таблицу

$table = theme('table',$header,$rows);

В файле css вы можете создать табличную ячейку таблицы, например:

.my_class { background-color: red; }
ответил miksha 22 J000000Tuesday14 2014, 15:52:13
0

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

Первый заголовок

$header = array(
  array('data' => 'Servie Name', 'width' => '35%', 'bgcolor' => '#000'), // you can add any html attributes.
  array('data' => 'Number of Passengers', 'width' => '10%'),
);

Следующие строки

$rows = array(
  array('data' => $servie_name),
  array('data' => $pax),
);

Теперь вы получите таблицу

$table = theme('table',$header,$rows);
ответил Serjas 28 Jpm1000000pmMon, 28 Jan 2013 16:27:51 +040013 2013, 16:27:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132