Форум русской поддержки Joomla!® CMS
03.12.2016, 04:28:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 10524 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sergoon
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« : 29.05.2012, 15:03:32 »

Здрасте уважаемые форумчане! Joomla v 2.5.4, k2 v 2.5.7 (и все его родные модули), php v5.3
Решил вывести Доп. поля в нужных мне местах (а не в одном"топорном"), в списке материалов категории (реализую через родной "mod k2 content")
Гугл на моё хотение предложил вот такую статейку : Все делал по инструкции, но увы в PHP я ребенок. Angry
Результат: 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, 13:05:56 от Sergoon » Записан
Sergoon
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #1 : 29.05.2012, 18:09:29 »

Ну че отцы? у кого какие думы по данному вопросу?
Записан
AlterEgo
Осваиваюсь на форуме
***

Репутация: +71/-5
Offline Offline

Пол: Мужской
Сообщений: 173



« Ответ #2 : 29.05.2012, 19: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
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #3 : 30.05.2012, 10: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;
}
Как его в нормальный вид привести?
Записан
Sergoon
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #4 : 30.05.2012, 19:00:53 »

Знает кто?
« Последнее редактирование: 31.05.2012, 11:42:25 от Sergoon » Записан
Sergoon
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #5 : 31.05.2012, 12:19:27 »

Ребят ну что забыли то? тут все просто))) только я не допираю....
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #6 : 31.05.2012, 12: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.

не работает?
Записан
Sergoon
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #7 : 31.05.2012, 14: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;
}
Но как говорится открываю браузер а там х.. нарисован (простите за мой франц.)
Ребят ну поподробней, кто знает как это лечить....
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #8 : 31.05.2012, 14:30:40 »

Я полагаю, данное решение Вы брали с сайта Джумфанс. По идее, все, что там описано, должно работать.
Записан
Sergoon
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #9 : 31.05.2012, 14:54:04 »

Да брал от туда, должно но как видите...
На Джумфанс написано про вывод категории через сам K2 (пункт меню), а я вывожу через mod k2 сontent, надо как то что то модернизировать)))
Кстати код который я правил по аналогии с обычным шаблоном вывода категории, не работает в том месте где сказанно на джумфанс (это если я конечно ставлю его в шаблон k2 content, через k2 не пробовал)
Код:
....// no direct access
defined('_JEXEC') or die('Restricted access');

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

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #10 : 31.05.2012, 18: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
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #11 : 01.06.2012, 09: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
берите кому надо!
Записан
kalibrs
Захожу иногда
**

Репутация: +5/-0
Offline Offline

Сообщений: 18


« Ответ #12 : 07.06.2012, 16:37:54 »

Каким образом добавить такой же вывод дополнительных полей в файл item.php

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

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

как после этого момента вставить
Код
 
<?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
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 39


« Ответ #13 : 17.08.2012, 03:49:30 »

Подскажите, как можно вывести 1-но доп. из группы доп. полейполе по его id в любом месте материала. т.е. выводится не или 1-но поле по id, или по стандару группа включая в себя это же поле, а группа и поле отдельно друг от друга?
Записан
Sergoon
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #14 : 17.08.2012, 11: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
Записан
improvizer
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 39


« Ответ #15 : 17.08.2012, 13: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
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Пол: Мужской
Сообщений: 69



« Ответ #16 : 17.08.2012, 13:42:20 »

Ясно дело, вы же используете один шаблон для категории, а ошибку показывают те категории в которых таких доп. полей нет. Создайте для этой категории новый шаблон и в нем изменяйте чего угодно.
Записан
SDKiller
Moderator
*****

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #17 : 19.08.2012, 05:53:41 »

Ясно дело, вы же используете один шаблон для категории, а ошибку показывают те категории в которых таких доп. полей нет. Создайте для этой категории новый шаблон и в нем изменяйте чего угодно.

Лучше дополнить проверкой на непустой массив - будет корректнее.
Записан
Vasiok
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 28


« Ответ #18 : 05.10.2012, 04:47:36 »

Лучше дополнить проверкой на непустой массив - будет корректнее.
Подскажите пожалуйста как дополнить проверку на непустой массив в этом случае.[/b]
Записан
polyakoffff
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #19 : 21.12.2012, 19:29:53 »

подскажите пожалуйста, может кто сталкивался, как в News Show SP2 добавить случайный вывод (random)?
Записан
shokir
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 56


« Ответ #20 : 22.01.2013, 16:08:17 »

Подскажите пожалуйста как дополнить проверку на непустой массив в этом случае.[/b]
Интересует этот же вопрос, ну как разобрался? если да укажи на правильный путь плз)
Записан
shokir
Осваиваюсь на форуме
***

Репутация: +1/-1
Offline Offline

Сообщений: 56


« Ответ #21 : 22.01.2013, 17:22:36 »

А можно ли такое реализовать для News show gk4 ?
Записан
e.lodyanov
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Сообщений: 125


« Ответ #22 : 23.01.2013, 16:46:36 »

А можно ли такое реализовать для News show gk4 ?
Поддерживаю вопрос! Кто понимает, помогите пожалуйста. Буду очень благодарен $
Записан
avantus
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #23 : 19.06.2013, 05:27:16 »

Интересует можно ли как-то вывести значение дополнительного поля материала на странице категории, например. Или вобщем, в любом месте?
Записан
e.lodyanov
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Сообщений: 125


« Ответ #24 : 19.06.2013, 13:06:40 »

Интересует можно ли как-то вывести значение дополнительного поля материала на странице категории, например. Или вобщем, в любом месте?
В новых версиях этот способ
Записан
e.lodyanov
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Сообщений: 125


« Ответ #25 : 19.06.2013, 13:08:52 »

Интересует можно ли как-то вывести значение дополнительного поля материала на странице категории, например. Или вобщем, в любом месте?
В старых этот правила форума
« Последнее редактирование: 19.06.2013, 13:13:45 от SDKiller » Записан
wedford
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 22



« Ответ #26 : 03.10.2013, 09:50:29 »

Знаю, что есть несколько веток с моим вопросом, но все остались без ответа. Как вывести пагинацию в mod_k2_content?
Делал по аналогии с http://joomlaforum.ru/index.php/topic,232618.0.html не получилось ругается на Using $this when not in object context
« Последнее редактирование: 03.10.2013, 11:13:39 от wedford » Записан
Dobreff
Давно я тут
****

Репутация: +8/-4
Offline Offline

Сообщений: 212


« Ответ #27 : 09.04.2015, 15:36:26 »

Del
Записан
jiva
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 18


« Ответ #28 : 06.07.2015, 12: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
Живу я здесь
******

Репутация: +14/-6
Offline Offline

Пол: Мужской
Сообщений: 830


Ученик html-я


« Ответ #29 : 10.10.2016, 12:23:23 »

кто знает как выбрать несколько категорий доп полей в 1 категории?
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet