Как изменить тему для таблиц, созданных с помощью theme_table ()?
Я хочу изменить внешний вид таблиц Drupal. Я строил свою собственную тему, используя STARTERKIT от Zen, и текущий внешний вид не очень хорош.
Как изменить шаблон для таблиц? В частности, мне нравится, что тема таблицы отображается в панели администрирования /панели администратора. Как использовать эту тему для моих таблиц?
4 ответа
Это стили, определяемые семью темой для таблиц:
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 вашей темы (после удаления любых существующих правил для таблиц), и ваши таблицы должны выглядеть в значительной степени идентичными тем, что указаны в теме Семь. Очевидно, вы можете отредактировать это «до вашего сердца».
Я думаю, что вам нужно просто изменить стили 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», применяются к ячейке таблицы.
Вы можете использовать все то же самое, что и в ответе 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; }
Почти все стили могут выполняться с помощью 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);