настройка вида блока с помощью views не для всех тем

Главные вкладки

Аватар пользователя poe poe 12 декабря 2006 в 2:54

Нужен совет. Я уже отчаялся что-нибудь понять!
Вот сайт с темой burnt : http://timspirit.ru/dogs/
Справа блок, выводящий случайную картинку, созданный с помощью модуля views. Известно, что влиять на оформления блока с помощью создания доп. шаблона можно, только если он выводится как список (list-view), а не как таблица. А раз это список, то появляется стандартная финтифлюшка перед каждым item'ом (то что соответствует html-тегу "ul").
По идее, убираться такая штука должна элементарно редактированием css: list-style-type: none;
Ну так вот не получается!
Если заглянуть в html код страницы, адрес которой я дал, там увидите в соотетствующем месте нагромождение div-слоев и всевозможных стилей в каждом... Я пробовал прописывать каждому из них в css соответствующий класс со строчкой "list-style-type: none;", начиная с самого первого "sidebar-right".
Ничего не помогло. Пробовал прописывать это впрямую через созданный для блока шаблон "views-list-Random_Img.tpl.php" - что характерно, рамку для картинки таким образом задать получается, а вот убрать то что я хочу убрать, нет.

Сейчас непосредственно перед тегом "ul" в html странице идет слой со стилем "item-list"
В css соответствующий класс тоже имеется: .item-list ul { и т.д.
Результата нет.

Если, заглядывая в html-код, сравнивать с левым меню, там эти штуки убраны за счет того, что сам тег для списка в этом меню заключает (угловая скобка)ul id="item-list"(/угловая скобка)
В блоках же "ul" выводится без всяких id . Где это все регулируется, неясно.

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

Комментарии

Аватар пользователя VLAD_X VLAD_X 12 декабря 2006 в 7:36

> Известно, что влиять на оформления блока с помощью создания доп. шаблона можно, только если он выводится как список (list-view), а не как таблица.

Да кто ж вам такое сказал? Smile
Любая функция, имя которой начинается на theme_, может быть переопределена в вашем шаблоне. Причём 2-мя способами:
1) phptemplate_<function_name> (для темового движка PHPTemplate)
2) <theme_name>_<function_name>

А что касаемо видов, то можно переопределять функции для всех видов, для конкретного вида (по названию вида) и даже для каждого поля/элемента вида.
В общем, вариантов - море.

Аватар пользователя poe poe 12 декабря 2006 в 18:33

>>Да кто ж вам такое сказал? Smile

да не знаю... читал где-то на форуме, кроме того на практике подтверждается - если задать в настройках views-блока параметр "table-view", вместо "list-view", то своим шаблоном этот блок уже не регулируется... проверьте сами, убедитесь...

что касается переопределения функции в основном шаблоне, так это сделано:
у меня добавлена в template.php функция для данного блока:

function phptemplate_views_view_list_Random_Img($view, $nodes, $type) {
$fields = _views_get_fields();

$taken = array();

// Set up the fields in nicely named chunks.
foreach ($view->field as $id => $field) {
$field_name = $field['field'];
if (isset($taken[$field_name])) {
$field_name = $field['queryname'];
}
$taken[$field_name] = true;
$field_names[$id] = $field_name;
}

// Set up some variables that won't change.
$base_vars = array(
'view' => $view,
'view_type' => $type,
);

foreach ($nodes as $i => $node) {
$vars = $base_vars;
$vars['node'] = $node;
$vars['count'] = $i;
$vars['stripe'] = $i % 2 ? 'even' : 'odd';
foreach ($view->field as $id => $field) {
$name = $field_names[$id];
$vars[$name] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
if (isset($field['label'])) {
$vars[$name . '_label'] = $field['label'];
}
}
$items[] = _phptemplate_callback('views-list-Random_Img', $vars);
}
if ($items) {
return theme('item_list', $items);
}
}
только что с того! это не дает мне решить конкретную проблему с оформлением, которая я подробно описал, в чем состоит.

для примера: внизу страницы у меня горизонталное меню - это тоже блок, выводимый как список.
с помощью шаблона этого блока мне удалось придать ему горизонтальное положение. но вот "list-style-type: none;" мне до него по прежнему не донести.

Аватар пользователя jason32 jason32 12 декабря 2006 в 13:17

лень было скачивать и перезакачивать CSS - втупую поправил в коде и все изчезло, а конкретно в нужном месте

<li
[color=red]
style="list-style-type:none;"
[/color]>

- красным то, что добавил. Это видимо можно отрегулировать в views . Можно попробовать жестко в CSS прописать

li { list-style-type:none; }

- видимо именно это вам было нужно?

Аватар пользователя poe poe 12 декабря 2006 в 18:56

>>втупую поправил в коде
а разве не об этом я спрашивал - как заставить выводиться страницу с таким кодом?

вобщем, по ходу надо еще редактировать файл misc/drupal.css
если стили или классы перекрывают друг друга, то, я так понимаю, то что в нем прописано - предпочтительнее...
в файле css шаблона строчку "li { list-style-type:none; }" добавляй -не добавляй, ничего не изменится, пока в друпал css что-то иное (не обязательно противоречащее) указано.

Аватар пользователя Dan Dan 13 декабря 2006 в 9:23

"если стили или классы перекрывают друг друга, то, я так понимаю, то что в нем прописано - предпочтительнее..."
Работает то определение, которое разобрано позже.
То есть в следующем случае, если два класса (тэга и т.д.) определены в обоих файлах, то работать будет последний:
< LINK REL="stylesheet" TYPE="text/css" HREF="drupal.css" >
< LINK REL="stylesheet" TYPE="text/css" HREF="my_css.css" >

Аватар пользователя Xena Xena 9 января 2007 в 17:29

Зачем менять отображение списков для всего сайта сразу? Я добавила в файле стилей моей темы такие строчки и все работает Smile

Аватар пользователя MAMONT MAMONT 18 апреля 2007 в 19:40

Что бы с помощью views выводить блоки - надо править файлы темы или не обязательно и это через веб интерфейс решаетса?