|
サイトの環境設定 |
7.38 |
Views Bulk Operation |
VBO(Views Bulk Operation)で指定したアクションが表示されない |
|
CSV Download |
7.34 |
Views Excel Export |
Drupal7:Viewsで表示した内容をCSVダウンロード |
|
アップデート |
7.34 |
Core |
簡単にCoreのセキュリティアップデートがしたい |
|
表示 |
7.34 |
Views Infinite Scroll |
Facebookページのようにスクロールするとコンテンツが追加されるようなコントロール |
|
ニュースレター |
7.34 |
Simple news |
Simplenewsで追加顧客(リスト)だけにニュースレターを配信する方法 |
|
パフォーマンス |
7.34 |
Server |
お金をかけないで冗長化するには |
|
token |
7.34 |
token |
オリジナルモジュールからtokenを提供する方法を教えて下さい。 |
|
Commerce |
7.34 |
Commerce kickstart, Commerce file |
Commerceモジュール利用時のダウンロード製品登録方法 |
|
Drupal Commerce |
7.34 |
Commerce order |
Drupal Commerce:カート内や購入手続きページ内の「Order total」が翻訳できない |
|
Drupal Commerce |
7.34 |
Commerce profile |
Drupal Commerceの請求情報、配送情報の住所を日本的(郵便番号、都道府県、市区町村、住所、、、) |
|
アップデート |
7.34 |
Distribution(Commerce Kickstart) |
drushでcommerce_kickstartのアップデートに失敗する |
|
Database |
7.34 |
PHP |
データベースクエリ(SELECT)時のSQL関数 |
|
コンテンツの作成 |
7.26 |
Form Ajax |
入力フォームで#ajax使用時、#default_valueを書き換えても反映しない |
|
サイトの構築 |
7.26 |
Field Views |
フォーム選択肢(プルダウンやチェックボックス、ラジオボタン)のカスタマイズ方法 |
|
表示 |
7.26 |
Views |
ページ内に2つ目Viewsブロックを設置するときPagerが連動してしまう |
|
フォーム |
7.34 |
Webform |
動的なフォーム(webform) |
|
コンテンツの作成 |
7.26 |
CKEditor Views |
Viewsでティザーを一覧するとページのレイアウトが崩れることがある |
|
コンテンツの作成 |
7.34 |
CCK |
ノード入力フォームへパラメータを渡す |
|
Messages |
7.34 |
Disable messages |
標準(コア)が表示する特定のメッセージ非表示にしたい |
|
コンテンツの作成 |
7.34 |
ajax |
標準のajaxフォーム(複数値:値の数=無制限)の制御l方法 |
コメント
■ 関連API
パーマリンク Submitted by actbrain on 2018/05/02 11:45.
■ 関連API
検索フォームを変更する
検索フォーム入力値を変更する
Viewsのクエリを加工する
最終的なクエリを変更する
■ 例
プルダウンをチェックボックスに変更する
function MODULE_NAME_form_views_exposed_form_alter(&$form, FormStateInterface $form_state, $form_id) { $form[FIELD_NAME]['#type'] = 'checkboxes'; }空白区切りのtextフィールドを改行区切りのtextareaにする
function MODULE_NAME_form_views_exposed_form_alter(&$form, FormStateInterface $form_state, $form_id) { $form[FIELD_NAME]['#type'] = 'textarea'; $form[FIELD_NAME]['#rows'] = 5; } function MODULE_NAME_views_pre_view(ViewExecutable $view, $display_id, array &$args) { $_SESSION[MODULE_NAME][ANY_NAME][FIELD_NAME] = $_REQUEST[FIELD_NAME]; unset($_GET[FIELD_NAME], $_POST[FIELD_NAME], $_REQUEST[FIELD_NAME]); } function MODULE_NAME_query_alter(\Drupal\Core\Database\Query\AlterableInterface $query){ // フィールド内ORの場合 if ($view->id() == MY_VIEW) { $or = new Condition('OR'); foreach ($_SESSION[MODULE_NAME][ANY_NAME][FIELD_NAME] as $val) { $or->condition('node__FIELD_NAME_value', $val); } $query->addWhere($whereGroup++, $or); } }hook_views_query_alter()では完結できないクエリ補整を行う
function MODULE_NAME_query_alter(\Drupal\Core\Database\Query\AlterableInterface $query){if ($view->id() == MY_VIEW) { $query->addTag('this_is_my_views_query'); } function MODULE_NAME_query_alter(\Drupal\Core\Database\Query\AlterableInterface $query) { if ($query->hasTag('this_is_my_views_query')) { $tables =& $query->getTables(); foreach ($tables[ALIAS]['arguments'] as &$value) { if ($value == THIS) { $value = VALUE; } } } }クエリ情報を保存しておいてあとで使う
function MODULE_NAME_query_alter(\Drupal\Core\Database\Query\AlterableInterface $query){ $q = $query->query(); $_SESSION[MODULE_NAME][ANY] = [ 'string' => $q->__toString(), 'arguments' => $q->arguments(), ]; } 〜 $p = $_SESSION[MODULE_NAME][ANY]; $result = \Drupal::database()->query($p['string'], $p['arguments']); 〜フォームを持たないViewsに場合に応じて条件を付ける
function MODULE_NAME_query_alter(\Drupal\Core\Database\Query\AlterableInterface $query){ if ($view->id() == MY_VIEW) { $whereGroup = 2; $and = new Condition('AND'); $and->condition( "watchdog.timestamp", \Drupal::configFactory()->getEditable('image_manager.setting')->get('log_error_mailed_datetime'), '>'); $query->addWhere($whereGroup++, $and); } }ページ