Новости Joomla

WT Set elements v.1.0.0: плагин поля для RadicalMart

WT Set elements v.1.0.0: плагин поля для RadicalMart

👩‍💻 WT Set elements v.1.0.0: плагин поля для RadicalMart.Плагин пользовательского поля компонента интернет-магазина для Joomla - RadicalMart (@radicalmart). Плагин позволяет создавать набор элементов, включающих заголовок, изображение и краткое описание и выбирать необходимые из них в товаре. Отображать наборы элементов можно в виде товара и в списке товаров (в своих макетах). От клиента поступил запрос на возможность добавления для товаров в RadicalMart списка повторяемых элементов. Это должен был быть редактируемый в одном месте список функций и режимов, которые могли относиться к разным товарам одной категории в разных сочетаниях. Во вкладке параметров "Отображение" вы можете выбрать отображать или нет элементы в категории товаров и/или карточке товара. Для каждого вида возможно выбрать собственный макет. Файлы макета находятся в /layouts/plugins/radicalmart_fields/wtsetelements. Вы можете использовать свои файлы макета в формате .php, разместив их в этой папке. Кроме того, файлы макетов можно переопределить стандартным способом Joomla, после чего они будут доступны по адресу: /templates/YOUR_TEMPLATE/html/layouts/plugins/radicalmart_fields/wtsetelements.Плагин предполагает самостоятельную разработку макетов вывода. Макеты "из коробки" следует рассматривать как образец для создания собственных.Плагин бесплатный. Протестирован на Joomla 5.3.3 и RadicalMart 2.2.4.Плагин разработан в соавторстве участниками нашего сообщества: Сергеем Сергевниным (@gresserg) и Сергеем Толкачёвым (@sergeytolkachyov).Страница расширенияGitHub расширения@joomlafeed#joomla #расширения #radicalmart

IWS.BY VK app widget - Виджет приложения ВКонтакте для Joomla

IWS.BY VK app widget - Виджет приложения ВКонтакте для Joomla

👩‍💻 IWS.BY VK app widget - Виджет приложения ВКонтакте для Joomla.Модуль «Виджет приложения ВКонтакте» для Joomla поможет добавить на сайт виджет с карточкой приложения или игры из социальной сети ВКонтакте.У вас возникла потребность отобразить информацию о ваших приложениях или играх на сайте с кнопкой перехода в социальную сеть, то этот модуль для Вас. Вам не придется хранить информацию о приложении у себя на сайте, все данные получаются через публичное API социальной сети ВКонтакте. Хранение информации на стороне ВКонтакте позволит Вам не нагружать базу данных сайта.В модуле имеется всего несколько опций и полей, которые максимально упрощают публикацию виджета. Первая опция позволяет подключить публичное API социальной сети ВКонтакте, необходимое для работы виджетов. Следующее поле потребует ввести идентификатор приложения или игры, присвоенный в социальной сети ВКонтакте. Следующая опция позволит выбрать вид отображаемой информации в виджете.Модуль имеет 3 варианта отображения:- карточка- участники- кнопкаПоддерживаемые версии Joomla: Joomla 3, Joomla 4, Joomla 5.Страница расширенияJoomla Extensions Directory#joomla #расширения #vk

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 #расширения

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

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Всем добрый день, столкнулся вод с такой ошибко при выгрузке товаров на Яндекс Маркет, This page contains the following errors:

error on line 2459 at column 101: PCDATA invalid Char value 1
Below is a rendering of the page up to the first error.


Joolmla 2.5 + VM2
Второй день не могу разобратся что за такая ошибка.

врде в строке
Код
$product_name = htmlspecialchars(trim(strip_tags($row->product_name)));

Кто знает подскажите пожалуйста куда копать...

Сам код скрипта
Код
<?php
/*
 * version 2.10.1
 * author Bordyzhan Sergey (cmsdev.org)
*/

define('NAME', 'Название организации'); // название организации (не должно превышать 20 символов)
define('DESC', 'Описание организации'); // описание организации
define('CURRENCY', 'RUB'); // валюта магазина (RUB, USD, EUR, UAH, KZT)
define('DELIVERY', 'false'); // наличие доставки в магазине (true - есть, false - нет)
define('EXCLUDE_CAT', '0'); // id категорий которые нужно исключить из выгрузки, перечислить через запятую, например define('EXCLUDE_CAT', '2,8,54,5')
define('EXCLUDE_PROD', '0'); // id товаров которые нужно исключить из выгрузки, перечислить через запятую, например define('EXCLUDE_PROD', '2,8,54,5')
define('FILE', 0); // cоздать файл vm2_market.xml (define('FILE', 1)) или генерировать данные динамически (define('FILE', 0)), если define('FILE', 0), то в настройках якдеса нужно указать ссылку http://ваш_сайт/market/vm2_market.php, если define('FILE', 1), то http://ваш_сайт/market/vm2_market.xml, также, если define('FILE', 1), то после каждого обновления товаров в магазине, нужно в браузере набрать адрес http://ваш_сайт/market/vm2_market.php и запустить скрипт, чтоб сгенерировать файл vm2_market.xml

define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
define('JPATH_BASE', dirname(__FILE__).DS.'..');

require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');
require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');

$app = JFactory::getApplication('site');
$app->initialise();

require_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');
require_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'calculationh.php');
VmConfig::loadConfig();

$db = JFactory::getDBO();

$live_site = trim(str_replace('market/', '', JURI::base()), '/').'/';
$lang = VmConfig::get('vmlang', 'en_gb');
$calculator = calculationHelper::getInstance();

function getImages($id) {

global $db, $live_site;

$query = 'SELECT a.file_url FROM #__virtuemart_medias a JOIN #__virtuemart_product_medias b ON b.virtuemart_media_id = a.virtuemart_media_id WHERE a.published = 1 AND b.virtuemart_product_id = '.$id.' ORDER BY a.virtuemart_media_id LIMIT 10';
$db->setQuery($query);
$rows = $db->loadObjectList();

$media = '';
foreach ($rows as $row) {
$media .= '<picture>'.$live_site.htmlspecialchars(str_replace(' ', '%20', $row->file_url)).'</picture>'."\n";
}

return $media;
}

if (!FILE) {
ob_start('ob_gzhandler', 9);
header('Content-Type: application/xml; charset=utf-8');
} else {
header('Content-Type: text/html; charset=UTF-8');
}

$xml = '<?xml version="1.0" encoding="utf-8"?>'."\n";
$xml .= '<!DOCTYPE yml_catalog SYSTEM "shops.dtd">'."\n";
$xml .= '<yml_catalog date="'.date('Y-m-d H:i').'">'."\n";
$xml .= '<shop>'."\n";
$xml .= '<name>'.htmlspecialchars(mb_substr(NAME, 0, 20, 'UTF-8')).'</name>'."\n";
$xml .= '<company>'.htmlspecialchars(DESC).'</company>'."\n";
$xml .= '<url>'.$live_site.'</url>'."\n";
$xml .= '<currencies>'."\n";
$xml .= '<currency id="'.CURRENCY.'" rate="1"/>'."\n";
$xml .= '</currencies>'."\n";
$xml .= '<categories>'."\n";

$query = 'SELECT a.category_parent_id, a.category_child_id, b.category_name FROM #__virtuemart_category_categories a RIGHT JOIN #__virtuemart_categories_'.$lang.' b ON b.virtuemart_category_id = a.category_child_id WHERE a.category_child_id NOT IN ('.EXCLUDE_CAT.') ORDER BY a.category_child_id';
$db->setQuery($query);
$rows = $db->loadObjectList();

$exclude_cat_arr = explode(',', EXCLUDE_CAT);

foreach ($rows as $row) {
$cat_parent_id = $row->category_parent_id;
$cat_child_id = $row->category_child_id;
$cat_name = htmlspecialchars(trim(strip_tags($row->category_name)));

if ($cat_name == '') {
continue;
}

if ($cat_parent_id == 0 || in_array($cat_parent_id, $exclude_cat_arr)) {
$xml .= '<category id="'.$cat_child_id.'">'.$cat_name.'</category>'."\n";
} else {
$xml .= '<category id="'.$cat_child_id.'" parentId="'.$cat_parent_id.'">'.$cat_name.'</category>'."\n";
}
}

$xml .= '</categories>'."\n";
$xml .= '<offers>'."\n";

$query = 'SELECT DISTINCT a.virtuemart_product_id, a.product_sku, a.virtuemart_vendor_id, a.product_in_stock, b.product_name, b.product_desc, d.product_tax_id, d.product_discount_id, d.product_price, d.product_override_price, d.override, d.product_currency, e.mf_name, g.virtuemart_category_id FROM (#__virtuemart_product_categories g LEFT JOIN (#__virtuemart_product_prices d RIGHT JOIN ((#__virtuemart_product_manufacturers f RIGHT JOIN #__virtuemart_products a ON f.virtuemart_product_id = a.virtuemart_product_id) LEFT JOIN #__virtuemart_manufacturers_'.$lang.' e ON f.virtuemart_manufacturer_id = e.virtuemart_manufacturer_id LEFT JOIN #__virtuemart_products_'.$lang.' b ON b.virtuemart_product_id = a.virtuemart_product_id) ON d.virtuemart_product_id = a.virtuemart_product_id) ON g.virtuemart_product_id = a.virtuemart_product_id) WHERE a.published = 1 AND d.product_price > 0 AND b.product_name <> \'\' AND g.virtuemart_category_id NOT IN ('.EXCLUDE_CAT.') AND a.virtuemart_product_id NOT IN ('.EXCLUDE_PROD.') GROUP BY a.virtuemart_product_id';
$db->setQuery($query);
$rows = $db->loadObjectList();

foreach ($rows as $row) {

$product_name = htmlspecialchars(trim(strip_tags($row->product_name)));

if ($product_name == '') {
continue;
}

$product_id = $row->virtuemart_product_id;
$product_cat_id = $row->virtuemart_category_id;
$row->categories = array($product_cat_id);
$prices = $calculator->getProductPrices($row);

$type = $row->mf_name ? ' type="vendor.model"' : '';
$url = str_replace(array('/market/', '//', 'http:/'), array('', '/', 'http://'), $live_site.JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$product_id.'&virtuemart_category_id='.$product_cat_id));

//$available = $row->product_in_stock ? 'true' : 'false';
//$xml .= '<offer'.$type.' id="'.$product_id.'" available="'.$available.'">'."\n";

$xml .= '<offer'.$type.' id="'.$product_id.'" available="true">'."\n";
$xml .= '<url>'.$url.'</url>'."\n";
$xml .= '<price>'.$prices['salesPrice'].'</price>'."\n";
$xml .= '<currencyId>'.CURRENCY.'</currencyId>'."\n";
$xml .= '<categoryId>'.$product_cat_id.'</categoryId>'."\n";

$xml .= getImages($product_id);

$xml .= '<delivery>'.DELIVERY.'</delivery>'."\n";

if ($row->mf_name) {
$xml .= '<vendor>'.htmlspecialchars($row->mf_name).'</vendor>'."\n";
$xml .= '<model>'.$product_name.'</model>'."\n";
} else {
$xml .= '<name>'.$product_name.'</name>'."\n";
}

//$xml .= '<vendorCode>'.htmlspecialchars($row->product_sku).'</vendorCode>';

if ($row->product_desc) {
$xml .= '<description>'.htmlspecialchars(strip_tags($row->product_desc)).'</description>'."\n";
}

$xml .= '</offer>'."\n";
}

$xml .= '</offers>'."\n";
$xml .= '</shop>'."\n";
$xml .= '</yml_catalog>';

if (FILE) {
$xml_file = fopen('vm2_market.xml', 'w+');

if (!$xml_file) {
echo 'Ошибка открытия файла';
} else {
ftruncate($xml_file, 0);
fputs($xml_file, $xml);

echo 'Файл создан, url - <a href="'.$live_site.'market/vm2_market.xml">'.$live_site.'market/vm2_market.xml</a>';
}

fclose($xml_file);
} else {
echo $xml;
}
?>

Главное этот скрипт на других сайтах ранее работал четко

Ссылка на залитый скрипт _http://witsons.ru/market/vm2_market.php
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Знак
Код: html4strict
\
в названии
Код: html4strict
Сиро\01кко
вызвал данную ошибку.
Исправьте.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

jservice

  • Захожу иногда
  • 118
  • 1 / 0
Че то не найду не как Сиро\01кко  это в скрипте или в самом каком то товаре?
Сори за назойливость, второй день уже мучаюсь с ним не как не могу выкупить ошибка где.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
В товаре.
В личку не по делу не пишите (см. подпись).
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Установка целей Яндекс метрика

Автор kamenev

Ответов: 4
Просмотров: 2714
Последний ответ 06.12.2022, 16:56:30
от kamenev
Не работает Вебвизор Яндекс из-за mootools

Автор MultiMatrix83

Ответов: 5
Просмотров: 4437
Последний ответ 01.03.2022, 14:40:23
от draff
Ошибка загрузки скрипта

Автор shane

Ответов: 0
Просмотров: 1445
Последний ответ 17.09.2019, 01:35:43
от shane
Ошибка 500 вместо 404 на несуществующих страницах с расширением только php

Автор old_lotar

Ответов: 12
Просмотров: 2641
Последний ответ 12.02.2019, 12:58:13
от draff
Ошибка в слове на главной странице. Как исправить?

Автор nqui

Ответов: 3
Просмотров: 3405
Последний ответ 29.03.2018, 05:15:41
от TkGhoul