머신 이름이 "news"인 뷰 블록을 만들었습니다.
module_invoke()
뷰의 머신 이름과 사용하여 어떻게 표시 합니까?
머신 이름이 "news"인 뷰 블록을 만들었습니다.
module_invoke()
뷰의 머신 이름과 사용하여 어떻게 표시 합니까?
답변:
echo views_embed_view('view_machine_name', 'block_1');
탭을 클릭하여 표시 이름을 찾고 브라우저의 주소 표시 줄에서 표시 이름을 확인할 #views-tab-block_1
수 있습니다 block_1
.
{{ drupal_view('view_machine_name', 'block_1') }}
뷰에 매개 변수를 전달하려면 다음을 사용하십시오.
echo views_embed_view('view_machine_name', 'block_1', $param);
예를 들면 다음과 같습니다.
echo views_embed_view('view_machine_name', 'block_1', $node->nid);
또는:
echo views_embed_view('view_machine_name', 'block_1', $nid, $uid);
대부분의 경우 tostinni의 답변이 정답입니다. 그러나보기 제목을 포함하려면 조금 더보기 흉합니다.
로부터 views_embed_view()
문서 :
이 기능은 뷰의 제목을 표시하지 않습니다. 그렇게하려면 뷰를로드하고 미리보기를 얻은 다음에이 기능을 사용하여이 기능을 수동으로 수행해야합니다
$view->get_title()
.
예를 들면 다음과 같습니다.
$name = 'view_machine_name';
$display_id = 'block_1';
$view = views_get_view($name);
if (!$view || !$view->access($display_id)) {
return;
}
$view_content = $view->preview($display_id);
$title = $view->get_title();
업데이트 : @rojosnow 미리보기를 받아야 밖으로 문서를 가리키는 지 언급 하기 전에 전화 get_title()
나 주변 사람들이 줄을 이성을 상실했습니다 있도록.
이것은 나를 위해 일했다 :
$view = views_get_view('view_machine_name');
$view->set_display('Master');
$view->get_title();
$response = $view->preview('You_Block_id');
// html로 다음과 같이 호출했습니다.
<div class="col-md-4 col-sm-6">
<div class="blocksOuterWrapper companyNewsWrapper">
'.$response.'
</div>
</div>
나를 위해 기본 블록 (이름이없는)이 block
아니라 block_1
다음과 같이 호출됩니다 .
<?php echo views_embed_view('news_archive', 'block'); ?>
또한 tostinni의 답변을 기반으로합니다.
보기에 결과가없는 경우 HTML을 표시하지 않으려는 경우. 또한 제목이 있지만 결과가있는 경우에만 추가하십시오.
if (array_filter(views_get_view_result('view_machine_name', 'block_1'))) {
print '<h2 class="my-view-block-title">Special Title</h2>';
print views_embed_view('view_machine_name', 'block_1');
}
내 경험으로는 다음과 같은 기능을 사용하여 뷰 제목 또는 내용으로 경로를 변환 할 수 있습니다.
<?php
function view_path_to_title($path)
{
// only if your path is a URL alias
$sql = "SELECT src FROM {url_alias} WHERE dst = '%s'";
$src = db_result(db_query($sql, $path));
// if you do not use URL aliases, you probably use $path here instead of $src
$menu_item = menu_get_item($src);
// make sure it worked as expected
if(!empty($menu_item)
&& $menu_item["page_callback"] == "views_page"
&& count($menu_item["page_arguments"]) >= 2)
{
$args = $menu_item["page_arguments"];
$view = views_get_view($args[0]);
}
else
{
$view = null;
}
if ($view)
{
// just loading a view is not quite enough, we have to setup the
// arguments, including the display, and the "execute" the view
$view->set_display($args[1]);
array_shift($args); // view name
array_shift($args); // display name
$view->set_arguments($args);
$view->execute();
$title = $view->get_title();
if($title)
{
return $title;
}
}
// some "random" default
return $path;
}
뷰를 렌더링하려면 $view->render()
대신을 사용하십시오 $view->get_title()
.
확실히,을 올바르게 호출 할 때까지 $view->execute()
아무것도 제대로 작동 하지 않았습니다. 반환 값으로 빈 문자열 (아마도 null)을 얻을 수 있습니다.