it-swarm-vi.com

Làm cách nào để lấy dữ liệu từ trường thêm K2 là một mảng?

Tôi đang xây dựng một trang web sử dụng các trường bổ sung K2, nhưng tôi đang tùy chỉnh đầu ra để tôi không chỉ kéo toàn bộ khối trường bổ sung.

Thông thường một cái gì đó như thế này hoạt động cho các trường nhập đơn:

<?php if($this->item->extraFields->streetaddressone->value != ''): ?>
 <span class="itemExtraFieldsValue Address1"><?php echo $this->item->extraFields->streetaddressone->value ?></span>
  <?php endif; ?>

Nhưng tôi có một trường là danh sách đa lựa chọn và tôi muốn kéo toàn bộ mảng thành một dòng trên trang mục của mình.

Tôi là một chút của một hack, vì vậy tôi đã bị mắc kẹt trên cái này.

8
Brian Peat

Nó phụ thuộc vào tài liệu .php mà bạn đang ở - nếu bạn đang ở trong tệp item.php hoặc tệp tin item-item.php, thì những điều sau đây sẽ hoạt động.

Trong phần đầu của tài liệu, thêm mã này:

<!-- Call to prepare extra fields --> 
<?php  
$extrafields = array();
foreach($this->item->extra_fields as $item)
{    
$extrafields[$item->id] = $item->value;
}   
?>

Sau đó, bất cứ nơi nào bạn muốn gọi giá trị của trường được điền, hãy sử dụng:

<?php if($extrafields[ID_NUMBER_OF_FIELD]!=''):?> <!-- if filled in, then call data -->
<?php echo $extrafields[ID_NUMBER_OF_FIELD];?> <!-- actual data call -->
<?php endif; ?>

tag.php hoạt động hơi khác một chút, cũng như các Mô-đun K2.

tag.php - bạn không cần thêm mã trong đầu, phần sau sẽ gọi dữ liệu trường của bạn.

<?php $extrafields = json_decode($item->extra_fields);?>
<?php foreach($extrafields as $key=>$value): ?>
<?php if($extrafields[$key]->id == 'ID_NUMBER_OF_FIELD'&&$extrafields[$key]->value!=''): ?>
<?php echo $extrafields[$key]->value; ?>,
<?php endif; ?> 
<?php endforeach; ?>

Một lần nữa, với module_k2_content, bạn không cần cuộc gọi dữ liệu hàng đầu. Nhận dữ liệu trường của bạn theo cách này:

<?php echo $item->extraFields->ALIAS_OF_FIELD->value ;?>

Mong rằng sẽ giúp.

9
Faye

Trả lời của @reactionfaye ở trên là chính xác. Để tham khảo, đây là một phần của K2 kể từ tháng 11 năm 2012 :)

Được giới thiệu lần đầu trong bài đăng trên blog này để phát hành K2 v2.6.2 ( http://getk2.org/blog/1068-k2-v262-now-av Available ):

Vì vậy, làm thế nào bạn sẽ trực tiếp xuất các trường bổ sung riêng lẻ trong phần ghi đè K2 của bạn? Đơn giản. Chỉ cần làm một cái gì đó như thế này (ví dụ: trong item.php) để có được tên trường bổ sung:

$ this-> item-> ExtraFields-> EXTRAFIELDALIASHERE-> name

Để có được giá trị trường thêm, bạn chỉ cần làm điều này:

$ this-> item-> ExtraFields-> EXTRAFIELDALIASHERE-> value

Bây giờ thay thế EXTRAFIELDALIASHERE bằng bí danh thực tế của trường bổ sung mà bạn muốn xuất ra.

1
fevangelou