Новости Joomla

Свои типы полей в Joomla.

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note" name="your_note_for_user" label="Заголовок примечания" title="Альтернативный способ для заголовка" description="Текст примечания" class="col-12 alert alert-info" heading="h1" close="true" />

heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён. Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле

<field type="systempluginstatus" name="systempluginstatus" addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>

-

type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:

<?php // namespace для атрибута addfieldprefix namespace Joomla\Module\Wtquicklinks\Site\Fields; // нельзя напрямую обращаться к этому файлу defined('_JEXEC') or die; // подключаем родительский класс для переопределения use Joomla\CMS\Form\Field\NoteField; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\PluginHelper; // имя класса и имя файла точь-в-точь class SystempluginstatusField extends NoteField { protected $type = 'Systempluginstatus'; protected function getLabel() { // если плагин не включён if(PluginHelper::isEnabled('system','wtquicklinks')) { // меняем свойства родительского класса $this->class = 'alert alert-danger w-100'; $this->element['label'] = '⚠️ А-а-а-а!'; $this->element['description'] = 'Плагин не включён!!'; // и просто рендерим его с нашими свойствами return parent::getLabel(); } // А иначе всё хорошо, скрываем поле из виду. $this->parentclass = 'd-none'; return ''; } }

Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает. @webtolkru#joomla #php #webdev #разработка

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

Askold Oksentenko

  • Новичок
  • 8
  • 0 / 0
Нашел на просторах Интернета интересный модуль Фильтра товаров по его типам. Меня он полностью устраивает, но некоторый его функционал не работает.
В общем, выглядит он так:

В админке:

Принцип действия: он появляется при заходе в категорию товаров и подтягивает товары этой категории, сортирую их по их типам.

Проблем несколько:
1)не работает мультивыбор параметров сортировки (если включен, товары не отображаются даже при выборе одного параметра);
2)Показывает все типы товаров, не зависимо от категории (хотелось бы, чтобы показывал только те, которые есть в выбранной категории);
3)В админке Select product type не работает Select all (приходится пользоваться Ctrl для выделения всех типов);
4)При отображении указывает неправильное кол-во товаров в каждом параметре (цифры в скобках);
5)Хотелось бы добавить сортировку по цене от и до, а также чекбокс возле каждого параметра.

Сам в программировании не разбираюсь по-этому прошу помощи у форумчан. По завершении всех модернизаций модулем поделюсь со всеми желающими.
Вот сам модуль:
mod_IceVmFilter_V.1.0.0.zip
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #1 : 24.06.2011, 16:29:57 »
Я на базе этого модуля так сделал:
www.nasos4you.com.ua/shop/категория/12/насосы-бытовые-для-водоснабжения/насосные-станции.html

Но там правки не только в модуле, а в шаблоне есть, чтобы решить, например, п.2

Именно то?
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Askold Oksentenko

  • Новичок
  • 8
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #2 : 24.06.2011, 16:33:41 »
Оно самое! С п.2 самая загвоздка, т.к он мне наиболее важен. Как это сделать?
« Последнее редактирование: 24.06.2011, 16:37:00 от Askold Oksentenko »
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #3 : 24.06.2011, 17:24:38 »
1. Файл /modules/mod_ice_vmfilter/helper.php в  прицепе.
Мои правки обозначены ##my

2. Ставишь http://www.nonumber.nl/extensions/modulesanywhere

3. Поставить и опубликовать приаттаченный модуль в позицию search_manufacturers

4.. Далее у меня очень под себя заточено. потому попробую упростить прям здесь:

Поясню для понимания. Эта контсрукция вытягивает значение из /components/com_virtuemart/themes/YOURTHEME/theme.xml
Код
$this->get_cfg( 'flypage_manufacturer_name')
Т.е. в /components/com_virtuemart/themes/YOURTHEME/theme.xml я добавил
Код
<param name="flypage_manufacturer_name" type="text" default="" label="Manufacturer name." description="additional language variable">
чтобы из админки шаблона указывать некоторые переменные.
Т.е. вместо подобной конструкции можешь в ниже представленном коде вписывать конкретные значения, но тогда они будут зашиты в код.

components/com_virtuemart/themes/YOURTHEME/templates/browse/includes/browse_notables.tpl.php

вместо
Код
<?php echo $parameter_form // The Parameter search form ?>

такое
Код
<?php /*##my##2011-01-26 02:15:29 { Comment it because I use my own form above
//It was:
<?php echo $parameter_form // The Parameter search form ?>
//It became: */?>
<?php /*##my##2011-01-26 02:15:29 } */ ?>
<?php /*##my#2010-12-09 14:31:32 { Add manufacturer module */
$Itemid = JRequest::getVar('Itemid');
$sess = new ps_session;
$link = 'option=com_virtuemart&page=shop.browse&category_id='.$category_id.'&Itemid='.$Itemid;

ob_start();
new ps_product_category;
$products_in_category = ps_product_category::product_count($category_id);
//Show search forms only if there are products in the category
// count( $products ) shows the number of search result products, but not really present in category
if ($products_in_category >0 ) {
echo '<div class="choose_product"><h4 class="mf">'.$this->get_cfg( 'flypage_manufacturer_name').'</h4>'.vmCommonHTML::ParseContentByPlugins( "{loadposition search_manufacturers}").'</div>';
$db = new ps_DB;
// Get Product Types
$q =  "SELECT DISTINCT types.product_type_id FROM `#__{vm}_product_category_xref` AS cats ";
$q .= "LEFT JOIN `#__{vm}_product_product_type_xref` AS types ";
$q .= "ON cats.product_id = types.product_id ";
$q .= "LEFT JOIN `#__{vm}_product_type` AS t ";
$q .= "ON types.product_type_id = t.product_type_id ";
$q .= "where `category_id`='".$category_id."' ";
$q .= "AND t.`product_type_name` NOT LIKE '*%' ";
$db->query($q);
$type_ids = $db->loadResultArray();
$parameter_search_module_id = $this->get_cfg( 'parameter_search_module_id');//id mod ice vm filter
/*
foreach  ($type_ids as $type_id) {
echo '<div class="choose_product">'.vmCommonHTML::ParseContentByPlugins( "{module ".$parameter_search_module_id."|product_type_id=".$type_id."}").'</div>';
}
*/
$type_ids = implode('\|',$type_ids);
echo '<div class="choose_product">'.vmCommonHTML::ParseContentByPlugins( "{module ".$parameter_search_module_id."|producttypes=".$type_ids."}").'</div>';
}
$out = ob_get_contents();
ob_get_clean();
if (!empty($out)) {
echo '<a class="cancel_filters" href= "'.$link = $sess->url( $link ).'" >'.JText::_('Отменить фильтры').'</a>';
echo $out;
}
/* ##my#2010-12-09 14:31:32 } */ ?>

[вложение удалено Администратором]
« Последнее редактирование: 24.06.2011, 17:28:50 от Gruz »
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Askold Oksentenko

  • Новичок
  • 8
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #4 : 24.06.2011, 21:30:19 »
Вообще перестало отображать типы товаров в фильтре...( и в хелпере в 93й строке ошибочка. У меня из-за нее сайт не грузился. Исправил - заработало, но не отображаются типы... Может как-то по-другому попробовать?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #5 : 24.06.2011, 21:34:16 »
что-то не так сделал, видимо. А может я при упрощении скрипта напортачил с синтаксисом. Скорее всего так и есть и запрос в БД идёт с ошибкой и возвращает ничто. Это нужно отлаживать. Могу дать копию сайта, сам разбирайся.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Askold Oksentenko

  • Новичок
  • 8
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #6 : 24.06.2011, 21:38:51 »
Давай. Попробую сам разобраться. Если что, отпишусь. Мыло указано. Заранее спасибо:)
*

Askold Oksentenko

  • Новичок
  • 8
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #7 : 24.06.2011, 21:40:36 »
Как здесь репутацию поднимать?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #8 : 24.06.2011, 22:28:10 »
ушло мылом
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Askold Oksentenko

  • Новичок
  • 8
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #9 : 25.06.2011, 11:28:10 »
Пункт 2 исправил. Как, не знаю, но теперь показывает только нужные типы товаров. Единственное, что корректно отображает только при мультивыборе, а он все еще не работает... Не знаю, радоваться или плакать))))
*

vtx

  • Захожу иногда
  • 221
  • 19 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #10 : 05.07.2011, 13:53:07 »
Могу дать копию сайта, сам разбирайся.
А мне можно посмотреть на Ваши хаки?
*

Sedoy

  • Давно я тут
  • 897
  • 87 / 10
  • Интересно,в какой кодировке пишут врачи?
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #11 : 10.12.2011, 10:33:32 »
гайз, может выложите решение?
Что б правильно задать вопрос - нужно знать на него ответ!
FAQ по Joomla!
Где скачать шаблоны Joomla Статьи и обзоры Желаю Вам здоровья в личной жизни - живите долго и часто :)
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #12 : 10.12.2011, 16:53:47 »
Ну копию сайта я давал, тем кто просил. А собрать вместе всё в один мануал - руки не дошли тогда, а теперь этого и в TODO списке задач нету у меня.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

tyana

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #13 : 06.03.2012, 15:06:46 »
VirtueMart 2.0.0 Joomla 1.5. установила IceFilter 1.0.0, захожу в модуль, у него проблемы с кодировкой. как быть?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #14 : 06.03.2012, 15:09:33 »
Э.... А ты уверена, что IceFilter вообще с VM 2.0 работает?
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

tyana

  • Осваиваюсь на форуме
  • 27
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #15 : 06.03.2012, 15:17:40 »
Нет, конечно, это первое, что я нашла наиболее подходящее и бесплатно. Не подскажете, что для моей версии подойдет?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #16 : 06.03.2012, 15:28:17 »
Не подскажу, не смотрел ещё. Но всё для VM1.1.x несовместимо с VM2.0
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

BomjCaen

  • Новичок
  • 2
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #17 : 10.02.2013, 12:11:49 »
Здравствуйте, подскажите пожалуйста как сделать так, что с помощью модуля mod_IceVmFilter организовать фильтрацию по типам товаров, так, что бы все типы товаров не отображались при фильтрации. Т.е. если я зашел в категорию сварочные маски у меня в фильтре отображались только тип товара "Цвет сварочной маски", а другие типы товаров стали не видимыми. Ну и далее соответственно, если я захожу в категорию товаров "Электроды" то я должен видеть в фильтре только тип товара "Толщина электрода", но не должен видеть тип товара "Цвет сварочной маски".
Спасибо.
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #18 : 10.02.2013, 21:21:33 »
В шаблоне найти место, где выводятся типы на странице товара. И там уже ограничить вывод по какому-либо правилу (ну как у тебя логическая связь между типом и категорией организована).
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

hjfur

  • Новичок
  • 2
  • 0 / 0
Re: Фильтр товаров для Joomla 1.5 + VirtueMart 1.1
« Ответ #19 : 25.07.2013, 23:20:45 »
всем привет. У меня такая проблема: Joomla 1.5.25 и VirtueMart 2.0.20 установил cherry picker 2.05 но беда в том, что не получается интегрировать cherry picker, и соответственно, когда вводишь параметры фильтра в fast seller через create filters, то в пункте assign filters не отображает ни одного товара..как быть..?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart - SMS уведомления о сделаном заказе.

Автор bork

Ответов: 42
Просмотров: 22900
Последний ответ 26.07.2021, 22:11:25
от Oleg91
Отчеты и статистика для VirtueMart

Автор 4kict

Ответов: 25
Просмотров: 10253
Последний ответ 14.01.2021, 00:09:53
от gartes
Сортировка товаров по дате поступления

Автор coob

Ответов: 2
Просмотров: 2497
Последний ответ 21.06.2018, 08:40:05
от kungurskiy
IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 53284
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 27288
Последний ответ 25.10.2016, 15:03:07
от Igoritaly