|
フォーム |
8.9.x |
Webform |
フォーム作成時のレイアウトについて |
|
サイトの環境設定 |
8.9.x |
|
編集 |
|
コンテンツの管理 |
8.9.x |
|
写真の変更を行いたい |
|
Migrate |
9.x |
drush config |
Upgrade source(環境) を 変更したときにやるべきこと |
|
PHP |
8.9.x |
drush |
drush sql:cli < が機能しない場合の対処 |
|
フォーム |
8.9.x |
Views |
Views exposed filterのフォームに#default_valueを仕込む方法 |
|
テーマ |
8.9.x |
|
スマホに向いたテーマについて |
|
アップデート |
8.9.x |
composer patch |
patch を composer に 組み込む方法 |
|
PHP-FPM |
8.9.x |
PHP |
PHP-FPM 環境で .htaccess に php_value を 書いてもダメ |
|
サイトの構築 |
8.9.x |
Webform |
drupalを使用した登録、一覧表示の方法について |
|
アップデート |
8.9.x |
Composer update |
Composer で drupal/core-8.9.7 に更新できなくなった場合の処置 |
|
サイトの構築 |
7.59 |
Drupal.ajax |
drupal 7 で Uncaught TypeError: Drupal.ajax is undefined となったときの対応方法 |
|
Proxy |
7.59 |
Proxy Apache settings.php |
リバースプロキシ(Apache)+バックグランドWeb(Drupal 7 )でログインセッションを維持する方法 |
|
リバースプロキシ |
8.9.x |
mod_proxy mod_proxy_http mod_ssl |
Apache2.4 から httpsサーバーへリバースプロキシする方法 |
|
コンテンツの作成 |
8.9.x |
node |
ノード保存時の前回値の参照方法 |
|
サイト情報 |
8.9.x |
api |
Drupal::request() メモ |
|
テーマ |
8.9.x |
Twig |
Twig で 月末日を算出する方法 |
|
SESSION |
8.9.x |
api |
$_SESION操作のAPI |
|
フォーム |
8.9.x |
api |
GET/POSTされた情報を得る方法 |
|
テーマ |
8.9.x |
patch パッチ |
開発環境のファイル変更を本番環境にパッチでデプロイする方法(画像含まず) |
コメント
■ 関連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); } }ページ