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


8

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.

Câu trả lời:


9

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.


Tôi đang ở trong item.php và điều đó hoàn toàn hiệu quả. Cảm ơn bạn!
Brian Peat

Không vấn đề gì!!! Tôi đã dành nhiều giờ để tìm ra điều này, vui mừng vì nó có thể giúp đỡ người khác.
Faye

FYI, mã đó ban đầu được viết cho tôi bởi Jordan. Anh ấy cũng ở đây, anh ấy biết những thứ tuyệt vời và khiến mọi thứ hoạt động với tôi khi tôi trông như sắp khóc. j Joomla.stackexchange.com/users/75/jordan-ramstad
Faye

1

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 có thể 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 thêm:

$ 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.


-3

Điều này có thể được thực hiện với ghi đè ngôn ngữ ngay bây giờ, Tránh ghi đè lên bản hack của bạn khi bạn nâng cấp K2. Tìm hằng số K2_DATE_FORMAT_LC

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.