2013-04-24 2 views
0

Я пытаюсь получить доступ к содержимому дополнительного поля K2 внутри плагина слайдера контента BT. Если яДоступ к дополнительным полям K2 в слайдере содержимого BT

print_r($row->extra_fields); 

Я получаю

[{"id":"16","value":"http:\/\/www.youblisher.com\/p\/611670-Test-Intro-to-R\/"}] 

Мне нужно получить доступ к значению, но я пробовал все, что я мог думать без везения.

тесты, которые я сделал (также пытался print_r за все на всякий случай):

echo $row->extra_fields[0] 
echo $row->extra_fields[0]->value 
echo $row->extra_fields->value 
echo $row->extra_fields["value"] 

ответ

3

декодировать строку в объект JSON, прежде чем пытаться получить доступ к стоимости.

<?php 
$json = json_decode('[{"id":"16","value":"http:\/\/www.youblisher.com\/p\/611670-Test- Intro-to-R\/"}]'); 
print_r($json[0]->value); 
?> 
+0

Это было быстро и совершенно точно :-) Спасибо! –

2

ОК, я получил его, работая так, как я этого хотел.

Я хотел заменить intro/full text дополнительным полем, которое я назвал «Accroche». Это дополнительное поле имеет идентификатор 132 (полезно знать идентификатор, который будет использоваться в коде ниже).

Мы будем редактировать 2 файла:

/modules/mod_bt_contentslider/classes/content.php и /modules/mod_bt_contentslider/classes/k2.php

Первое, что нужно сделать, это получить extrafield Информация из базы данных:

в /modules/mod_bt_contentslider/classes/content.php (около линии 77) я добавил [Ь] a.extra_fields, [/ б] следующим образом

$model->setState('list.select', 'a.urls, a.images, a.fulltext, a.id, a.title, a.alias, a.introtext, a.extra_fields, a.state, a.catid, a.created, a.created_by, a.created_by_alias,' . ' a.modified, a.modified_by,a.publish_up, a.publish_down, a.attribs, a.metadata, a.metakey, a.metadesc, a.access,' . ' a.hits, a.featured,' . ' LENGTH(a.fulltext) AS readmore');  

Сохранить файл & близко

Теперь давайте добраться до /modules/mod_bt_contentslider/classes/k2.php (около линии 234),

Заменить этот исходный код

// cut introtext 
     if ($limitDescriptionBy == 'word') { 

      $item->description = self::substrword($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags); 

      $item->description = self::substring($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags); 

     } 
     $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); 

// get author name & link 

С помощью этого кода, Я прокомментировал, чтобы сделать вещи понятными для нубов вроде меня;)

 // REPLACE intro/full text With extra-field info 
     $extras = json_decode($item->extra_fields); // JSON Array we'll call extras (note final 's' : not to confuse with below variable) 
     foreach ($extras as $key=>$extraField): //Get values from array 
      if($extraField->value != ''): //If not empty 
        if($extraField->id == '132'): // This is ID value for extrafield I want to show --- Search your K2 extrafield's id in Joomla backoffice ->K2 ->extrafields --- 
         if($extraField->value != ''): // If there's content in the extrafield of that ID 
          $extra = $extraField->value; //Give $extra that value so we can hand it down below 
         endif; 
        endif; 
      endif; 
     endforeach; 

     // cut introtext 
     if ($limitDescriptionBy == 'word') { 

      // $item->description = self::substrword($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags); 
      $item->description = self::substrword($extra, $maxDesciption, $replacer, $isStrips, $stringtags); 
     } else { 

      // $item->description = self::substring($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags); 
      $item->description = self::substring($extra, $maxDesciption, $replacer, $isStrips, $stringtags) ; 

     } 
     $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); 

     // get author name & link 

Как вы можете видеть, я comme в то время как я не хочу их. Вы можете изменить это, если хотите как introtext, так и extrafield.

Я бы никогда не понял это без наконечника JSON, приведенного выше. Thanx для всех :)

Надеюсь, это поможет.

Cheers!

Смежные вопросы