Основной курс по Joomla

[Решено] Доп. поля mod k2 content

0 Пользователей и 1 Гость просматривают эту тему.
  • 30 Ответов
  • 11910 Просмотров
*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
[Решено] Доп. поля mod k2 content
« : 29.05.2012, 17:03:32 »
Здрасте уважаемые форумчане! Joomla v 2.5.4, k2 v 2.5.7 (и все его родные модули), php v5.3
Решил вывести Доп. поля в нужных мне местах (а не в одном"топорном"), в списке материалов категории (реализую через родной "mod k2 content")
Гугл на моё хотение предложил вот такую статейку : Все делал по инструкции, но увы в PHP я ребенок. >:(
Результат: Fatal error: Using $this when not in object context in /home/****/public_html/****/modules/mod_k2_content/tmpl/Default/default.php on line 14
Чего делать то?))
Как все же заставить плясать доп. поля в нужных мне местах?
Да и соответственно 14-я и все окружающие ее строки в коде:
Цитировать
// no direct access
defined('_JEXEC') or die('Restricted access');
// дополнительные поля материала K2
$extrafields = array();
foreach($this->item->extra_fields as $item)
{  
$extrafields[$item->id] = $item->value;
}
?>
« Последнее редактирование: 01.06.2012, 15:05:56 от Sergoon »
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #1 : 29.05.2012, 20:09:29 »
Ну че отцы? у кого какие думы по данному вопросу?
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

AlterEgo

  • Осваиваюсь на форуме
  • ***
  • 171
  • 66
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #2 : 29.05.2012, 21:51:22 »
Вот код для вывода доп. полей. Это из default.php строки 87-97:
Код
<ul>
<?php foreach ($item->extra_fields as $extraField): ?>
   <?php if($extraField->value): ?>
   <li class="type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
      <span class="moduleItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
      <span class="moduleItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
      <div class="clr"></div>
   </li>
   <?php endif; ?>
<?php endforeach; ?>
</ul>
Чтобы этот код работал и выводил поля, он должен находится внутри цикла foreach, стр. 22.

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #3 : 30.05.2012, 12:00:55 »
Ну усё перепробовал, что то не получается.
вот код:
Код
// дополнительные поля категории K2
$extrafields = array();
if($this->item->params->get('catItemExtraFields') && count($this->item->extra_fields))
foreach($this->item->extra_fields as $item)
{   
$extrafields[$item->id] = $item->value;
}
Как его в нормальный вид привести?
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #4 : 30.05.2012, 21:00:53 »
Знает кто?
« Последнее редактирование: 31.05.2012, 13:42:25 от Sergoon »
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #5 : 31.05.2012, 14:19:27 »
Ребят ну что забыли то? тут все просто))) только я не допираю....
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

staticlight

  • Moderator
  • *****
  • 1090
  • 65
  • Staticlight
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #6 : 31.05.2012, 14:20:36 »
Вот код для вывода доп. полей. Это из default.php строки 87-97:
Код
<ul>
<?php foreach ($item->extra_fields as $extraField): ?>
   <?php if($extraField->value): ?>
   <li class="type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
      <span class="moduleItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
      <span class="moduleItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
      <div class="clr"></div>
   </li>
   <?php endif; ?>
<?php endforeach; ?>
</ul>
Чтобы этот код работал и выводил поля, он должен находится внутри цикла foreach, стр. 22.

не работает?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #7 : 31.05.2012, 16:14:00 »
этот работает..Но он и без меня работал))
как бы то что он должен находиться внутри цикла foreach я понял (ну так думаю), поля вывелись, в тех местах где надо, кроме одного. Одно поле начинает выводиться только со второго материала (например у меня поле "НОМЕР", в коде я поместил его рядом с Титлом материала, так вот рядом с первым титлом (первого материала)- пусто, а около титла второго материала поле вывелось, но сместилась последовательность. Т.е. В доп поле у первого материала я ввел "НОМЕР 1"-а оно вывелось у второго и т.д. создаю 3-й материал пишу в этом поле "НОМЕР 3"-выводится "НОМЕР 2" ).
Я так полагаю чего то не допер я до истины, либо как то код ни так переписал, либо он не там стоит.
Ещё есть такая фишка: В файле category_item.php(...components/com_k2/templates/default)  код выглядит так:
Код
 <?php if($this->item->params->get('catItemExtraFields') && count($this->item->extra_fields)): ?>
  <!-- Item extra fields -->
  <div class="catItemExtraFields">
  <h4><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></h4>
  <ul>
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value): ?>
<li class="<?php echo ($key%2)? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="catItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
<span class="catItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
</li>
<?php endif; ?>
<?php endforeach; ?>


А вот default.php  (.../modules/mod_k2_content/tmpl/Default) выглядит так:
Код
<?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
      <div class="moduleItemExtraFields">
      <b><?php echo JText::_('Additional Info'); ?></b>
      <ul>
        <?php foreach ($item->extra_fields as $extraField): ?>
<li class="type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="moduleItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
<span class="moduleItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<div class="clr"></div>
</li>
        <?php endforeach; ?>
      </ul>
      </div>
      <?php endif; ?>
По аналогии правил код который предлагается на том сайте:
Код
// дополнительные поля категории K2
$extrafields = array();
if($this->item->params->get('catItemExtraFields') && count($this->item->extra_fields))
foreach($this->item->extra_fields as $item)
{   
$extrafields[$item->id] = $item->value;
}

На вот такой:
Код
$extrafields = array();
if($params->get('ItemExtraFields') && count($this->item->extra_fields))
foreach($item->extra_fields as $item)
{   
$extrafields[$item->id] = $item->value;
}
Но как говорится открываю браузер а там х.. нарисован (простите за мой франц.)
Ребят ну поподробней, кто знает как это лечить....
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

staticlight

  • Moderator
  • *****
  • 1090
  • 65
  • Staticlight
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #8 : 31.05.2012, 16:30:40 »
Я полагаю, данное решение Вы брали с сайта Джумфанс. По идее, все, что там описано, должно работать.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #9 : 31.05.2012, 16:54:04 »
Да брал от туда, должно но как видите...
На Джумфанс написано про вывод категории через сам K2 (пункт меню), а я вывожу через mod k2 сontent, надо как то что то модернизировать)))
Кстати код который я правил по аналогии с обычным шаблоном вывода категории, не работает в том месте где сказанно на джумфанс (это если я конечно ставлю его в шаблон k2 content, через k2 не пробовал)
Код
....// no direct access
defined('_JEXEC') or die('Restricted access');

?>
Соответсвенно удалив перед этим старый код вывода екстра филдс.
Ничего не выводится.
А если ставлю в пределах цикла foreach после строки 22, выводится все доп поля, даже "НОМЕР 1" "НОМЕР 2" встали на свои места, и правильно чередуются-не все так прекрасно, перестали отображаться некоторые стандартные поля (сам текст, название категории, название материала)
В общем палка о двух концах, но в результате этих перемещений я сузил круг подозреваемых))
Теперь точно могу сказать что код на его родном месте стоять не должен, и (или) в нем какая то помарка. что то может не закрыл, не открыл....
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

SDKiller

  • Moderator
  • *****
  • 2734
  • 320
  • ...ergo sum
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #10 : 31.05.2012, 20:47:56 »
Цитировать
$extrafields = array();
if($params->get('ItemExtraFields') && count($this->item->extra_fields))
foreach($item->extra_fields as $item)
{  
$extrafields[$item->id] = $item->value;
}

Вот не надо так. У вас локальная переменная $item в модуле определена - это материал.

Вы зачем её перебиваете в цикле допполем, там непредсказуемый результат получится? Обзовите другому её

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: Доп. поля---Fatal error: Using $this.....
« Ответ #11 : 01.06.2012, 11:20:03 »
Спасибо всем! AlterEgo + за foreach! SDKiller ну тут слов нет)) четыре дня тупизма перед монитором, половина головы седая, вторую плеш проела. Как плохо быть тупы и хорошо оставаться дотошным)) + SDKiller не попробовав ваш способ минуты три смотрел на ваше сообщение с улыбкой и понял что он точно будет работать))) плюсовал бы до бесконечности)))
В итоге так:
1.
Код
<?php 
   if($params->get('ItemExtraFields') && count($item->extra_fields));
        foreach ($item->extra_fields as $extr):{   
$extrafields[$extr->id] = $extr->value;
}
  $extraField=array();
?>
        <?php endforeach; ?>

вставляем это после строки 22-23
Код
 <?php foreach ($items as $key=>$item):	?>
    <li class="<?php echo ($key%2)? "odd" : "even"; if(count($items)==$key%2) echo ' lastItem'; ?>">

Удаляем старую запись у меня она в родном коде на строках с 84 по 99
Код
 <?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
      <div class="moduleItemExtraFields">
      <b><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></b>
      <ul>
        <?php foreach ($item->extra_fields as $extraField): ?>
<?php if($extraField->value): ?>
<li class="type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="moduleItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
<span class="moduleItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<div class="clr"></div>
</li>
<?php endif; ?>
        <?php endforeach; ?>
      </ul>
      </div>
      <?php endif; ?>

 и вставляем код вывода в любое нужное вам место:
Код
<?php if($extrafields[1]): ?>
<div class="ТУТ КЛАСС">
<?php echo $extrafields[1];?>
</div>
<?php endif; ?>
Где "1" -id дополнительного поля.
-------это инструкция для вывода дополнительных полей (в любом нужном месте) в списке материалов категории, выводимых через модуль mod k2 content
берите кому надо!
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

kalibrs

  • Захожу иногда
  • **
  • 20
  • 5
Re: [Решено] Доп. поля mod k2 content
« Ответ #12 : 07.06.2012, 18:37:54 »
Каким образом добавить такой же вывод дополнительных полей в файл item.php

Вместо вывода Похожая продукция (по тегу)

место вывода в файле это стр. 440 - 515 у меня

как после этого момента вставить
Код: php

<?php if($this->item->params->get('itemRelated') && isset($this->relatedItems)): ?>
<!-- Related items by tag -->
<div class="itemRelated">
<h3><?php echo JText::_("K2_RELATED_ITEMS_BY_TAG"); ?></h3>
<ul>
<?php foreach($this->relatedItems as $key=>$item): ?>
<li class="<?php echo ($key%2)? "odd" : "even"; ?>">

                               <?php if($this->item->params->get('itemRelatedTitle', 1)): ?>
<a class="itemRelTitle" href="<?php echo $item->link ?>">

/* <!--  Tut vyvod dopolnitelnykh polyei  --> */

<?php if($this->item->params->get('itemRelatedImageSize')): ?>
                     <img style="width:<?php echo $item->imageWidth; ?>px;height:auto;" class="itemRelImg" src="<?php echo $item->image; ?>" alt="<?php K2HelperUtilities::cleanHtml($item->title); ?>" />
                <?php endif; ?>

                <div class="clr"></div>
                <span><?php echo $item->title; ?></span></a>
                <?php endif; ?>
                     
                        </li>
                       <?php endforeach; ?>
                       <li class="clr"></li>
                   </ul>
             <div class="clr"></div>
        </div>
<?php endif; ?>

*

improvizer

  • Осваиваюсь на форуме
  • ***
  • 39
  • 1
Re: Доп. поля: вывод одного поля. !
« Ответ #13 : 17.08.2012, 05:49:30 »
Подскажите, как можно вывести 1-но доп. из группы доп. полейполе по его id в любом месте материала. т.е. выводится не или 1-но поле по id, или по стандару группа включая в себя это же поле, а группа и поле отдельно друг от друга?

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: [Решено] Доп. поля mod k2 content
« Ответ #14 : 17.08.2012, 13:07:40 »
Так всеж написано двумя постами выше, эти изменения тебе надо внести в файл item.php (шаблона категории)
Код
// дополнительные поля материала K2
$extrafields = array();
foreach($this->item->extra_fields as $extr)
{   
$extrafields[$extr->id] = $extr->value;
}

это после строк (у меня 10-11)
Код
// no direct access
defined('_JEXEC') or die('Restricted access');
дальше в то место куда вам надо вставляем:
Код
<div>
<?php if($extrafields[1]): ?>
<span class="extra">
<?php echo $extrafields[1];?>
<?php endif; ?>
</div>
[1] -это ID вашего доп поля, его можно узнать в списке доп полей в админке к2
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

improvizer

  • Осваиваюсь на форуме
  • ***
  • 39
  • 1
Re: [Решено] Доп. поля mod k2 content
« Ответ #15 : 17.08.2012, 15:14:55 »
тогда материяле другой категории, где не присвоены доп. поля появляется вот: Warning: Invalid argument supplied for foreach() in Z:\home\localhost\www\start3\templates\zt_opis17\html\com_k2\templates\zootemplate\item.php on line 15

*

Sergoon

  • Осваиваюсь на форуме
  • ***
  • 69
  • 0
Re: [Решено] Доп. поля mod k2 content
« Ответ #16 : 17.08.2012, 15:42:20 »
Ясно дело, вы же используете один шаблон для категории, а ошибку показывают те категории в которых таких доп. полей нет. Создайте для этой категории новый шаблон и в нем изменяйте чего угодно.
Internet explorer-это такая программа,при помощи каторой можно зайти на сайт опера ру и скачать себе браузер..

*

SDKiller

  • Moderator
  • *****
  • 2734
  • 320
  • ...ergo sum
Re: [Решено] Доп. поля mod k2 content
« Ответ #17 : 19.08.2012, 07:53:41 »
Ясно дело, вы же используете один шаблон для категории, а ошибку показывают те категории в которых таких доп. полей нет. Создайте для этой категории новый шаблон и в нем изменяйте чего угодно.

Лучше дополнить проверкой на непустой массив - будет корректнее.

*

Vasiok

  • Осваиваюсь на форуме
  • ***
  • 28
  • 0
Re: [Решено] Доп. поля mod k2 content
« Ответ #18 : 05.10.2012, 06:47:36 »
Лучше дополнить проверкой на непустой массив - будет корректнее.
Подскажите пожалуйста как дополнить проверку на непустой массив в этом случае.[/b]

*

polyakoffff

  • Новичок
  • *
  • 3
  • 0
RE: Доп. поля mod k2 content
« Ответ #19 : 21.12.2012, 21:29:53 »
подскажите пожалуйста, может кто сталкивался, как в News Show SP2 добавить случайный вывод (random)?

*

shokir

  • Осваиваюсь на форуме
  • ***
  • 56
  • 0
RE: Доп. поля mod k2 content
« Ответ #20 : 22.01.2013, 18:08:17 »
Подскажите пожалуйста как дополнить проверку на непустой массив в этом случае.[/b]
Интересует этот же вопрос, ну как разобрался? если да укажи на правильный путь плз)

*

shokir

  • Осваиваюсь на форуме
  • ***
  • 56
  • 0
RE: Доп. поля mod k2 content
« Ответ #21 : 22.01.2013, 19:22:36 »
А можно ли такое реализовать для News show gk4 ?

*

e.lodyanov

  • Осваиваюсь на форуме
  • ***
  • 125
  • 4
RE: Доп. поля mod k2 content
« Ответ #22 : 23.01.2013, 18:46:36 »
А можно ли такое реализовать для News show gk4 ?
Поддерживаю вопрос! Кто понимает, помогите пожалуйста. Буду очень благодарен $

*

avantus

  • Новичок
  • *
  • 5
  • 0
RE: Доп. поля mod k2 content
« Ответ #23 : 19.06.2013, 07:27:16 »
Интересует можно ли как-то вывести значение дополнительного поля материала на странице категории, например. Или вобщем, в любом месте?

*

e.lodyanov

  • Осваиваюсь на форуме
  • ***
  • 125
  • 4
Re: Доп. поля mod k2 content
« Ответ #24 : 19.06.2013, 15:06:40 »
Интересует можно ли как-то вывести значение дополнительного поля материала на странице категории, например. Или вобщем, в любом месте?
В новых версиях этот способ

*

e.lodyanov

  • Осваиваюсь на форуме
  • ***
  • 125
  • 4
Re: Доп. поля mod k2 content
« Ответ #25 : 19.06.2013, 15:08:52 »
Интересует можно ли как-то вывести значение дополнительного поля материала на странице категории, например. Или вобщем, в любом месте?
В старых этот правила форума
« Последнее редактирование: 19.06.2013, 15:13:45 от SDKiller »

*

wedford

  • Захожу иногда
  • **
  • 22
  • 2
Re: Доп. поля mod k2 content
« Ответ #26 : 03.10.2013, 11:50:29 »
Знаю, что есть несколько веток с моим вопросом, но все остались без ответа. Как вывести пагинацию в mod_k2_content?
Делал по аналогии с http://joomlaforum.ru/index.php/topic,232618.0.html не получилось ругается на Using $this when not in object context
« Последнее редактирование: 03.10.2013, 13:13:39 от wedford »

*

Dobreff

  • Давно я тут
  • ****
  • 214
  • 5
Re: Доп. поля mod k2 content
« Ответ #27 : 09.04.2015, 16:36:26 »
Del

*

jiva

  • Захожу иногда
  • **
  • 21
  • 0
RE: Доп. поля mod k2 content
« Ответ #28 : 06.07.2015, 13:51:20 »
H
Спасибо всем! AlterEgo + за foreach! SDKiller ну тут слов нет)) четыре дня тупизма перед монитором, половина головы седая, вторую плеш проела. Как плохо быть тупы и хорошо оставаться дотошным)) + SDKiller не попробовав ваш способ минуты три смотрел на ваше сообщение с улыбкой и понял что он точно будет работать))) плюсовал бы до бесконечности)))
В итоге так:
1.
Код
<?php 
   if($params->get('ItemExtraFields') && count($item->extra_fields));
        foreach ($item->extra_fields as $extr):{   
$extrafields[$extr->id] = $extr->value;
}
  $extraField=array();
?>
        <?php endforeach; ?>

вставляем это после строки 22-23
Код
 <?php foreach ($items as $key=>$item):	?>
    <li class="<?php echo ($key%2)? "odd" : "even"; if(count($items)==$key%2) echo ' lastItem'; ?>">

Удаляем старую запись у меня она в родном коде на строках с 84 по 99
Код
 <?php if($params->get('itemExtraFields') && count($item->extra_fields)): ?>
      <div class="moduleItemExtraFields">
      <b><?php echo JText::_('K2_ADDITIONAL_INFO'); ?></b>
      <ul>
        <?php foreach ($item->extra_fields as $extraField): ?>
<?php if($extraField->value): ?>
<li class="type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="moduleItemExtraFieldsLabel"><?php echo $extraField->name; ?></span>
<span class="moduleItemExtraFieldsValue"><?php echo $extraField->value; ?></span>
<div class="clr"></div>
</li>
<?php endif; ?>
        <?php endforeach; ?>
      </ul>
      </div>
      <?php endif; ?>

 и вставляем код вывода в любое нужное вам место:
Код
<?php if($extrafields[1]): ?>
<div class="ТУТ КЛАСС">
<?php echo $extrafields[1];?>
</div>
<?php endif; ?>
Где "1" -id дополнительного поля.
-------это инструкция для вывода дополнительных полей (в любом нужном месте) в списке материалов категории, выводимых через модуль mod k2 content
берите кому надо!



Работает не совсем корректно, да значения выводятся в mod_k2_content, но если доп поле не заполнено выводятся предыдущие значения заполненного поля, более понятно на картинке http://take.ms/etrTD

*

terr

  • Живу я здесь
  • ******
  • 827
  • 8
  • Ученик html-я
RE: Доп. поля mod k2 content
« Ответ #29 : 10.10.2016, 13:23:23 »
кто знает как выбрать несколько категорий доп полей в 1 категории?
Да какова к....я оно не пашет, будем страдать и пытать дальше