Новости Joomla

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

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
Такое впечатление, что на форуме общаюсь сам с собой.  Этот код нужно вставить в last_item.php, если вы хотите что бы дополнительные поля выводились.
Например, если у вас 10 дополнительных полей, а нужно выводить только значение поля  "Цена", то пригодится этот код:

Код
<?php $this->item->extra_fields = K2ModelItem::getItemExtraFields($this->item->extra_fields); ?>
     <!-- Item extra fields -->
 <div class="itemExtraFieldsLast">
            <?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php /* info */; ?>
                        <?php
                        $emptyValue = false;
                        switch ($extraField->type) {
                                case "textfield":
                                case "textarea":
                                        if ($extraField->value =="") $emptyValue = true;
                                break;
                                case "link":
                                        if (strpos($extraField->value,"\"http://\"")) $emptyValue = true;
                                break;
                                case "radio":
                                break;
                                case "multipleSelect":
                                        // Test already done by K2. If value is empty, this type of field does not appear.
                                break;
                                case "select":
                                        // This type of field can't have an empty value (first item select by default)
                                break;
                        }
                        ?>
                        <?php if (!$emptyValue): ?>
                        <?php //echo $extraField->name; ?>
                            <?php if ($extraField->name=="Цена"): ?>
                                   <span class="itemExtraFieldsLastLabel"><?php echo $extraField->name; ?>:</span>
                                  <span class="itemExtraFieldsLastValue"><?php echo $extraField->value; ?></span>
                             <?php endif; ?>
                        <?php endif; ?>
                <?php endforeach; ?>
                 <div class="clr"></div>
             <?php if ($this->item->params->get('latestItemReadMore')): ?>
             <!-- Item "read more..." link -->
             <div class="latestItemReadMore">
             <a class="k2ReadMore" href="<?php echo $this->item->link; ?>">
             <?php echo JText::_('Read more...'); ?>
             </a>
                  <div class="clr"></div>
             </div>
             <?php endif; ?>
      </div>
      <div class="clr"></div>
Такой вариант конечно не подходит уже к версии K2 v2.6.2. Joomla 2.5.8. У меня ошибка.
Может кто-нибудь подправит его или предложит свой? Буду очень благодарен.
*

UtherTG

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Что-то вы изобретаете велосипед с этими полями. Щас дам выдержку из своего кода.

Это относится к тому, чтобы выводить тока нужный экстра филд:

Вписываем функцию, чтобы прочесть все экстра филды и записать их в массив
Код
	  <!-- Call to prepare extra fields --> 
<?php  
//convertArray to use ids as key
$extrafields = array();
foreach($this->item->extra_fields as $item)
{    
$extrafields[$item->id] = $item->value;
}  
?>

Дальше в любом месте кода выводим нужный экстрафилд
Код
<?php echo $extrafields[id];?>
ID заменяем на ID вашего поля.

Вуаля.

В итоге мы получили возможность без постоянных переборов вызывать нужное нам поле. Будь то цена или какие-то характеристики айтема. Если нужно несколько полей - вызываем несколько. И не парьтесь за odd и even. Сразу нужно удалять это упоротое отображение и делать свое.
« Последнее редактирование: 24.01.2013, 11:14:16 от UtherTG »
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
Что-то вы изобретаете велосипед с этими полями. Щас дам выдержку из своего кода.

Это относится к тому, чтобы выводить тока нужный экстра филд:

Вписываем функцию, чтобы прочесть все экстра филды и записать их в массив
Код
	  <!-- Call to prepare extra fields --> 
<?php 
//convertArray to use ids as key
$extrafields = array();
foreach($this->item->extra_fields as $item)
{   
$extrafields[$item->id] = $item->value;
}   
?>

Дальше в любом месте кода выводим нужный экстрафилд
Код
<?php echo $extrafields[id];?>
ID заменяем на ID вашего поля.

Вуаля.

В итоге мы получили возможность без постоянных переборов вызывать нужное нам поле. Будь то цена или какие-то характеристики айтема. Если нужно несколько полей - вызываем несколько. И не парьтесь за odd и even. Сразу нужно удалять это упоротое отображение и делать свое.

Не получается, пишет ошибку Warning: Invalid argument supplied for foreach() in Z:\home\abdulla-01-13\www\templates\gk_black_and_white\html\com_k2\templates\default\latest_item.php on line 91

Меняю файл latest_item.php, для отображения последних добавленных материалов
« Последнее редактирование: 24.01.2013, 16:33:28 от e.lodyanov »
*

chilly_bang

  • Захожу иногда
  • 113
  • 1 / 1
@e.lodyanov добавь в файл latest_item.php
Код: php
<?php error_reporting(0);?>

a я незаполненные поля так скрываю:

Код: php
<?php if(isset($extrafields['22']) === true  && empty($extrafields['22']) === false): ?>
<?php echo $extrafields['22']; ?>
<?php endif; ?>
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
@e.lodyanov добавь в файл latest_item.php
Код: php
<?php error_reporting(0);?>

a я незаполненные поля так скрываю:

Код: php
<?php if(isset($extrafields['22']) === true  && empty($extrafields['22']) === false): ?>
<?php echo $extrafields['22']; ?>
<?php endif; ?>
Ок, попробую отпишусь
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
Ошибка скрылась, но поля как не отображались, так и не отображаются!
*

chilly_bang

  • Захожу иногда
  • 113
  • 1 / 1
это
Код: php
<?php
$extrafields = array();
foreach($this->item->extra_fields as $item)
{ $extrafields[$item->id] = $item->value; }
  ?>
должно быть в шаблоне перед тем, как вызываются поля тем образом, что я написал. есть?
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
это
Код: php
<?php
$extrafields = array();
foreach($this->item->extra_fields as $item)
{ $extrafields[$item->id] = $item->value; }
  ?>
должно быть в шаблоне перед тем, как вызываются поля тем образом, что я написал. есть?
Да, конечно.
*

chilly_bang

  • Захожу иногда
  • 113
  • 1 / 1
Цитировать
поля как не отображались, так и не отображаются!
вот и хорошо. значит, всё работает. цель-то какая? скрыть незаполненное поле. если ничего не видно, значит поле скрыто;)
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
вот и хорошо. значит, всё работает. цель-то какая? скрыть незаполненное поле. если ничего не видно, значит поле скрыто;)
Да нее)) задача вывести доп. поля. У меня они не отображаются, а надо вывести в "последние добавленные" latest_item.php
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
вот и хорошо. значит, всё работает. цель-то какая? скрыть незаполненное поле. если ничего не видно, значит поле скрыто;)
Ну что, подскажите как вывести доп. поля в latest_item.php?
Кстати, такая же проблема и в результатах поиска по сайту и фильтрации JA K2 Filter and Search. Не выводятся доп. поля. Не знаете как решить эту проблему?
*

UtherTG

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Давай сначала. 91 линия кода - что именно?

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

Тоесть ты ставишь в блок
Код
	  <!-- K2 Plugins: K2BeforeDisplayContent -->
 <?php echo $this->item->event->K2BeforeDisplayContent; ?>
Там ты подготовил поля.

А потом в месте, где тебе нужно вызвать поле - зовешь поле.

Но заметь! Некоторые дивы выводятся ТОЛЬКО если у тебя выполняется условие. Приведу пример:
Код
	  <?php if($this->item->params->get('latestItemIntroText')): ?>
 <!-- Item introtext -->
 <div class="latestItemIntroText">
  <?php echo $this->item->introtext; ?>
 </div>
 <?php endif; ?>
Если ты вставишь экстрафилд в середину этого дива с интротекстом - то тебе нужно включить в настройках отображения этот интротекст. Иначе div просто не будет отображаться.

Проверь код, может лишнее что удалил.

Если после этой проверки не будет запускаться - скинь мне в личку весь код.
« Последнее редактирование: 29.01.2013, 10:13:15 от UtherTG »
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
Все так и делал, все равно ошибка.
Ничего не удалял, проверил.
Ругается на строчку foreach($this->item->extra_fields as $item)
Высылаю код в личку
*

UtherTG

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Кароче покопался я в настройках к2. На сколько я понял, он не понимает переменную extra_fields в lastest_item. Я на столько далеко не лазил в код модуля, чтобы разобраться на какой стадии он назначает пути к переменным. Потому что в айтеме и айтем листе все прописывается без проблем.

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

Могу предложить описать задачу.. Некоторые можно решить не через lastest а через featured айтемы..
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
Кароче покопался я в настройках к2. На сколько я понял, он не понимает переменную extra_fields в lastest_item. Я на столько далеко не лазил в код модуля, чтобы разобраться на какой стадии он назначает пути к переменным. Потому что в айтеме и айтем листе все прописывается без проблем.

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

Могу предложить описать задачу.. Некоторые можно решить не через lastest а через featured айтемы..
В принципе, через избранные, тоже подойдет вариант.
У меня еще одна проблема, не выводятся доп. поля в результатах поиска. Перерыл кучу форумов. Не знаете как заставить?
*

UtherTG

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Я на своих проектах не ставил поиск.. В феврале буду делать фильтры на одном. Только тогда начну смотреть как вообще это работает все.

Тут вопрос заключается в том какой модуль для поиска вы используете. Я собирался ставить
 
http://extensions.joomla.org/extensions/extension-specific/k2-extensions/19333

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

А если используется какой-то другой поиск, то нужно смотреть написан ли он для к2. Потому что обычный джумловский вообще не поймет что такое extra_fields. Это в любом случае нужно отдельно прописывать и завязывать с sql.
« Последнее редактирование: 30.01.2013, 09:37:12 от UtherTG »
*

e.lodyanov

  • Захожу иногда
  • 126
  • 4 / 0
Я на своих проектах не ставил поиск.. В феврале буду делать фильтры на одном. Только тогда начну смотреть как вообще это работает все.

Тут вопрос заключается в том какой модуль для поиска вы используете. Я собирался ставить
 
http://extensions.joomla.org/extensions/extension-specific/k2-extensions/19333

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

А если используется какой-то другой поиск, то нужно смотреть написан ли он для к2. Потому что обычный джумловский вообще не поймет что такое extra_fields. Это в любом случае нужно отдельно прописывать и завязывать с sql.
Я уже думал насчет него, и как раз нашелся человек, который тоже хочет его взять. Так что я на нем останавливаюсь и приобретаю на днях. Вышлю Вам по е-мэйл.
*

UtherTG

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Отлично. Половину стоимости отдам =)
*

waterfly

  • Захожу иногда
  • 83
  • 0 / 0
Подскажите, как запретить вывод в общей группе полей, одного конкретного поля, которое отображается в другой части шаблона.
Пробую такое условие, не получается.

Код
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php if($extraField->value): ?>

<?php if(isset($extrafields['45']) === false ): ?>

<dt class="moduleItemExtraFieldsLabel_<?php echo $extraField->id; ?>"><?php echo $extraField->name; ?>:</dt>
<dd><div class="moduleItemExtraFieldsValue_<?php echo $extraField->id; ?>"><?php echo $extraField->value; ?></div></dd>

<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Видны, но неактивны доп поля с front end

Автор grizlik

Ответов: 0
Просмотров: 1445
Последний ответ 02.04.2019, 20:15:08
от grizlik
Дополнительные поля в разных местах шаблона

Автор stanislav-1983

Ответов: 6
Просмотров: 4000
Последний ответ 12.09.2015, 14:25:01
от Eholov
Добавить дополнительные мета теги к К2-статье и наполнить их значениями доп. полей

Автор chilly_bang

Ответов: 0
Просмотров: 1302
Последний ответ 14.01.2013, 22:37:17
от chilly_bang