Переопределение макета таблицы представления в модуле


Я пытаюсь переопределить таблицу представлений из своего модуля. Я не могу определить, какими должны быть аргументы и в каком порядке (для моей функции hook_theme). Я скопировал файл темы из представлений/тем и не внес никаких изменений. Кто-нибудь знает, что происходит не так, и какое значение аргументов должно быть ниже?

В настоящее время моя конфигурация темы:

'views_view_table__opportunities_mentions' => array(
  'arguments' => array(
    'view' => NULL, 
    'title' => NULL, 
    'header' => NULL, 
    'fields' => null, 
    'class' => null, 
    'row_classes' => null, 
    'rows' => null
  ),
  'template' => 'views-view-table--opportunities-mentions',
  'original hook' => 'views_view_table',
  'path' => drupal_get_path('module', 'smd') . '/theme',
),
Author: lordg, 2011-03-14

4 answers

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

Что, по сути, тематизация всех представлений - это переопределение разметки по умолчанию чем-то подходящим для вашего дизайна.

@см. http://www.group42.ca/theming_views_2_the_basics для отличный учебник по тематике просмотров

РЕДАКТИРОВАТЬ

Если вы хотите получить полный контроль над создаваемой разметкой, и , чтобы это было переносимо по темам, единственный вариант, который у вас есть, - создать пользовательский модуль. Этот пользовательский модуль также может содержать настраиваемые компоненты и даже может использовать представление для выполнения любого тяжелого SQL (или вы можете просто написать SQL от руки)

Взгляните на аналогичный модуль, чтобы начать работу, и ознакомьтесь с ним тема крюка_

 3
Author: wiifm, 2011-03-14 18:51:22

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

См.:

 0
Author: googletorp, 2011-03-14 09:49:17

Намного лучше предварительно обработать представление.

Если вы хотите переопределить только определенный дисплей, вам нужно быть конкретным. Сначала вы должны создать tpl.php файл для просмотра. Вы можете определить, какой из них вам нужен, просмотрев информацию о теме для вашего конкретного представления. Вот пример:

enter image description hereЗатем вы хотите найти предложения по шаблону стиля строки, который в настоящее время является "Таблицей":

enter image description here

views-view-table.tpl.php переопределит каждое представление, имеющее стиль таблицы. Если вы хотите быть конкретным только для этого представления, вы захотите (в данном случае) views-view-table--frontpage.tpl.php - замените "первую страницу" любыми предложениями, которые дает вам ваш взгляд.

На самом деле вам нужно создать этот файл в каталоге вашей темы. Но что вы вкладываете в этот файл? Что ж, просто нажмите на ссылку "Вывод стиля", и вам будет представлен код, который вы можете просто скопировать и вставить прямо в него файл.

После сохранения этого файла откройте template.php и создайте для него препроцессор. Обратите внимание, что препроцессоры не работают без файла, присутствующего в D6. Вот некоторый код-заглушка, соответствующий нашему примеру:

function [theme-name]_preprocess_views_view_table__frontpage(&$vars) {
  // manipulate the $vars here
  ...
}

$vars передается по ссылке, поэтому вам нужно только манипулировать соответствующими ключами, чтобы делать то, что вы хотите.

 0
Author: sirkitree, 2013-07-17 07:09:08

На самом деле это выглядит в основном правильно для меня, я использовал тот же код в своем модуле. Я хотел упаковать свой файл шаблона с моим представлением в модуле. Поскольку сайт использует обычную тему bartik для администратора, и я не хотел редактировать эту тему, чтобы добавить свой CSS.

Что я считаю неправильным, так это следующее:

'views_view_table__opportunities_mentions' => array(
  'arguments' => array(
  'view' => NULL, 
  'title' => NULL, 
  'header' => NULL, 
  'fields' => null, 
  'class' => null, 
  'row_classes' => null, 
  'rows' => null
),
'template' => 'views-view-table--opportunities-mentions',
'base hook' => 'views_view_table',
'path' => drupal_get_path('module', 'smd') . '/theme',
),

Обратите внимание, что вместо original hook должно быть base hook. Это необходимо для того, чтобы представление имело собственные функции предварительной обработки, которые должны быть правильно подключены к вашему tpl. Если вы не установите это правильно он в любом случае подберет ваш пользовательский tpl, но вы получите всевозможные ошибки об отсутствующих или нулевых переменных в tpl, потому что функция предварительной обработки не установила ни одну из переменных, которые использует tpl.

 0
Author: stockli, 2013-12-18 13:57:15