Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

Ravilka

  • Осваиваюсь на форуме
  • 33
  • 5 / 1
Создал сайт на V2, сайт уже индексируется, но yandexe мне запретил нужные старницы:

Цитировать
Информация: страницы намеренно запрещены к индексированию или не должны индексироваться.   
Документ не является каноническим (В коде документа в тэге link содержится параметр rel="canonical", указывающий на другой (канонический) документ. Вместо данного документа проиндексирован канонический.) - 48


URL

/catalog/aksessuary/описание_заказа

22.04.2012   22.04.2012   
/catalog/aksessuary/ajur1.html - нужная страница товара

23.04.2012   23.04.2012   
/catalog/aksessuary/SEF_по,заказ

22.04.2012   22.04.2012   
/catalog/aksessuary/SEF_по,название_категории

23.04.2012   23.04.2012   
/catalog/aksessuary/SEF_по,название_производителя

22.04.2012   22.04.2012   
/catalog/bruki/описание_заказа

22.04.2012   22.04.2012   
/catalog/bruki/bruki-1.html - нужная страница товара

23.04.2012   23.04.2012   
/catalog/bruki/SEF_по,артикул

22.04.2012   22.04.2012   
/catalog/bruki/SEF_по,заказ

22.04.2012   22.04.2012   
/catalog/bruki/SEF_по,название_категории

23.04.2012   23.04.2012   
/catalog/bruki/SEF_по,название_производителя

22.04.2012   22.04.2012   
/catalog/classics/производитель/-2012-04-18-06-33-28_

23.04.2012   23.04.2012   
/catalog/classics/forreman-cl2.html - нужная страница товара

23.04.2012   23.04.2012   
/catalog/classics/marko-feretto-cl1.html - нужная страница товара

и тд

На каждой странице есть тэг rel="canonical" - который ненужные страницы исключает из поисковика, так вот он есть и в нужных страницах.
Если кто знает, помогите убрать с нужных страниц!

Все разобрался, проиндексировались неправильные ссылки. Добавил в путь id товара, посмотрим что будет.

Кстати нашел плагин для Virtuьфке 1.1.9 http://extensions.joomla.org/extensions/extension-specific/virtuemart-extensions/virtuemart-administration/16280, но он вставляет только в страницу товара, а в категории нет.
« Последнее редактирование: 11.08.2012, 23:48:02 от ELLE »
*

nadim

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
И как решился вопрос, что-то тут решения нет ?
У меня такая ситуация в каждой карточке товара присутствует rel="canonical" на эту же страницу - поэтому Яндекс неиндексирует - как избавиться от этого? Версия VirtueMart 2.0.10 (обновил до 2.0.14 тоже самое).
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
Сам ищу ответ, пока никак. Там вся фишка в том что в каноникал на страницах товара ссылка на эту же страницу. Получается бесконечный цикл. И вобще каноникал в VirtueMart это просто дебилизм. Есть категория, которая разбита на страницы по 10 товаров на каждой. Но если открыть вторую или третью страницу этой категории то каноникал будет указывать на первую, а ведь это абсолютно разные страницы! Кароч надо вырубать эту шнягу вобще, а все что нужно прописывать ручками.
« Последнее редактирование: 22.11.2012, 14:02:04 от jouser »
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
В общем кому надо отключить каноникал
на странице товара:
в файле \components\com_virtuemart\views\productdetails\view.html.php комментируем строки (где-то 202-ая)
if ($format == 'html') {
       // Set Canonic link
       $document->addHeadLink(JRoute::_($product->canonical, true, -1), 'canonical', 'rel', '');
   }
на странице категории:
\components\com_virtuemart\views\category\view.html.php (129-я строка) то же самое:
if ($format == 'html') {
         $document->addHeadLink( JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$categoryId), 'canonical', 'rel', '' );
      }
*

zoolman

  • Новичок
  • 1
  • 0 / 0
В общем кому надо отключить каноникал
на странице товара:
в файле \components\com_virtuemart\views\productdetails\view.html.php комментируем строки (где-то 202-ая)
if ($format == 'html') {
       // Set Canonic link
       $document->addHeadLink(JRoute::_($product->canonical, true, -1), 'canonical', 'rel', '');
   }
на странице категории:
\components\com_virtuemart\views\category\view.html.php (129-я строка) то же самое:
if ($format == 'html') {
         $document->addHeadLink( JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$categoryId), 'canonical', 'rel', '' );
      }
jouser, Искал решение этой проблемы около месяца, .... мучительно. 
Зарегистрировался только для того, чтобы поблагодарить Вас, очень помогла Ваша рекомендация. Удалил эти строки и теперь каноникал "отстал" ... Спасибо Вам большое.
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Улыбнуло) Почитайте что такое тег canonica. Все, с чем вы боритесь сделано правильно.
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
Улыбнуло) Почитайте что такое тег canonica. Все, с чем вы боритесь сделано правильно.
на странице товара - да, правильно, а на странице категрии нет - т.к. тег запрещает к индексации страницы пагинации, то есть из всех страниц категории индексироваться будет только первая. Чем это правильно?
*

SolopoV

  • Давно я тут
  • 576
  • 16 / 0
  • зеленею...
Покурив мануалы про "canonical", прихожу к выводу, что данное решение не совсем верно. За основу взято: https://support.google.com/webmasters/answer/139066?rd=1

Имеем: Joomla 3.3.6 + Virt 3.0.2

При добавлении одного товара в родительскую и дочернюю категории получаем:

Товар в дочерней категории:

Код
<base href="http://www.mysite.ru/shop/girl/windbreaker/vetrovochnaya-kurtka-neisse-1-detail.html" />
<meta name="title" content="Ветровочная куртка" />
<title>Ветровки : Ветровочная куртка </title>
<link href="http://www.mysite.ru/shop/girl/windbreaker/vetrovochnaya-kurtka-neisse-1-detail.html?limit=int" rel="canonical" />
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />

В родительской категори этот же товар:

Код
<base href="http://www.mysite.ru/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" />
<meta name="title" content="Ветровочная куртка" />
<title>Ветровки : Ветровочная куртка</title>
<link href="http://www.mysite.ru/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html?limit=int" rel="canonical" />
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />

Насколько я понял, ?limit=int" rel="canonical", рождается в Joomla. И он нам нафиг не нужен.

Убираем его в файле плагина (sef.php):
Код
//$doc->addHeadLink(htmlspecialchars($link), 'canonical');

Теперь получаем нормальный rel="canonical", указывающий на основную страницу:

Код
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />

Вот код одного товара в двух категориях:

Код
 
<base href="http://www.mysite.ru/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" />
<meta name="title" content="Ветровочная куртка" />
<title>Ветровки : Ветровочная куртка</title>
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />

Код
 
<base href="http://www.mysite.ru/shop/girl/windbreaker/vetrovochnaya-kurtka-neisse-1-detail.html" />
<meta name="title" content="Ветровочная куртка" />
<title>Ветровки : Ветровочная куртка</title>
<link href="/shop/girl/vetrovochnaya-kurtka-neisse-1-detail.html" rel="canonical" />


Но по совету Google важно использовать абсолютные, а не относительные пути.

Формирование кода происходит в указанном файле: \components\com_virtuemart\views\productdetails\view.html.php

Если кто то поможет сделать абсолютный путь - буду крайне признателен.

Код
$document->addHeadLink($product->canonical, 'canonical', 'rel', '');
« Последнее редактирование: 03.02.2015, 00:05:42 от SolopoV »
*

SolopoV

  • Давно я тут
  • 576
  • 16 / 0
  • зеленею...
Не знаю... Зря, теме поставлена админом метка "Решена".

Для карточки товара:

Код
// Set Canonic link
$namedonen = 'http://ваш домен';
if($isCustomVariant !==false and !empty($isCustomVariant->usecanonical) and !empty($product->product_parent_id)){
$parent = $product_model ->getProduct($product->product_parent_id);
$document->addHeadLink($namedonen .  JRoute::_($parent->canonical), 'canonical', 'rel', '');
} else {
$document->addHeadLink($namedonen .  JRoute::_($product->canonical), 'canonical', 'rel', '');
}

Для категории:
Код
			//$link = 'index.php?option=com_virtuemart&view=category';
//if($categoryId!==-1){
// $link .= '&virtuemart_category_id='.$categoryId;
//}
//if($manId!==-1){
// $link .= '&virtuemart_manufacturer_id='.$manId;
//}
$namedonen = 'http://ваш домен';
//$domain  = $this->params->get('domain');

$link = 'index.php?option=com_virtuemart&view=category';
if(($categoryId!==-1)&&($categoryId!=0)){
$link .= '&virtuemart_category_id='.$categoryId;
}
if(($manId!==-1)&&($manId!=0)){
$link .= '&virtuemart_manufacturer_id='.$manId;
}


$document->addHeadLink($namedonen . JRoute::_($link, FALSE), 'canonical', 'rel', '' );


Может кто красивей вытащит название домена?
*

bgg87

  • Захожу иногда
  • 164
  • 2 / 0
  • Истина где-то рядом...
Не знаю... Зря, теме поставлена админом метка "Решена".
---
Может кто красивей вытащит название домена?

+1

Тоже интересует данное решение!
А ещё было бы отлично если каноническая ссылка не ссылался на себя же.
Т.е. если зайти в любую категорию VirtueMart, например:
http://site.ru/cat
будет следующее:
Код
<link href="/cat" rel="canonical" />
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Расчёт стоимости товара в VirtueMart за периметр

Автор NIKOLY

Ответов: 0
Просмотров: 263
Последний ответ 04.07.2025, 09:18:31
от NIKOLY
Как вывести ID товара в описании товара?

Автор Stasweb

Ответов: 8
Просмотров: 4229
Последний ответ 28.11.2022, 23:22:27
от Evgen Kulibin
Joomla 3 + VM + Universal AJAX Live Search - как вывести картики товара в поиске?

Автор PSN

Ответов: 10
Просмотров: 9650
Последний ответ 27.03.2022, 17:29:00
от Evgen Kulibin
Ошибка mError: Could not find product with id 385, entries exists for language?

Автор sergspb

Ответов: 0
Просмотров: 2608
Последний ответ 11.03.2022, 14:00:28
от sergspb
Как сделать - Вывод модуля на всех страницах - Кроме в карточке товара?

Автор artem_wrong

Ответов: 15
Просмотров: 3229
Последний ответ 15.02.2022, 15:07:34
от beliyadm