Новости Joomla

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился

Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы

content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи. Плагин создан как замена Simple Image Gallery и поддерживает синтаксис
{gallery}{/gallery}.👩‍💻 v.1.2.3. Что нового?- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.
Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#joomla #расширения

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте
default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса
Registry (
писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в
Form ещё нет данных и параметры по умолчанию выставляются из атрибутов
default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в
params плагина.Для поля списков
type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут
multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте
default нужно указать json с нужными параметрами в виде
{int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку
json_decode не понимает одинарные кавычки собственно
json нужно писать с двойными, а значение для атрибута
default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

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

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Всем привет!

Чтобы получить два макета формы добавления материалов, переопределил два раза макет:
Спойлер
[свернуть]
В результате получаю два файла макета в папке \templates\protostar\html\com_content\form\edit.php и edit-custom.php (имя файла изменил, было edit-многоцифр.php)

Макет edit.php сразу работает по умолчанию, а как мне назначить макет edit-custom.php для определённой категории ?
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
Макет edit.php сразу работает по умолчанию, а как мне назначить макет edit-custom.php для определённой категории ?
В макете edit.php где-нибудь сверху прописать условие на вашу категорию и в нем:
Код
if(ваше-условие-подключения-кастомного-макета){
   include('edit-custom.php');
   return false;
}
А "много цифр" - это была дата бэкапа макета.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
В макете edit.php где-нибудь сверху прописать условие на вашу категорию и в нем:
Если не трудно, можно код как это условие прописать в if
Алиас категории: instruktsii, ID 11 (в этой категории будет использован макет edit-custom.php)

куда лучше вверху прописать, чтобы не было конфликтов макетов, вот файл макета edit.php
Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * [member=126442]copyright[/member]   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::_('behavior.tabstate');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');
JHtml::_('formbehavior.chosen', '#jform_catid', null, array('disable_search_threshold' => 0));
JHtml::_('formbehavior.chosen', '#jform_tags', null, array('placeholder_text_multiple' => JText::_('JGLOBAL_TYPE_OR_SELECT_SOME_TAGS')));
JHtml::_('formbehavior.chosen', 'select');
$this->tab_name = 'com-content-form';
$this->ignore_fieldsets = array('image-intro', 'image-full', 'jmetadata', 'item_associations');

// Create shortcut to parameters.
$params = $this->state->get('params');

// This checks if the editor config options have ever been saved. If they haven't they will fall back to the original settings.
$editoroptions = isset($params->show_publishing_options);

if (!$editoroptions)
{
$params->show_urls_images_frontend = '0';
}

JFactory::getDocument()->addScriptDeclaration("
Joomla.submitbutton = function(task)
{
if (task == 'article.cancel' || document.formvalidator.isValid(document.getElementById('adminForm')))
{
" . $this->form->getField('articletext')->save(). "
Joomla.submitform(task);
}
}
");
?>
<div class="edit item-page<?php echo $this->pageclass_sfx; ?>">
<?php if ($params->get('show_page_heading')) : ?>
<div class="page-header">
<h1>
<?php echo $this->escape($params->get('page_heading')); ?>
</h1>
</div>
<?php endif; ?>

<form action="<?php echo JRoute::_('index.php?option=com_content&a_id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="adminForm" class="form-validate form-vertical">
<fieldset>
<?php echo JHtml::_('bootstrap.startTabSet', $this->tab_name, array('active' => 'editor')); ?>

<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'editor', JText::_('COM_CONTENT_ARTICLE_CONTENT')); ?>
<?php echo $this->form->renderField('title'); ?>

<?php if (is_null($this->item->id)) : ?>
<?php echo $this->form->renderField('alias'); ?>
<?php endif; ?>

<?php echo $this->form->getInput('articletext'); ?>

<?php if ($this->captchaEnabled) : ?>
<?php echo $this->form->renderField('captcha'); ?>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>

<?php if ($params->get('show_urls_images_frontend')) : ?>
<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'images', JText::_('COM_CONTENT_IMAGES_AND_URLS')); ?>
<?php echo $this->form->renderField('image_intro', 'images'); ?>
<?php echo $this->form->renderField('image_intro_alt', 'images'); ?>
<?php echo $this->form->renderField('image_intro_caption', 'images'); ?>
<?php echo $this->form->renderField('float_intro', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext_alt', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext_caption', 'images'); ?>
<?php echo $this->form->renderField('float_fulltext', 'images'); ?>
<?php echo $this->form->renderField('urla', 'urls'); ?>
<?php echo $this->form->renderField('urlatext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targeta', 'urls'); ?>
</div>
</div>
<?php echo $this->form->renderField('urlb', 'urls'); ?>
<?php echo $this->form->renderField('urlbtext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targetb', 'urls'); ?>
</div>
</div>
<?php echo $this->form->renderField('urlc', 'urls'); ?>
<?php echo $this->form->renderField('urlctext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targetc', 'urls'); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>

<?php echo JLayoutHelper::render('joomla.edit.params', $this); ?>

<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'publishing', JText::_('COM_CONTENT_PUBLISHING')); ?>
<?php echo $this->form->renderField('catid'); ?>
<?php echo $this->form->renderField('tags'); ?>
<?php echo $this->form->renderField('note'); ?>
<?php if ($params->get('save_history', 0)) : ?>
<?php echo $this->form->renderField('version_note'); ?>
<?php endif; ?>
<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo $this->form->renderField('created_by_alias'); ?>
<?php endif; ?>
<?php if ($this->item->params->get('access-change')) : ?>
<?php echo $this->form->renderField('state'); ?>
<?php echo $this->form->renderField('featured'); ?>
<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo $this->form->renderField('publish_up'); ?>
<?php echo $this->form->renderField('publish_down'); ?>
<?php endif; ?>
<?php endif; ?>
<?php echo $this->form->renderField('access'); ?>
<?php if (is_null($this->item->id)) : ?>
<div class="control-group">
<div class="control-label">
</div>
<div class="controls">
<?php echo JText::_('COM_CONTENT_ORDERING'); ?>
</div>
</div>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>

<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'language', JText::_('JFIELD_LANGUAGE_LABEL')); ?>
<?php echo $this->form->renderField('language'); ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>

<?php if ($params->get('show_publishing_options', 1) == 1) : ?>
<?php echo JHtml::_('bootstrap.addTab', $this->tab_name, 'metadata', JText::_('COM_CONTENT_METADATA')); ?>
<?php echo $this->form->renderField('metadesc'); ?>
<?php echo $this->form->renderField('metakey'); ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php endif; ?>

<?php echo JHtml::_('bootstrap.endTabSet'); ?>

<input type="hidden" name="task" value="" />
<input type="hidden" name="return" value="<?php echo $this->return_page; ?>" />
<?php echo JHtml::_('form.token'); ?>
</fieldset>
<div class="btn-toolbar">
<div class="btn-group">
<button type="button" class="btn btn-primary" onclick="Joomla.submitbutton('article.save')">
<span class="icon-ok"></span><?php echo JText::_('JSAVE')?>
</button>
</div>
<div class="btn-group">
<button type="button" class="btn" onclick="Joomla.submitbutton('article.cancel')">
<span class="icon-cancel"></span><?php echo JText::_('JCANCEL')?>
</button>
</div>
<?php if ($params->get('save_history', 0) && $this->item->id) : ?>
<div class="btn-group">
<?php echo $this->form->getInput('contenthistory'); ?>
</div>
<?php endif; ?>
</div>
</form>
</div>
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
Если не трудно, можно код как это условие прописать в if
Алиас категории: instruktsii, ID 11 (в этой категории будет использован макет edit-custom.php)
Какой путь к странице редактирования? Что выводит на ней команда echo '<pre>'.print_r($_REQUEST,1).'</pre>'; ?

куда лучше вверху прописать, чтобы не было конфликтов макетов, вот файл макета edit.php
Можно вставлять перед сразу после этого:
Код
defined('_JEXEC') or die;

А можно и ниже, после всех подключений, но до верстки. в этом случае в edit-custom.php подключения можно не дублировать, а вставить только ту часть, которая ниже условия (все, что выше, будет доступно и из подключенного файла).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Какой путь к странице редактирования? Что выводит на ней команда echo '<pre>'.print_r($_REQUEST,1).'</pre>'; ?
Добавил в edit.php
Код
<?php echo '<pre>'.print_r($_REQUEST,1).'</pre>'; ?>
Результат:
Код
Array
(
    [view] => form
    [layout] => edit
    [return] => aHR0cDovL3hlb25saXZlLnJ1Lw==
    [Itemid] => 103
    [option] => com_content
    [a_id] => 0
)

Если в файл edit.php добавить:
Код
<pre><?php print_r($this); ?></pre>
Вижу нужное значение [catid] => 11 в начале кода:
Код
ContentViewForm Object
(
    [form:protected] => Joomla\CMS\Form\Form Object
        (
            [data:protected] => Joomla\Registry\Registry Object
                (
                    [data:protected] => stdClass Object
                        (
                            [title] =>
                            [alias] =>
                            [articletext] =>
                            [com_fields] => stdClass Object
                                (
                                    [logotip] =>
                                    [dopolnitel-naya-informatsiya] =>
                                )

                            [catid] => 11
                            [note] =>
                            [version_note] =>
                            [created_by_alias] =>
                            [state] => 1
                            [featured] => 0
                            [publish_up] =>
                            [publish_down] =>
                            [access] => 1
                            [language] => *
                            [metadesc] =>
                            [metakey] =>
                            [id] => 0
Может это как то использовать
« Последнее редактирование: 26.06.2020, 10:29:45 от Chigolberi »
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
Результат:
Из этого не получится вычислить с какой страницы был переход. В return хранится только имя домена. Если есть возможность - добавьте в ссылку на форму параметр, по которому можно будет определять.

Еще можно попробовать сделать 2 разных пункта меню на эту форму, у второго в параметрах выбрать "Специальная категория" и выбрать вашу категорию. По идее, это должно срабатывать именно из той категории и можно будет определять форму по ИД пункта меню. А может даже получится сразу задать другой макет для этого пункта через "Стиль шаблона".
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Еще можно попробовать сделать 2 разных пункта меню на эту форму, у второго в параметрах выбрать "Специальная категория" и выбрать вашу категорию. По идее, это должно срабатывать именно из той категории и можно будет определять форму по ИД пункта меню.
Такой вариант мне подходит, спасибо, работает  *DRINK*, код:
Код
if($_REQUEST['Itemid'] == 103){
   include('edit-custom.php');
   return false;
}
Я вам чуть выше написал как можно увидеть id категории, при смене категории в форме добавления, то и id меняется на соответствующий id категории, это нельзя как то использовать? Но если можно будет, тогда получается нужно будет условие выставлять и в других макетах, чтобы тоже работала смена макета?
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
можно увидеть id категории, при смене категории в форме добавления
Но ведь это уже на загруженной форме? При смене категории страница не перезагружается? Если надо менять в динамике в зависимости от выбора в селекте уже загруженной форме, то придется делать иначе. Либо перезагружать форму, либо делать show/hide для части полей, подключать аяксы и т.п.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Но ведь это уже на загруженной форме?
Да, на загруженной форме.
При смене категории страница не перезагружается?
Перезагружается, и поля в соответствии с их настройками прав (в какой категории им разрешено отображаться).
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
Перезагружается, и поля в соответствии с их настройками прав (в какой категории им разрешено отображаться).
Тогда можно, наверное. Но это надо смотреть что там. Гадать на пальцах не продуктивно ) А на своих сайтах такого нет.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Chigolberi

  • Захожу иногда
  • 464
  • 12 / 0
Тогда можно, наверное. Но это надо смотреть что там. Гадать на пальцах не продуктивно ) А на своих сайтах такого нет.
Понятно, пока ваш вариант устраивает  ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Валидация формы с загрузкой файлов на сервер

Автор kuliev

Ответов: 4
Просмотров: 930
Последний ответ 17.01.2025, 14:38:44
от kuliev
[Решено] Вывод значений из custom fields материала в модуле по имени поля

Автор goga_pgasovav

Ответов: 3
Просмотров: 1431
Последний ответ 30.12.2024, 13:22:11
от goga_pgasovav
Переход на страницу материала после его размещения пользователем

Автор stepan39

Ответов: 0
Просмотров: 815
Последний ответ 22.11.2024, 07:14:15
от stepan39
Вывод даты материала в списке тегов

Автор androv77

Ответов: 2
Просмотров: 1981
Последний ответ 09.11.2023, 16:33:08
от denxio
Вывод дополнительного поля материала в модуле

Автор timofe

Ответов: 10
Просмотров: 2576
Последний ответ 06.10.2023, 14:02:24
от Mitriy