Новости Joomla

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

WT IndexNow плагин для Joomla - отправка страниц сайта на переиндексацию в поисковые системы

WT IndexNow плагин для Joomla - отправка страниц сайта на переиндексацию в поисковые системы

👩‍💻 WT IndexNow плагин для Joomla - отправка страниц сайта на переиндексацию в поисковые системы.Пакет плагинов, обеспечивающий ручную и автоматическую отправку url адресов Joomla в поисковые системы на переиндексацию по протоколу IndexNow. Согласно документации протокол поддерживают все крупнейшие поисковые системы, кроме Google. Протокол служит для получения от сайтов URL, которые нужно переиндексировать заново или проиндексировать в первый раз как можно быстрее. Отправка адресов сайта таким образом существенно ускорит индексацию нового или изменённого контента поисковыми системами.Поисковые системы по этому протоколу обмениваются друг с другом данными, поэтому отправив URL в одну из них вы сообщаете их сразу всем. Протокол IndexNow поддерживают:- Amazon- Microsoft Bing- Naver- Seznam.cz- Yandex - YepСуточный лимит URL - 10000 в сутки. Возможна отправка вручную и автоматически. Поддерживаются:- материалы и категории материалов Joomla- контакты и категории контактов Joomla- SW JProjects - компонент каталога расширений для Joomla- JoomShopping - компонент интернет-магазина для Joomla- Phoca Download - компонент каталога файлоа для Joomla- Phoca Cart - компонент интернет-магазина для Joomla- RadicalMart - компонент интернет-магазина для JoomlaПакет плагинов работает с Joomla 4.3+. Тестировался на Joomla 5 и Joomla 6.Смотреть видео:- ВК Видео- RuTubeСсылки:Страница расширенияGitHub расширенияРаздел Поддержка протокола IndexNow в справке Яндекса@joomlafeed#joomla #seo #indexnow

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

jorevo

  • Давно я тут
  • 595
  • 13 / 1
А значит в плагине можно вывести $post['alias_'.$lang->language] и посмотреть содержимое - Это и есть тот псевдоним, который сохраняется в базу.

То есть его можно и поменять посредством $post['alias_'.$lang->language] = "алиас"?

ЗЫ. Нифига не фурычит. Конструкция $post['alias_'.$lang->language] тоже выдаёт пустоту. (
« Последнее редактирование: 21.10.2014, 23:08:11 от jorevo »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
То есть его можно и поменять
как раз для этого и ставим & перед переменной. чтобы внутри плагина можно было менять то, на что она ссылается.

Цитировать
Конструкция $post['alias_'.$lang->language] тоже выдаёт пустоту
ну так а $lang определили в плагине также как в контроллере? либо JFactory::getLanguage()->getTag() используйте чтобы узнать текущий язык
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
ну так а $lang определили в плагине также как в контроллере? либо JFactory::getLanguage()->getTag() используйте чтобы узнать текущий язык

Дмитрий, я если честно уже порядком запутался и изрядно задолбался проверять всё возможные варианты. ) Задача прикладная и вобщем то меня вполне устраивает жоско прописанный "alias_ru-RU". Единственно чего бы реально хотелось - проверки на существующий алиас, чтобы перепрописывать его если он не задан. Может проще решить проблему "в лоб" - через запрос к базе? Что то типа SELECT * FROM `#__jshopping_products` AS `alias_ru-RU` WHERE `product_id` = '.$product->product_id;? Только непонятно что с этим дальше делать?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ну так а что даст запрос такой? вы хотите проверить алиас который уже сохранен в товаре? или все таки проверить, не ввели ли руками алиас и хотим его сохранить? для второго случая я вроде писал что проверять - $_POST['alias_ru-RU']
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Я хочу, чтобы плагин себя вёл как и сам ЖШ, но алиас прописывал по своим правилам. То есть, если алиаса нет - формировать его, если есть - ничего не делать, если при редактировании товара с прописанным алиасом очистить поле с алиасом - сформировать его.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
это я понял. вроде как все что нужно сделать для этого уже написал. что именно не получается?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
А почему в функцию onBeforeDisplaySaveProduct(&$post, &$product) не передаётся $product->product_id? Он тоже позже определяется?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
product_id доступен только если товар был сохранен ранее. т.е. если сохраняете существующий товар после редактирования. а если добавляете новый товар, то в onBeforeDisplaySaveProduct product_id пока не определен. а вот в onAfterSaveProduct он уже будет доступен
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Дело в том, что я сохраняю существующий товар, но передаётся пустота. Это для onBeforeDisplaySaveProduct. Для onAfterSaveProduct $product->product_id передаётся правильно, но не передаётся $post... замкнутый круг.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
хм, точно. product_id заносится в $product уже после onBeforeDisplaySaveProduct. ну тогда можно получить его как $post['product_id']
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
я вроде писал что проверять - $_POST['alias_ru-RU']

Вот так наконец то заработало как надо! А чем отличается $_POST['alias_ru-RU'] от $post['alias_ru-RU']?

ЗЫ. Не совсем как надо... Как быть с вновь создаваемыми товарами?
« Последнее редактирование: 22.10.2014, 13:59:49 от jorevo »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
да.. с новыми засада... ну значит все таки надо onAfterSaveProduct. $_POST['alias_ru-RU'] будет доступен там. если делать еан на основе ид товара - получается придется пожертвовать одни запросом. вообще по хорошему можно разделить логику, и если товар сохранен, то менять еан в onBeforeDisplaySaveProduct без доп. запроса, а если новый - то в onAfterSaveProduct с доп. запросом. но думаю это чересчур :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
по хорошему можно разделить логику, и если товар сохранен, то менять еан в onBeforeDisplaySaveProduct без доп. запроса, а если новый - то в onAfterSaveProduct с доп. запросом. но думаю это чересчур :)

Да я пошёл по этому пути, добавил обработчик onAfterSaveProduct (как в изначальной версии с записью в базу), но пока немного запутался с условиями. Нет какого нибудь флага, который бы показывал редактируется ли старый товар или добавляется новый?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
так просто проверяйте $_POST['product_id'] . если определен - значит старый, если нет - значит новый
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
так просто проверяйте $_POST['product_id'] . если определен - значит старый, если нет - значит новый

Дело в том, что в обработчик onAfterSaveProduct посредством $_POST['product_id'] (для новых товаров) тоже передаётся пустой ID... затык не в том как определить новый товар или старый, а в том как получить этот самый ID для новых товаров!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
в событии onAfterSaveProduct $product->product_id и в случае с новым, и в случае с существующим товаром уже содержит ид товара.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Дмитрий, огромное спасибо за долготерпение. Всё сложилось наконец то. Не стал мудрить с проверками, всё внёс в обработчик onAfterSaveProduct с записью в базу. Вот что в результате получилось:

Код
<?php
defined('_JEXEC') or die('Restricted access');

class plgJshoppingAdminAutoAlias extends JPlugin
{
public function __construct(&$subject, $config)
{
parent::__construct($subject, $config);
}

function onAfterSaveProduct(&$product)
{
if ($_POST['alias_ru-RU'] == '')
{
$db = JFactory::getDBO();
$query = 'UPDATE `#__jshopping_products` SET `alias_ru-RU` = "'.$this->params->get('prefix','').str_pad($product->product_id, 6, '0', STR_PAD_LEFT).'" WHERE `product_id` = '.$product->product_id;
$db->setQuery($query);
$db->query();
}
}
}

Суть всего этого - генерация алиаса по своим правилам. За основу был взят плагин auto_ean выложенный кем то, где то здесь (в реквизитах указан http://www.pozitiv-studio.ru). С языками морочиться не стал, кому надо - разбирайтесь сами. Добавил автоматическое включение плагина при инсталляции. Критика приветствуется. )
« Последнее редактирование: 23.10.2014, 11:57:29 от jorevo »
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Ещё одна фишечка всплыла. На onAfterSaveProduct не действует настройка "Автоматически сохранять псевдоним" - то есть обработчик вызывается вне зависимости от того, стоит галочка или нет. Как добавить проверку на эту настройку?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Код: php
JSFactory::getConfig()->create_alias_product_category_auto
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Да, спасибо... я как раз сам нашёл. Теперь такой код:

Код
<?php
defined('_JEXEC') or die('Restricted access');

class plgJshoppingAdminAutoAlias extends JPlugin
{
public function __construct(&$subject, $config)
{
parent::__construct($subject, $config);
}

function onAfterSaveProduct(&$product)
{
       $jshopConfig = JSFactory::getConfig();

if ($jshopConfig->create_alias_product_category_auto && $_POST['alias_ru-RU'] == '')
{
$db = JFactory::getDBO();
$query = 'UPDATE `#__jshopping_products` SET `alias_ru-RU` = "'.$this->params->get('prefix','').str_pad($product->product_id, 6, '0', STR_PAD_LEFT).'" WHERE `product_id` = '.$product->product_id;
$db->setQuery($query);
$db->query();
}
}
}
*

lunwer

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
Виноват... Невнимателен...Как там!? Немного воображения и логики? :)
\administrator\components\com_jshopping\controllers\products.php
Функция save, ищем следующий текст примерно 519 строка.

Ниже добавляем
Код
        if (!$post['product_ean']) {
        $manufacturer_id = 0;
        if (isset($post['product_manufacturer_id'])){
        $manufacturer_id = $post['product_manufacturer_id'];
        }
        $product->product_ean = "M[".$manufacturer_id."]P[".$product_id."]";
        }
        if (!$product->store()){
            JError::raiseWarning("",_JSHOP_ERROR_SAVE_DATABASE."<br>".$product->_error);
            $this->setRedirect("index.php?option=com_jshopping&controller=products&task=edit&product_id=".$product->product_id);
            return 0;
        }
Радуемся результату.



кто подскажет, как сделать чтобы при копировании код брался из ID товара? Может кто то делал что то подобное?
*

dss

  • Захожу иногда
  • 62
  • 0 / 0
Вообще в компоненте куча событий для плагинов.
Зачем хакать его?
Доброго времени суток.
В каждом товаре прописывать код товара - не вариант.
Какой существует плагин для автоматической генерации кода товара, хотя бы id товара .... инет перерыл, неужели тол ко хакать?
Напишите, пожалуййста, о какие плагины Вы имеете ввиду? Спасибо
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
возьмите например https://nevigen.com/ru/seo-joomshopping/massovoe-zapolnenie-aliasov-dlya-joomshopping.html, и переделайте алиас на код товара
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dss

  • Захожу иногда
  • 62
  • 0 / 0
возьмите например https://nevigen.com/ru/seo-joomshopping/massovoe-zapolnenie-aliasov-dlya-joomshopping.html, и переделайте алиас на код товара
ну выбрал я все товары, нажал генерация алиасов. как были пустыми поля код товара- так и остались... может что-то другое посоветуете... уж больно не хочется хакать компонент вручную, заставляя id = код товара...
*

dss

  • Захожу иногда
  • 62
  • 0 / 0
возьмите например https://nevigen.com/ru/seo-joomshopping/massovoe-zapolnenie-aliasov-dlya-joomshopping.html, и переделайте алиас на код товара
как переделать алиас на код товара? спасибо
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
запросом в базу сделайте
ean = id
или импортом-экспортом назначьте
если разово.

но это не даст автоматичности в будущем.
надо писать плагин который будет ловить событие сохранения и прописывать то что надо вам.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

dss

  • Захожу иногда
  • 62
  • 0 / 0
запросом в базу сделайте
ean = id
или импортом-экспортом назначьте
если разово.

но это не даст автоматичности в будущем.
надо писать плагин который будет ловить событие сохранения и прописывать то что надо вам.

Спасибо за ответ.
А есть ли такой плагин? и, если нет, как добавить это событие в ручную?
Выше указанный вариант на Ваш вкус сойдет?

\administrator\components\com_jshopping\controllers\products.php
Функция save, ищем следующий текст примерно 519 строка.

Ниже добавляем
Код:
Код: php
 if (!$post['product_ean']) {
        $manufacturer_id = 0;
        if (isset($post['product_manufacturer_id'])){
        $manufacturer_id = $post['product_manufacturer_id'];
        }
        $product->product_ean = "M[".$manufacturer_id."]P[".$product_id."]";
        }
        if (!$product->store()){
            JError::raiseWarning("",_JSHOP_ERROR_SAVE_DATABASE."<br>".$product->_error);
            $this->setRedirect("index.php?option=com_jshopping&controller=products&task=edit&product_id=".$product->product_id);
            return 0;
        }
Радуемся результату.
*

Vanha

  • Новичок
  • 4
  • 0 / 0
Здравствуйте. Подскажите пожалуйста как в этом коде заменить id производителя на id категории

if (!$post['product_ean']) {
        $manufacturer_id = 0;
        if (isset($post['product_manufacturer_id'])){
        $manufacturer_id = $post['product_manufacturer_id'];
        }
        $product->product_ean = "M[".$manufacturer_id."]P[".$product_id."]";
        }
        if (!$product->store()){
            JError::raiseWarning("",_JSHOP_ERROR_SAVE_DATABASE."<br>".$product->_error);
            $this->setRedirect("index.php?option=com_jshopping&controller=products&task=edit&product_id=".$product->product_id);
            return 0;
        }
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
а если товар в 2+ категориях ?
производитель точно всегда 1.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Vanha

  • Новичок
  • 4
  • 0 / 0
Здравствуйте. Признаюсь я только начал осваивать и Joomla и JoomShopping.
В панели управления заметил, что созданные категории товаров имеют вот такой вид:

/index.php?option=com_jshopping&controller=categories&task=edit&category_id=1
/index.php?option=com_jshopping&controller=categories&task=edit&category_id=2
и.т.д
Вот и подумал, что category_id можно тоже использовать для создания кода товара.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT On fly image handler изображения товара JoomShopping в webp на лету

Автор sergeytolkachyov

Ответов: 13
Просмотров: 4693
Последний ответ 29.01.2025, 20:38:38
от sergeytolkachyov
Видео с Youtube вместо картинки на карточке товара

Автор ksena

Ответов: 35
Просмотров: 10634
Последний ответ 08.10.2024, 04:26:36
от kit2m2
Условие для кол-ва товара больше нуля

Автор kik84

Ответов: 3
Просмотров: 1455
Последний ответ 16.02.2024, 13:33:24
от kit2m2
Убрать модуль в карточке товара JoomShopping

Автор alexkraym

Ответов: 35
Просмотров: 5925
Последний ответ 21.08.2023, 07:17:53
от delchev
Проблема с фото в карточке товара

Автор astapon

Ответов: 18
Просмотров: 2239
Последний ответ 24.04.2023, 12:37:50
от kit2m2