Нужен совет. Я уже отчаялся что-нибудь понять!
Вот сайт с темой 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 . Где это все регулируется, неясно.
Если нет способа (а наверняка должен быть) избавиться от отображения вида списка у блока, то значит придется отказаться от всякой попытки оформить блок типа "случайной картинки" или последней картинки" с помощью его собственного шаблона, и просто выводить его как таблицу, что не есть гуд.
Комментарии
> Известно, что влиять на оформления блока с помощью создания доп. шаблона можно, только если он выводится как список (list-view), а не как таблица.
Да кто ж вам такое сказал?
Любая функция, имя которой начинается на theme_, может быть переопределена в вашем шаблоне. Причём 2-мя способами:
1) phptemplate_<function_name> (для темового движка PHPTemplate)
2) <theme_name>_<function_name>
А что касаемо видов, то можно переопределять функции для всех видов, для конкретного вида (по названию вида) и даже для каждого поля/элемента вида.
В общем, вариантов - море.
>>Да кто ж вам такое сказал?
да не знаю... читал где-то на форуме, кроме того на практике подтверждается - если задать в настройках 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;" мне до него по прежнему не донести.
лень было скачивать и перезакачивать CSS - втупую поправил в коде и все изчезло, а конкретно в нужном месте
[color=red]
style="list-style-type:none;"
[/color]>
- красным то, что добавил. Это видимо можно отрегулировать в views . Можно попробовать жестко в CSS прописать
- видимо именно это вам было нужно?
>>втупую поправил в коде
а разве не об этом я спрашивал - как заставить выводиться страницу с таким кодом?
вобщем, по ходу надо еще редактировать файл misc/drupal.css
если стили или классы перекрывают друг друга, то, я так понимаю, то что в нем прописано - предпочтительнее...
в файле css шаблона строчку "li { list-style-type:none; }" добавляй -не добавляй, ничего не изменится, пока в друпал css что-то иное (не обязательно противоречащее) указано.
"если стили или классы перекрывают друг друга, то, я так понимаю, то что в нем прописано - предпочтительнее..."
Работает то определение, которое разобрано позже.
То есть в следующем случае, если два класса (тэга и т.д.) определены в обоих файлах, то работать будет последний:
< LINK REL="stylesheet" TYPE="text/css" HREF="drupal.css" >
< LINK REL="stylesheet" TYPE="text/css" HREF="my_css.css" >
вот собственно код
.view .item-list ul li{
list-style-type: none;
}
Зачем менять отображение списков для всего сайта сразу? Я добавила в файле стилей моей темы такие строчки и все работает
Что бы с помощью views выводить блоки - надо править файлы темы или не обязательно и это через веб интерфейс решаетса?
нет, надо поставить галочку "provide block" в настройках конкретного вида
и всё!