Drupal görünüm tarafından yürütülen sorgu nasıl görüntüleneceğini

6 Cevap php

Ben drupal görünümünde yürütülen sorgusunu görüntülemek istiyorum. Şu anda görünüm düzenleyicisinde ancak ben bakış bir excel sürümünü indirmek için benim kod bu sorguyu kullanmak için bir ihtiyaç var sorgu gösterir.

Idam sorgu görünümleri menüsünün "editör" penceresinde gösteriliyorsa, aynı şekilde almak için bir yolu var mı? Ben görünümü gösterilir zamanda bu istiyorum.

Ne ben burada yapmayı planlıyoruz altbilgisindeki sorgu yakalamak ve bu sorgu bir XLS resultset geri gönderecek bir süreç gönderilen sahip olmaktır. Yani görünümü sonuçlarını görüntülemek için kullandığı tam sorgu istiyorum.

6 Cevap

Sorgu görünümü nesne bulunmaktadır. Bunu kullanmak istediğiniz yere bağlı olarak, bir görünümleri preprocess işlevi değişkeni eklemek isteyebilirsiniz, ya da (programlama çağırarak varsa) konum görünümü diyorlar.

Sadece bunun için olsa varsayılan şablonu kullanarak ediyorsanız, orada ona erişebilir:

// ex. somewhere in your views-view--VIEW_NAME.tpl.php
<?php print db_prefix_tables($view->build_info['query']); ?>

Süreç olsa keyfi SQL alırsa dikkatli olun, görünüm adı ile aramak için daha iyi olacak, ve gerektiği gibi programlama yoluyla sonuç almak olabilir. Veya doğrudan ayarlamak XLS sonuç sonuç döndüren görüntüsü ikincil ekran var.

PHP altbilgisi'nın Girdi Format ayarlayın ve Altbilgi metin içine bu pasajı yapıştırın:

<pre><?php
  $v = views_get_current_view();
  $query = db_prefix_tables(vsprintf($v->build_info['query'], $v->build_info['query_args']));
  $replacements = module_invoke_all('views_query_substitutions', $v);
  $query = str_replace(array_keys($replacements), $replacements, $query);
  echo $query;
?></pre>

Bir sözdizimi-vurgulanan sorgu için kullanarak (geshifilter.module), aşağıdaki satırları kullanın:

<pre><?php
  require_once drupal_get_path('module', 'geshifilter') .'/geshifilter.pages.inc';
  $v = views_get_current_view();
  $query = db_prefix_tables(vsprintf($v->build_info['query'], $v->build_info['query_args']));
  $replacements = module_invoke_all('views_query_substitutions', $v);
  $query = str_replace(array_keys($replacements), $replacements, $query);
  echo geshifilter_process($query, 'sql');
?></pre>

(Yorumlarda @ Makine-Yazılımı ile Owen'ın cevap ve tartışma @ kaynaklanmıştır.)

devel modülü sizin için sorguları giriş yapabilirsiniz.

http://drupal.org/project/views_bonus İzlenme dışa yardımcı olacaktır.

Nasıl ekrana çıktı görünümü sorguları için.

Bu Drupal 7 benim için çalışıyor.

gidin:

views / plugins / views_plugin_query_default.inc

Bu fonksiyonu bulmak:

/**
 * Generate a query and a countquery from all of the information supplied
 * to the object.
 *
 * @param $get_count
 *   Provide a countquery if this is true, otherwise provide a normal query.
 */
function query($get_count = FALSE) {

sadece fonksiyonu çok sonundan önce, ($ sorgu) DPQ kullanın;

  // Add all query substitutions as metadata.
  $query->addMetaData('views_substitutions', module_invoke_all('views_query_substitutions', $this));
dpq($query);
    return $query;
  }