Создать страницу для редактирования всех полей из пользовательского типа контента (D7) - PullRequest
3 голосов
/ 29 ноября 2011

У меня есть пользовательский тип контента, который имеет настраиваемое поле с именем [stock]

Я хотел бы иметь одну страницу, которая показывает ВСЕ значения узлов [акции] в списке и позволяет мне изменять значение. Это возможно?

Любой совет будет высоко ценится

Ответы [ 2 ]

3 голосов
/ 29 ноября 2011

Ну, я собирался написать модуль для этого, но, как обычно, с Drupal, кто-то победил меня в этом!

Вы должны загрузить и установить Представления , а также (откровенно отлично) Модуль Slick Grid .Он предоставляет тип представления (Slick Grid), который создаст таблицу содержимого с включенным встроенным редактированием для полей.Для более сложных типов полей вместо этого предоставляется модальное всплывающее окно для редактирования.

Мне потребовалось 10 минут, чтобы создать представление со следующим выводом, что позволяет мне редактировать поля непосредственно в таблице двойным щелчком по ячейке:

Views Output

Контент автоматически сохраняется в базе данных, когда вы снова щелкаете по ячейке редактирования, и все это обрабатывается через AJAX, что делает его очень приятным для использования.

Вы можете добавить сколько угодно полей в сетку, так что я думаю, что это именно то, что вам нужно:)

1 голос
/ 29 ноября 2011

Да, я сделал что-то подобное, чтобы заставить его работать.В вашем случае вам придется изменить SQL-запрос для получения вашего пользовательского поля.Вам также необходимо изменить массивы $headers и $rows, чтобы включить в них то, что вам нужно отобразить, но я думаю, вы поняли идею.

 // first I create my own module hooking the menu
 function custom_menu() {
    $items['admin/custom-content'] = array(
        'title' => t('Custom Content'),
        'type' => MENU_NORMAL_ITEM,     
        'access arguments' => array('access content'), 
    );
    $items['admin/custom-content/product'] = array(
        'title' => t('Products'),
        'type' => MENU_NORMAL_ITEM,
        'access arguments' => array('access content'),
        'page callback' => 'custom_view_products'
    );
            return $items;
  }
  // the above will add a new admin menu link called Custom Content
  // then I have a callback method for the menu item
  function custom_view_products() {
         // setup the header for the form
         $headers = array(
        array('data' => 'Title', 'field' => 'title', 'sort' => 'asc'),
        array('data' => 'Published')
     );
         //
         $query = "SELECT n.* FROM {node} n ". 
                  "WHERE n.type = 'product' ORDER BY n.title ASC";

     //
     $rows = array(); 
     if(($results = db_query($query)->fetchAll())) {
        foreach ($results as $node) {
            $rows[] = array(
                'data' => array(
                l($node->title, 'node/'. $node->nid .'/edit'),
                $node->status
                ), 'class' => array('published')
            );
        }
         }
     $html = theme('table',
        array(
            'header' => $headers,
            'rows'=>$rows,
            'caption' => '',
            'sticky' => FALSE,
            'empty' => 'No products located...',
        )
    );
    return $html;
}
...