Новости 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 Гость просматривают эту тему.
  • 5 Ответов
  • 2292 Просмотров
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Продолжаю пилить, застрял на дополнительных БД запросах.

Задача: выводить сопутствующие товары к каждому item на странице категории.

Откопал tables/category.php с методом getProducts(), которое обращается к lib/jtableauto.php (для построения запроса)
Есть событие onBeforeQueryGetProductList которое использую в плагине (может и не оно нужно?)
Есть переменные как раз для дополнительных строк в запросе, как я понял.
И есть в tables/product.php метод getRelatedProducts(), но он только для страницы товара.

В общем пока не сообразил как собрать всё вместе..

upd: начинаю тихонько вникать, только загвоздка на уровне знания php:
в классе C есть метод M, который вызывает другой метод L этого же класса C вот так: $this->L ...НО когда я вызываю метод M в классе X вот так: C::M то эта самая $this получается в классе X, в котором, конечно нет метода L — получается ошибка. (могу менять только класс X, то есть плагин)

upd2: так, мне не нужно всё это, думаю достаточно грамотно составить sql-запрос, т. к. плагином можно добавить $adv_query и $adv_from прямо в запрос... еще бы понимать синтаксис sql =)
« Последнее редактирование: 18.06.2014, 14:48:16 от devirus »
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Решено :)

Код плагина, может пригодится кому.
Добавляет в стандартный $this->rows ключи "rel" с сопутствующими id для каждого товара на странице. А сами сопутствующие товары выгружаются в $this->related
Остается перебрать и построить нужный шаблон...

Код
class plgJshoppingProductsStarkman_relatedInCategory extends JPlugin{

    function onBeforeQueryGetProductList($type, &$adv_result, &$adv_from, &$adv_query, &$order_query, &$filters){

    if ($type == "category"){
    $adv_result .= ", GROUP_CONCAT(relation.product_related_id) as rel";
        $adv_from .= "LEFT JOIN `#__jshopping_products_relations` AS relation ON relation.product_id = prod.product_id";
        $adv_query .= " group by prod.product_id";
    }

    }

    function onBeforeDisplayProductListView(&$view){

        foreach ($view->rows as $k => $product) {
        $k==0 ? $products_in_page = $product->product_id : $products_in_page .= ',' . $product->product_id;
        }

        $adv_query = "";
        $adv_from = "";
        $adv_result = JTableAvto::getBuildQueryListProductDefaultResult();
        $filters = array();

        $jshopConfig = JSFactory::getConfig();
        $user = JFactory::getUser();

        $groups = implode(',', $user->getAuthorisedViewLevels());
        $adv_query .=' AND prod.access IN ('.$groups.') AND cat.access IN ('.$groups.')';
       
        if ($jshopConfig->hide_product_not_avaible_stock){
            $adv_query .= " AND prod.product_quantity > 0";
        }
        if ($jshopConfig->show_delivery_time){
            $adv_result .= ", prod.delivery_times_id";
        }
        if ($jshopConfig->admin_show_product_extra_field){
            $adv_result .= getQueryListProductsExtraFields();
        }
        if ($jshopConfig->product_list_show_vendor){
            $adv_result .= ", prod.vendor_id";
        }
        if ($jshopConfig->product_list_show_qty_stock){
            $adv_result .= ", prod.unlimited";
        }

        $order_query = "";

        $query = "SELECT $adv_result FROM `#__jshopping_products_relations` AS relation
                INNER JOIN `#__jshopping_products` AS prod ON relation.product_related_id = prod.product_id
                LEFT JOIN `#__jshopping_products_to_categories` AS pr_cat ON pr_cat.product_id = relation.product_related_id
                LEFT JOIN `#__jshopping_categories` AS cat ON pr_cat.category_id = cat.category_id
                $adv_from
                WHERE relation.product_id IN (" . $products_in_page . ") AND cat.category_publish='1' AND prod.product_publish = '1' ".$adv_query." group by prod.product_id ".$order_query;
       

        $db = &JFactory::getDBO();
$db->setQuery($query);
$rel = $db->loadObjectList();
       
        foreach($rel as $key=>$value) {
            $rel[$key]->product_link = SEFLink('index.php?option=com_jshopping&controller=product&task=view&category_id='.$value->category_id.'&product_id='.$value->product_id, 1);
        }
        $rel = listProductUpdateData($rel, 1);

        $view->assign('related', $rel);
    }
}
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
1. Если все равно
Цитировать
Остается перебрать и построить...
то может в принципе исключить onBeforeQueryGetProductList, и чуть изменить запрос выборки сопутствующих ? Можно конечно и так, но я всегда аккуратничаю с добавлением в плагине в запрос group by, потому что если какой нибудь другой плагин добавит например еще один leftjoin, то фатала не будет, но если будет несколько group by...

2. Чтобы вызывать так JTableAvto::getBuildQueryListProductDefaultResult(), метод должен быть объявлен как статический. Ошибки нет, но warning есть.

3. Может грохнуть простынку с определением $adv_query и $adv_result? Ведь у JTableAvto есть метод getBuildQueryListProduct

4. В listProductUpdateData второй параметр определяет, будут ли добавлены ссылки для товаров. Соответственно, перед вызовом лишний цикл.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Писал методом тыка..) с комментариями согласен, спасибо!

1) чуть изменить — в смысле оставить в покое $this->rows и с другого конца подойти: в $this->related сделать привязку к товарам? Там что-то у меня Неправильно вроде сгруппировалось... попробую еще поковырять.
2) а как нужно? делал new JTableAvto - ошибки сыпятся
3) на метод getBuildQueryListProduct смотрел, но там в конце есть $this->getBuildQueryListProductFilterPrice($filters, $adv_query, $adv_from); когда вызываю JTableAvto::getBuildQueryListProduct, то $this обрабатывается внутри плагина и не находит метод (не хватает мозгов как обойти, видимо тот же new JTableAvto неправильно пишу).
4) listProductUpdateData не знал для чего, остался от продуктовой getRelatedProducts... уберу параметр
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
1. угу, в $this->related сделать привязку к товарам
2. JTableAvto - это расширение JTable. Соответственно, получаем синглтон абсолютно любой таблицы ЖШ, которая является расширением JTableAvto, и дальше уже работаем как с таблицей:
Код
$tProduct = JTable::getInstance('Product', 'jshop');
$adv_result = $tProduct->getBuildQueryListProductDefaultResult()
3. см п.2
4. ну или так :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

devirus

  • Захожу иногда
  • 140
  • 6 / 0
Цитировать
перед вызовом лишний цикл
...дошло)

доработанный код
Код
    function onBeforeDisplayProductListView(&$view){

        foreach ($view->rows as $k => $product) {
        $k==0 ? $products_in_page = $product->product_id : $products_in_page .= ',' . $product->product_id;
        }

        $adv_query = "";
        $adv_from = "";
        $filters = array();
        $order_query = "";

        $tProduct = JTable::getInstance('Product', 'jshop');
$adv_result = $tProduct->getBuildQueryListProductDefaultResult();
        $tProduct->getBuildQueryListProductSimpleList("related", null, $filters, $adv_query, $adv_from, $adv_result);

        $adv_result .= ", GROUP_CONCAT(relation.product_id) as rel";

        $query = "SELECT $adv_result FROM `#__jshopping_products_relations` AS relation
                INNER JOIN `#__jshopping_products` AS prod ON relation.product_related_id = prod.product_id
                LEFT JOIN `#__jshopping_products_to_categories` AS pr_cat ON pr_cat.product_id = relation.product_related_id
                LEFT JOIN `#__jshopping_categories` AS cat ON pr_cat.category_id = cat.category_id
                $adv_from
                WHERE relation.product_id IN (" . $products_in_page . ") AND cat.category_publish='1' AND prod.product_publish = '1' ".$adv_query." group by prod.product_id ".$order_query;

        $db = &JFactory::getDBO();
$db->setQuery($query);
$rel = $db->loadObjectList();
       
        $rel = listProductUpdateData($rel, 1);

        $view->assign('related', $rel);
    }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] - Заказ на одной странице

Автор shurakana

Ответов: 58
Просмотров: 19470
Последний ответ 16.03.2023, 09:53:16
от kit2m2
Плагин - Количество товаров в категории [Скачать]

Автор kit2m2

Ответов: 8
Просмотров: 2890
Последний ответ 06.07.2021, 18:31:46
от kit2m2
Таблица размеров (и т.п.) Плагин модульных позиций для атрибутов на странице товара [Скачать]

Автор kit2m2

Ответов: 39
Просмотров: 8238
Последний ответ 16.05.2021, 18:16:50
от kit2m2
Прописать rel canonical в товары с атрибутами в url

Автор Unclesem

Ответов: 4
Просмотров: 717
Последний ответ 24.02.2021, 20:50:13
от Unclesem
Плагин для покупки в категории товара JoomShopping 4, с применением ajax

Автор draff

Ответов: 14
Просмотров: 1365
Последний ответ 18.05.2020, 06:29:43
от draff