Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Добрый день,

Подскажите пожалуйста,

Как автоматически пересоздать псевдоним (алиас) товаров в VirtueMart 3 - ?

Есть ли какое-то решение, что б в ручную не пересохнаять каждый товар...
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

KKAAZZOO

  • Живу я здесь
  • 2288
  • 118 / 9
Как это автоматически? А откуда брать новые алиасы? Только если скачать табличку базы данных прогнать через программу-транслитератор нужные данные и обратно ипортировать в базу
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Лучше написать скрипт, который будет пробегать по записям и менять алиасы. Готового решения не знаю.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Понятно, тогда только в ручную - открывать и сохранять
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

warlocksp

  • Завсегдатай
  • 1198
  • 17 / 4
Вот нашел, подскажите как правильно ее воспользоваться?

Код
    function translit($str) {
        $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
        $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', 'y', 'e', 'yu', 'ya');
        return str_replace($rus, $lat, $str);
    }

}
    function getUniqCategorySlug($new_slug){
        $db=JFactory::getDBO();
        $db->setQuery("SELECT COUNT(*) FROM #__virtuemart_categories_ru_ru WHERE slug='$new_slug'");
        $cnt=$db->loadResult();
        if ($db->getErrorNum()) {
                echo $db->stderr(true);
                die("1117");
            }
           
            if(empty($cnt)){
                return true;
            }else{
                return false;
            }
           
    }
        $db = JFactory::getDBO();
        $is_categories = false;

        if ($is_categories) {
            $db->setQuery("SELECT * FROM #__virtuemart_categories_ru_ru ");

            $rows = $db->loadObjectList();
            if ($db->getErrorNum()) {
                echo $db->stderr(true);
                die("111");
            }

            foreach ($rows AS $r) {
                $new_slug = translit($r->slug);

 $idx=1;
                $new_slug_base=$new_slug;
                while(!getUniqCategorySlug($new_slug)){                   
                    $new_slug=$new_slug_base.$idx;
                    $idx++;
                }

                $db->setQuery("UPDATE #__virtuemart_categories_ru_ru SET slug='$new_slug' WHERE virtuemart_category_id={$r->virtuemart_category_id}");
                $db->execute();
                if ($db->getErrorNum()) {
                    echo $db->stderr(true);
                    die("112");
                }
            }
        } else {
                  $db->setQuery("SELECT * FROM #__virtuemart_products_ru_ru ");

            $rows = $db->loadObjectList();
            if ($db->getErrorNum()) {
                echo $db->stderr(true);
                die("111");
            }

            foreach ($rows AS $r) {
                $new_slug = translit($r->slug);
                $db->setQuery("UPDATE #__virtuemart_products_ru_ru SET slug='$new_slug' WHERE virtuemart_product_id={$r->virtuemart_product_id}");
                $db->execute();
                if ($db->getErrorNum()) {
                    echo $db->stderr(true);
                    die("112");
                }
            }
        }
        die("555");
Мудр не тот, кто знает много, а тот, чьи знания полезны. Эсхил
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Пусть я буду некропостером, но только что столкнулся с такой же задачей. Можно не писать скрипт, а "бахнуть" прямо в базе, используя хранимые процедуры.
Вот так вот:
Код: mysql
DELIMITER $$
--
-- Functions
--
CREATE FUNCTION `transliterate_func`(`original` VARCHAR(512)) RETURNS varchar(512) CHARSET `utf8`
BEGIN

    DECLARE `translit` VARCHAR(512) DEFAULT '';
    DECLARE `len` INT(3) DEFAULT 0;
    DECLARE `pos` INT(3) DEFAULT 1;
    DECLARE `letter` CHAR(4);

    SET `original` = TRIM(LOWER(`original`));
    SET `len` = CHAR_LENGTH(`original`);

    WHILE (`pos` <= `len`) DO
    SET `letter` = SUBSTRING(`original`, `pos`, 1);

    CASE TRUE
        WHEN `letter` IN ('á', 'à', 'â', 'ä', 'å', 'ā', 'ą', 'ă', 'а', 'а') THEN SET `letter` = 'a';
        WHEN `letter` IN ('č', 'ć', 'ç', 'ć') THEN SET `letter` = 'c';
        WHEN `letter` IN ('ď', 'đ', 'д', 'д') THEN SET `letter` = 'd';
        WHEN `letter` IN ('é', 'ě', 'ë', 'è', 'ê', 'ē', 'ę', 'е', 'е') THEN SET `letter` = 'e';
        WHEN `letter` IN ('ģ', 'ğ') THEN SET `letter` = 'g';
        WHEN `letter` IN ('í', 'î', 'ï', 'ī', 'î', 'и', 'і') THEN SET `letter` = 'i';
        WHEN `letter` IN ('ķ') THEN SET `letter` = 'k';
        WHEN `letter` IN ('ľ', 'ĺ', 'ļ', 'ł') THEN SET `letter` = 'l';
        WHEN `letter` IN ('ň', 'ņ', 'ń', 'ñ') THEN SET `letter` = 'n';
        WHEN `letter` IN ('ó', 'ö', 'ø', 'õ', 'ô', 'ő', 'ơ', 'о', 'о') THEN SET `letter` = 'o';
        WHEN `letter` IN ('ŕ', 'ř', 'р', 'р') THEN SET `letter` = 'r';
        WHEN `letter` IN ('š', 'ś', 'ș', 'ş', 'с', 'с') THEN SET `letter` = 's';
        WHEN `letter` IN ('ť', 'ț') THEN SET `letter` = 't';
        WHEN `letter` IN ('ú', 'ů', 'ü', 'ù', 'û', 'ū', 'ű', 'ư') THEN SET `letter` = 'u';
        WHEN `letter` IN ('ý', 'у', 'у') THEN SET `letter` = 'y';
        WHEN `letter` IN ('ž', 'ź', 'ż') THEN SET `letter` = 'z';

        WHEN `letter` = 'б' THEN SET `letter` = 'b';
        WHEN `letter` = 'в' THEN SET `letter` = 'v';
        WHEN `letter` = 'г' THEN SET `letter` = 'g';
        WHEN `letter` = 'д' THEN SET `letter` = 'd';
        WHEN `letter` = 'ж' THEN SET `letter` = 'zh';
        WHEN `letter` = 'з' THEN SET `letter` = 'z';
        WHEN `letter` = 'и' THEN SET `letter` = 'i';
        WHEN `letter` = 'й' THEN SET `letter` = 'i';
        WHEN `letter` = 'к' THEN SET `letter` = 'k';
        WHEN `letter` = 'л' THEN SET `letter` = 'l';
        WHEN `letter` = 'м' THEN SET `letter` = 'm';
        WHEN `letter` = 'н' THEN SET `letter` = 'n';
        WHEN `letter` = 'п' THEN SET `letter` = 'p';
        WHEN `letter` = 'т' THEN SET `letter` = 't';
        WHEN `letter` = 'ф' THEN SET `letter` = 'f';
        WHEN `letter` = 'х' THEN SET `letter` = 'ch';
        WHEN `letter` = 'ц' THEN SET `letter` = 'c';
        WHEN `letter` = 'ч' THEN SET `letter` = 'ch';
        WHEN `letter` = 'ш' THEN SET `letter` = 'sh';
        WHEN `letter` = 'щ' THEN SET `letter` = 'shch';
        WHEN `letter` = 'ъ' THEN SET `letter` = '';
        WHEN `letter` = 'ы' THEN SET `letter` = 'y';
        WHEN `letter` = 'э' THEN SET `letter` = 'e';
        WHEN `letter` = 'ю' THEN SET `letter` = 'ju';
        WHEN `letter` = 'я' THEN SET `letter` = 'ja';

        WHEN `letter` IN
             ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
              'v', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
            THEN SET `letter` = `letter`;

        ELSE
            SET `letter` = '-';
        END CASE;

    SET `translit` = CONCAT(`translit`, `letter`);
    SET `pos` = `pos` + 1;
    END WHILE;

    WHILE (`translit` REGEXP '\-{2,}') DO
    SET `translit` = REPLACE(`translit`, '--', '-');
    END WHILE;

    RETURN TRIM(BOTH '-' FROM `translit`);

END$$

DELIMITER ;

Ну и потом, соответсвенно, с префиксами своих таблиц
Код: mysql
/*для категорий*/
UPDATE
    `#__virtuemart_categories_ru_ru` `cat`
SET `cat`.`slug` = transliterate_func(`cat`.`category_name`);
/*Для товаров*/
UPDATE
    `#__virtuemart_products_ru_ru` `prod`
SET `prod`.`slug` = transliterate_func(`prod`.`product_name`);
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
При изменении псевдонимов хорошо бы продумать и устойчивость позиций в поисковиках.
Не так давно тоже сталкивался с таким вопросом. Написал небольшой скрипт, вот тема: Массовое изменение названий и псевдонимов товаров VirtueMart
Чтобы стандартные редиректы Joomla работали, в VirtueMart надо отключить обработку ошибки 404.
Возможно, будет интересно: Интеграция с Ozon
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Псевдоним и url товара кирилицей

Автор lalalag

Ответов: 2
Просмотров: 1360
Последний ответ 02.03.2018, 14:47:17
от lalalag
Отзывы не публикуются автоматически

Автор artur0588

Ответов: 1
Просмотров: 1121
Последний ответ 11.08.2016, 12:15:55
от hels
vmError: VmTableData Псевдоним отсутствует! Не удается сохранить запись без Псевдоним?

Автор Алексан

Ответов: 5
Просмотров: 4020
Последний ответ 21.01.2015, 22:39:10
от 9073355
Псевдоним отсутствует! Не удается сохранить запись

Автор gooodwin67

Ответов: 4
Просмотров: 1500
Последний ответ 05.06.2014, 15:21:11
от borro
[РЕШЕНО!] Русский алиас категории или товара в VirueMart 2 не работают

Автор atatatatata

Ответов: 3
Просмотров: 4684
Последний ответ 25.12.2012, 13:35:08
от solidbreaks