Новости 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 Ответов
  • 3153 Просмотров
*

BeZLiKiy

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Здравствуйте, уважаемые коллеги, я еще пока чайник в веб-дизайне, поэтому сталкиваюсь с трудностями на каждом шагу.  !
Прошу, сильно не закидывать палками, если спрошу элементарные вещи)
Суть вопроса: Имеется интернет-магазин на JoomShopping в него выгружены товары посредством коммерческого плагина 1С-Joomshopping, но с учетом того, что в 1С отсутствуют изображения товара, то и на сайте, разумеется, их нет. Было принято (поспешное) решение собирать фото в просторах интернета и фотографировать самому(китай товар плохо поддается парсингу) Есть уже большая база с фото, которые названы соотвественно артикулу(коду товара) на сайте, их внесение через админку это очень времязатратный процесс.
Сам вопрос: Можно ли выгрузив фото на сайт по ftp, заставить JoomShopping распознавать фото по наименованию и привязывать по соответствию с кодом товара?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
здра.
оптимальный вариант - генерировать несколько изображений разного размера, потом скриптом пробегать по базе и, проверять для товаров с незаполненным изображением, есть ли в папке картинка через file_exists() и вносить путь в базу. изображения все в одной папке хранятся (\components\com_jshopping\files\img_products\), найминг файлов тоже прозрачный
пример для картинки yashma
yashma.jpg - это превью в карточке товара
thumb_yashma.jpg - это превью товара в категории
full_yashma.jpg - это большое изображение для Lightbox

я делал похожее (массово менял названия файлам в соответствии с названием товара), вполне подъемная задача. но мне надо было разово это делать и я запускал скрипт на локалке. для живого сайта на хостинге скрипт должен быть оптимизирован по части нагрузки на сервер.

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

*

BeZLiKiy

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
я делал похожее (массово менял названия файлам в соответствии с названием товара), вполне подъемная задача. но мне надо было разово это делать и я запускал скрипт на локалке. для живого сайта на хостинге скрипт должен быть оптимизирован по части нагрузки на сервер.
Спасибо, за совет. Проблема как раз в том и заключается что я с php только только начал знакомиться и скрипты еще не писал. Только по гайдам необходимые редактирования в php-файлах делал. Т.е. если Ваш скрипт будет с комментариями, может кое как и разберусь))
В моем еще далеком от веб-программирования представлении возникла идея взять за основу экспортированные файлы из базы данных в CSV формате и просто дописать недостающие строки к бд_jshopping_products_images ассоциируя их по product_id и product-ean из бд_jshopping_products, после импортировать обратно, заблаговременно залив в \components\com_jshopping\files\img_products\ все имеющиеся фото) Как думаете, имеет ли право на существование такая идея?

С коммерческими решениями конечно проще, согласен, но руководство уже вряд ли мне позволит увеличивать бюджет сайта, поэтому отчаялся до форумов. Да и самому хочется понимать больше чем управление админкой)
*

BeZLiKiy

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
И вообще можно ли в CSV выгруженном с БД вручную вписать необходимые ID? например столбец с кодом товара скопировать в столбец для ID, чтобы они соответствовали?)
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Код
<?php

    $host = 'localhost';
    $user = 'root';
    $password = '';
    $db = '9122494009_flowerpalette';

    $mysqli = new mysqli($host, $user, $password, $db);

    // проверяем соединение
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit;
    }

    $mysqli->set_charset("utf8");

    // получить товары
    $q2 = "SELECT `product_id`, `alias_ru-RU`, `image` FROM `c6hlo_jshopping_products`";

    $result = $mysqli->query($q2);

    if ( $result === FALSE ) return;
$count=0;
$subst="tsvety_"; // имя для файла, если нет алиаса

$path=__DIR__."/components/com_jshopping/files/img_products/";
echo $path;
    while ( $row = $result->fetch_assoc() )
    {
$name=$row['alias_ru-RU'];
//var_dump($name);
if($name == "") $name = $subst.$row['product_id'];

$name=$name.".jpg";
$thumb="thumb_".$name;
$full="full_".$name;
$id = $row['product_id'];
$sql = "UPDATE `c6hlo_jshopping_products` SET `image` = '$name' , `product_name_image` = '$name' , `product_full_image` = '$full' , `product_thumb_image` = '$thumb'  WHERE `c6hlo_jshopping_products`.`product_id`= '$id'";
//$sql = "UPDATE `c6hlo_jshopping_products_images` SET `image_name` = '$name' , `image_full` = '$full' , `image_thumb` = '$thumb'  WHERE `product_id`= '$id'";



$old=$path."full_".$row['image'];
echo($old);
if(file_exists($old)) { $upd = $mysqli->query($sql); } // выполнить запрос. если файл существует

        $table .= "<br>".$row['product_id']."  ==  ".$name."  ==  ".$row['image'];
$count++;
    }
echo $table;
echo "<br><br>ИТОГО: ".$count;

?>
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
скрипт для локального сервера, данные по имени базы - свои
вместо алиаса получаете ваш код, далее пытаетесь понять, что я там нагородил  ;D
*

dmitry_stas

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

BeZLiKiy

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
скрипт для локального сервера, данные по имени базы - свои
вместо алиаса получаете ваш код, далее пытаетесь понять, что я там нагородил  ;D
Спасибо, ефрит)) Вроде немного разобрался, вместо алиеса скрипт тянет код товара и приписывает ему "product_ean.jpg" что по сути и нужно было, только теперь не могу понять что делать дальше  *ОХ-Х-Х* Если изображение в папке, есть карточка товара с кодом товара, чем мне мог помочь скрипт? Я че то потерял нить повествования ::)
*

BeZLiKiy

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Цитировать
ну так импорт же...
Дмитрий, можно пожалуйста подробнее?) У меня есть только стандартные импорт/экспорт, расширенного нет, т.к. он платный, если знаете иной обходной путь, буду очень признателен)
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
вам нужно в базу добавить пути к изображениям, это делает запрос sql
проверяется наличие картинки, если она есть - запросом в базу заполняются поля с именами картинок
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
У меня есть только стандартные импорт/экспорт
а стандартные разве не умеют изображения импортировать? если нет, то можно в phpMyAdmin экспортировать табличку #__jshopping_products в csv например, добавить в колонку нужные значения, и залить обратно. ну или предложенный скрипт заюзать. только обратите внимание что в ЖШ для 3-й жумлы есть только поле image, остальных нет, они были только в Ж2.5
« Последнее редактирование: 03.12.2018, 15:21:32 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Импорт товара с описанием дополнительных фото товара

Автор NekiyMonster

Ответов: 3
Просмотров: 3370
Последний ответ 02.02.2018, 18:27:40
от nevigen
[решение] Импорт изображений как товара в JoomShopping 3.11.4

Автор sup1rw0re0r

Ответов: 11
Просмотров: 9217
Последний ответ 12.03.2015, 11:37:13
от Timpics
Свой импорт картинок и импорт аттрибутов товара и сохранение заказа в csv

Автор xDD

Ответов: 16
Просмотров: 5811
Последний ответ 15.11.2013, 17:49:04
от bsod9145
Есть ли бесплатное решение для импорта с фото

Автор nick71

Ответов: 0
Просмотров: 1626
Последний ответ 20.04.2013, 19:18:52
от nick71
Переменная url товара

Автор elf39

Ответов: 3
Просмотров: 1562
Последний ответ 22.02.2013, 00:50:02
от elf39