Як я можу використовувати гачку_візування_запрошення ()?


20

Виходячи з того, що повідомлялося в документації для kuk_views_query_alter () , я створив файл з ім’ям alterform.views.incі помістив його у включений модуль під назвою alterform. Я додав наступний код у. alterform.views.incАле він не працює.

function alterform_views_query_alter(&$view, &$query) {
  switch($view->name) {
    case 'myViewName':  
      echo 'test test'; // test       
      $query->orderby[0] = "FIELD(node.type, 'story', 'page', 'productTypeC', 'productTypeD') ASC";
      $query->orderby[1] = "node_title ASC";
      break;
  }
}

чому він не виводить "тестовий тест"? Що не так з моїм кодом?

досі немає результатів тесту та переглядів. що не так з моїм кодом? Дякую


Ніколи не використовував його, але чи можливо ви повинні включити / вимагати alterform.views.incвсередині свого модуля, а ви цього не зробили?
дурниця

Я помістив alterform.views.inc у свій файл модуля
alterform

як включити / вимагати alterform.views.inc всередині вашого модуля? дякую
enjolife

Відповіді:


22

Правильно. Для того, щоб "зробити" що-небудь із переглядами в модулі, ви повинні реалізувати прив'язку_views_api. Без цього ваш модуль взагалі ніколи не буде розпізнаний Views (AFAIK).

Будь ласка, додайте до коду свого модуля:

/**
 * Implementation of hook_views_api().
 */
function alterform_views_api() { // your module name into hook_views_api
  return array(
    'api' => 2,
    // might not need the line below, but in any case, the last arg is the name of your module
    'path' => drupal_get_path('module', 'alterform'),
  );
}

Це має виправити це, щоб ваш модуль був принаймні розпізнаний, тоді ви можете почати налагоджувати його :)

Хороший спосіб почати налагодження подання (тобто дитячого кроку) - це поставити dpm($view);на початку функцію перегляду, яку ви реалізуєте. У більшості випадків це викидає інформацію на екран, що допоможе вам побачити, де ви знаходитесь. Я б запропонував зробити це з встановленим / увімкненим devel.module.

Редагувати: це передбачає перегляди 2 та Drupal 6. Ви б краще розпитали, чи це не ваша зброя вибору.


Це чудово працює :)
kalidasan

4

Ви можете перевірити 3 речі:

  • очистити кеш
  • завантажте та ввімкніть Devel ,
  • використовувати dpm()замістьecho()
  • тест $view->nameсdpm()

я очистив кеш-пам'ять, і echo $ view-> ім'я. але все ще немає виводу про назву переглядів у блоці переглядів.
насолоджуйтесь життям

дивно. Я звичайно не покладаюся на ехо ... До речі, я помітив невелику помилку у вашому коді, є "}", що не повинно бути ... помилка вставлення?
Ману

але коли я print_r ($ views), все ще немає виводу про tit у блоці переглядів.
насолоджуйтесь життям

print_r ($ views) не повинен друкувати нічого, крім print_r ($ view) так. Ви поставили це перед вимикачем?
Ману

3

Потрібно помістити файл yourmodule.views.inc у каталог модулів, а не у підкаталог, або перегляди не можуть автоматично його підібрати.


2
    $query->orderby[0] = "FIELD(node.type, 'story', 'page', 'productTypeC', 'productTypeD') ASC";

має бути

    $query->orderby[0]['field'] = "field_name ASC";

1

якщо ви використовуєте каталог для yourmodule.views.inc, вам потрібно згадати його шлях у файлі модуля, використовуючи код, аналогічний наступному:

    'path' => drupal_get_path('module', 'mymodule') . '/subdirectory/';
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.