Не удается отобразить блок на панели
Я новичок в друпале и очень новичок в панелях. У меня есть пользовательский модуль, который отображает элементы RSS-канала на основе таксономии пользователя. Он отображает правильную информацию в виде блока, но он должен быть на странице панели пользователя, которая использует панели. Когда я пытаюсь вставить его, оно всегда пустое.
Код вставляет представление по умолчанию, которое я уже создал, показывая все элементы фида (1_feeds_defaults_feed_items) в блок. Я не могу отредактировать его для работы на панели. Я предполагаю, что есть 10 различных вещей, которые я, возможно, сделал неправильно, но попробовал каждую перестановку, о которой я могу думать.
<?php
//.this function generates a block and calls the second
//function for the content of this block
function custom_block($op = 'list', $delta = 0, $edit = array()) {
switch ($op) {
case 'list':
$block[0]['info'] = 'Custom View';
$block[2]['cache'] = BLOCK_NO_CACHE;
return $block;
break;
case 'view':
switch ($delta) {
case 0:
$block['subject'] = '';
$block['content'] = custom_userfeeds() ;
break;
}
return $block;
}
}
function custom_userfeeds() {
//finds the user id from argument on user page.
//You can also find the user id the way the page you linked me to did,
//but if you do it the way I am below it would allow admins
//to view other users feeds
$uid = arg(1);
//loads the profile node -- 'profile' is the profile content type.
$node = content_profile_load('profile', $uid);
//find the terms associated with the user's profile
if ($node && $node->taxonomy) {
foreach($node->taxonomy as $term) {
$terms[] = $term->tid;
}
}
//embeds a view with those terms passed to it.
View display is something like block_1 or page_1
if($terms) {
$t = implode('+',$terms);
return views_embed_view("1_feeds_defaults_feed_items","page_1", $t);
}
}
1 ответ
Вот как я это исправил в представлении: -Добавить аргумент -> Таксономия -> Идентификатор термина таксономии -Поставить аргумент по умолчанию -PHP-код -PHP-код аргумента:
global $user;
$query = "SELECT tid FROM {term_user} WHERE uid = %d";
$result = db_query($query, $user->uid);
if ($result) {
$terms = array();
while ($term = db_fetch_array($result)) {
$terms[] = $term['tid'];
}
if ($terms) {
$termargs = implode("+", $terms);
return $termargs;
}
}
else {
return FALSE;
}
-Проверьте "Разрешить несколько терминов на аргумент".