Новости Joomla

Вышел плагин CFI v.2.0.0 - экспорт/импорт материалов Joomla в таблицы.

Вышел плагин CFI v.2.0.0 - экспорт/импорт материалов Joomla в таблицы.

Плагин позволяет делать экспорт материалов Joomla в CSV файл, после чего вы можете отредактировать данные в табличном редакторе (например, Excel или OpenOffice Calc) и затем загрузить файл обратно. В некоторых случаях это удобнее и быстрее.

Плагин позволяет выгружать ID тегов, а также работать с пользовательскими полями материалов Joomla и обычно нередактируемыми свойствами материалов: просмотры, дата изменения и т.д.

Первые версии плагина CFI создал разработчик AlekVolsk для Joomline. Он разработал версии 1.0.0–1.0.16 для Joomla 3. Затем, в 2026 году, плагин был передан компании WebTolk для дальнейшего развития.

CFI v.2.0.0 — Что нового?

  1. Рефакторинг. Плагин полностью переписан заново.
  2. Новый интерфейс импорта/экспорта. Экспорт и импорт открываются в модальном окне. Появилась возможность выбора свойств материала, тегов и пользовательских полей для экспорта непосредственно перед началом экспорта.
  3. Фильтрация материалов при экспорте. Вы можете отфильтровать нужные материалы с помощью стандартных параметров поиска в панели администратора и экспортировать только их: избранные, опубликованные, материалы из определённых категорий, с заданным тегом и т.д.
  4. Импорт и экспорт всех данных материала. Ранее плагин позволял экспортировать только часть данных. Теперь можно изменять все данные материала, доступные в форме редактирования, включая нередактируемые (просмотры, дата изменения и др.). Это позволяет быстро обновлять meta-description или только данные пользовательских полей.
  5. Импорт только пользовательских полей. Обязательным полем для импорта остаётся только articleid. Это позволяет импортировать исключительно данные пользовательских полей без изменения основного содержимого материала.
  6. Joomla 6. Плагин переписан в соответствии с актуальной архитектурой Joomla 4+ и успешно протестирован на Joomla 6.
  7. Для разработчиков: предобработка плагинами. Возможна обработка данных собственными плагинами группы cfi непосредственно перед импортом или экспортом. Доступные события:
    • onExportPrepareData($event)
    • onImportPrepareArticleData($event)

Системные требования

  • Joomla 4.3+
  • PHP 8.1+

Для обновления со старых версий выпущен релиз 1.0.16, в котором добавлен новый сервер обновлений.

Ссылки

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

Evenfrost

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
Есть: http://site.ru/blog/design/item/статья
Нужно: http://site.ru/blog/design/статья

Кто-нибудь подскажет, откуда выпиливать?


-----
Быстрая навигация по топику:
Роутер для ZOO 2.5.12
Роутер для ZOO 3.0.10
« Последнее редактирование: 13.04.2013, 16:40:01 от Sulpher »
*

Kuzmitch

  • Захожу иногда
  • 150
  • 7 / 0
Есть: http://site.ru/blog/design/item/статья
Нужно: http://site.ru/blog/design/статья

Кто-нибудь подскажет, откуда выпиливать?
Тоже интерестно
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Переписыванием роутера или сторонними ЧПУ
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

djforce

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
Ребятт так решил кто это? как в zoo 2.5 со стандартным SEF убрать item ?
*

Kuzmitch

  • Захожу иногда
  • 150
  • 7 / 0
Переписыванием роутера или сторонними ЧПУ
Скиньте у кого есть пример переписанного роутера. или ссылку где можно почитать - как переписать самому.
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Код: php
<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/

// load config
require_once(JPATH_ADMINISTRATOR.'/components/com_zoo/config.php');

function ZooBuildRoute(&$query) {

$app = App::getInstance('zoo');

// init vars
$segments = array();

// frontpage
$task = 'frontpage';

if (@$query['task'] == $task || @$query['view'] == $task) {
$segments[] = $task;
unset($query['task']);
unset($query['view']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// category
$task = 'category';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['category_id'])) {
$segments[] = $task;
if ($query['category_id']) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
}
unset($query['task']);
unset($query['view']);
unset($query['category_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// alpha index
$task = 'alphaindex';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['alpha_char']) && isset($query['app_id'])) {
$segments[] = $task;
$segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
$segments[] = $query['alpha_char'];
unset($query['task']);
unset($query['view']);
unset($query['alpha_char']);
unset($query['app_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// tag
$task = 'tag';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['tag']) && isset($query['app_id'])) {
$segments[] = $task;
$segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
$segments[] = $query['tag'];
unset($query['task']);
unset($query['view']);
unset($query['tag']);
unset($query['app_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}

// item
$task = 'item';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['item_id'])) {
$segments[] = $app->alias->item->translateIDToAlias((int) $query['item_id']);
unset($query['task']);
unset($query['view']);
unset($query['item_id']);
unset($query['category_id']);
}

// feed
$task = 'feed';

if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['type']) && isset($query['app_id']) && isset($query['category_id'])) {
$segments[] = $task;
$segments[] = $query['type'];
$segments[] = $app->alias->application->translateIDToAlias((int) $query['app_id']);
if ($query['category_id']) {
$segments[] = $app->alias->category->translateIDToAlias((int) $query['category_id']);
}
unset($query['task']);
unset($query['view']);
unset($query['type']);
unset($query['app_id']);
unset($query['category_id']);
}

// submission
$task = 'submission';
    $layout = 'submission';

if (((@$query['task'] == $task || @$query['view'] == $task) && @$query['layout'] == $layout)) {
$segments[] = $task;
            $segments[] = $layout;
$segments[] = $app->alias->submission->translateIDToAlias((int) $query['submission_id']);
            $segments[] = $query['type_id'];
            $segments[] = $query['submission_hash'];
            $segments[] = $app->alias->item->translateIDToAlias((int) @$query['item_id']);
unset($query['task']);
unset($query['view']);
unset($query['layout']);
unset($query['submission_id']);
            unset($query['type_id']);
            unset($query['submission_hash']);
            unset($query['item_id']);
}

// submission mysubmissions
$task = 'submission';
    $layout = 'mysubmissions';

if (((@$query['task'] == $task || @$query['view'] == $task) && @$query['layout'] == $layout)) {
$segments[] = $task;
            $segments[] = $layout;
$segments[] = $app->alias->submission->translateIDToAlias((int) $query['submission_id']);
unset($query['task']);
unset($query['view']);
unset($query['layout']);
unset($query['submission_id']);
}

return $segments;
}

function ZooParseRoute($segments) {

$app = App::getInstance('zoo');

// init vars
$vars  = array();
$count = count($segments);

// fix segments (see JRouter::_decodeSegments)
foreach (array_keys($segments) as $key) {
$segments[$key] = str_replace(':', '-', $segments[$key]);
}

// frontpage (with optional pagination)
$task = 'frontpage';

if ($count == 1 && $segments[0] == $task) {
$vars['task'] = $task;
}

if ($count == 2 && $segments[0] == $task) {
$vars['task'] = $task;
$vars['page'] = (int) $segments[1];
}

// category (with optional pagination)
$task = 'category';

if ($count == 2 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[1]);
}

if ($count == 3 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[1]);
$vars['page']        = (int) $segments[2];
}

// alpha index (with optional pagination)
$task = 'alphaindex';

if ($count == 3 && $segments[0] == $task) {
$vars['task']       = $task;
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars['alpha_char'] = (string) $segments[2];
}

if ($count == 4 && $segments[0] == $task) {
$vars['task']       = $task;
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars['alpha_char'] = (string) $segments[2];
$vars['page']       = (int) $segments[3];
}

// tag (with optional pagination)
$task = 'tag';

if ($count == 3 && $segments[0] == $task) {
$vars['task']   = $task;
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars['tag']    = (string) $segments[2];
}

if ($count == 4 && $segments[0] == $task) {
$vars['task']   = $task;
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[1]);
$vars['tag']    = (string) $segments[2];
$vars['page']   = (int) $segments[3];
}

// item
$task = 'item';

if ($count == 1) {
$vars['task']    = $task;
$vars['item_id'] = (int) $app->alias->item->translateAliasToID($segments[0]);
}

// feed
$task = 'feed';

if ($count == 3 && $segments[0] == $task) {
$vars['task'] = $task;
$vars['type'] = (string) $segments[1];
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[2]);
}

if ($count == 4 && $segments[0] == $task) {
$vars['task']        = $task;
$vars['type']        = (string) $segments[1];
$vars['app_id'] = (int) $app->alias->application->translateAliasToID($segments[2]);
$vars['category_id'] = (int) $app->alias->category->translateAliasToID($segments[3]);
}

// submission
$task = 'submission';
    $layout = 'submission';

if ($count == 2 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']   = $task;
$vars['layout'] = (string) $segments[1];
}

if ($count == 5 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']            = $task;
$vars['layout']          = (string) $segments[1];
$vars['submission_id']   = (int) $app->alias->submission->translateAliasToID($segments[2]);
            $vars['type_id']         = (string) $segments[3];
            $vars['submission_hash'] = (string) $segments[4];
}

if ($count == 6 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']            = $task;
$vars['layout']          = (string) $segments[1];
$vars['submission_id']   = (int) $app->alias->submission->translateAliasToID($segments[2]);
            $vars['type_id']         = (string) $segments[3];
            $vars['submission_hash'] = (string) $segments[4];
            $vars['item_id']         = (int) $app->alias->item->translateAliasToID($segments[5]);
}

// submission mysubmissions
$task = 'submission';
    $layout = 'mysubmissions';

if ($count == 2 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']   = $task;
$vars['layout'] = (string) $segments[1];
}

if ($count == 3 && $segments[0] == $task && $segments[1] == $layout) {
$vars['task']          = $task;
$vars['layout']        = (string) $segments[1];
$vars['submission_id'] = (int) $app->alias->submission->translateAliasToID($segments[2]);
}

return $vars;
}
*

Evenfrost

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
Виталик,
так дико сложно было указать строчку в файле, которую надо править, чтобы другим не пришлось перелопачивать весь документ? Не понимаю таких людей... Но и на том спасибо.

Для того, чтобы убрать /item/, нужно удалить строку 97 (ориентировочно, в ZOO 2.4.12) в файле \components\com_zoo\router.php:
Код: php
$segments[] = $task;
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Для того, чтобы убрать /item/, нужно удалить строку 97 (ориентировочно, в ZOO 2.4.12) в файле \components\com_zoo\router.php:
Код: php
$segments[] = $task;
Если начали искать изменения, то просмотрите файл до конца и напишите обо всех отличиях от оригинального и проверьте работоспособность файла по своей инструкции прежде чем советовать другим просто убрать одну строку.
*

djforce

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
Спасибо, работает
*

pavel_28121

  • Захожу иногда
  • 266
  • 29 / 0
  • Cart for ZOO, Watermark for ZOO, Price fo ZOO
А как убрать category ?
Расширения для Yootheme ZOO http://zooapps.ru, а также профессиональная помощь по Yootheme ZOO. Расширения для ZOO на заказ. ZooCart, ZooWatermark, ZooPrice.
*

djforce

  • Осваиваюсь на форуме
  • 39
  • 0 / 0
а как вы убираете?
Примажусь, тоже интересно)))
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
последнее время не убираю, так как на все категории есть пункты меня, а раньше в ZooBuildRoute просто не дописывал сегмент "category", а в ZooParseRoute сначала проверял является ли алиас категорией, а потом материалом
*

pavel_28121

  • Захожу иногда
  • 266
  • 29 / 0
  • Cart for ZOO, Watermark for ZOO, Price fo ZOO
А я убираю сторонним SEF и правкой sef_ext
Расширения для Yootheme ZOO http://zooapps.ru, а также профессиональная помощь по Yootheme ZOO. Расширения для ZOO на заказ. ZooCart, ZooWatermark, ZooPrice.
*

agro

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Тоже хотелось бы убрать item, items, itemstable в роутере каталога DJ2. Может кто-то имеет готовое решение.
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
Цитировать
Как убрать /item/ из тела ссылки элемента?

В zoo 2.5.4 уже этой проблемы нет, нужно просто обновиться до этой версии.
*

Evenfrost

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
Цитировать
В zoo 2.5.4 уже этой проблемы нет
И как эта проблема решается в 2.5.4? У меня как были в ссылках item'ы, так и остались. Стоит 2.5.5.
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
http://www.yootheme.com/support/question/154
Цитировать
ZOO 2.5.4 fixed the content duplication issue. Try it and tell me if that works for you too

По крайней мере у меня работает и item'ов нет, однако category остались, когда переходишь из титульной страницы в одну из категорий.

Joomla 1.5.23 + zoo 2.5.4

P.S. только что обновил  zoo до 2.5.6 и category совсем исчезли.
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
Стоит заметить, что старые ссылки с item'ами остались работоспособными.
« Последнее редактирование: 14.01.2012, 12:53:34 от ankoch »
*

61rus

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
Так же обновился до последней версии, но item и catalog остались. возможно настройки где есть?
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
Глупый вопрос, однако - SEO Joomla включено?
*

61rus

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
Подскажите, это где?:)
*

61rus

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
Если вы в кофигурации самой Joomla, то конечно:
Search Engine Friendly URLs
Use URL rewriting
Adds Suffix to URL
включено
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
Да, это там. У меня Joomla 1.5.23, всё работает при аналогичных настройках.

Кстати, после этих изменений с item'ами и category'ями, в индексе у Яндекс вдруг ни с того ни с сего страниц в поиске увеличилось ровно в 3 раза.
*

61rus

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
У меня 1.7.3 стоит ничего нет после обновления.
Нашел на одном сайте переделанный router.php убирается, но он для более старой версии написан, меняются другие урлы в худшую сторону. У вас Яндекс меньше чем за неделю прошустрил весь сайт и выкинул это уже в поиск?
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
У вас Яндекс меньше чем за неделю прошустрил весь сайт и выкинул это уже в поиск?
Примерно за неделю.
*

61rus

  • Осваиваюсь на форуме
  • 47
  • 1 / 0
*

j-lubitel

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Ребят, а никто не пытался убрать component/zoo/tag/что-то-тут в пути при выводе результатов поиска по тэгам в zoo?
А еще если в тэге забито два слова, например "такая статья", то в пути получится "/такая%20статья", как бы убрать эти %20?
Joomla 1.5.23, zoo 2.5.6.
*

j-lubitel

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Я так понял, что за формирование ссылки по каждому тегу в модуле zootag (файл helper.php) отвечает строка

Код: php
$tag->href   = $menu_item ? sprintf('index.php?option=com_zoo&task=tag&tag=%s&app_id=%d%s', $tag->name, $application->id, $itemid) : $this->app->route->tag($application->id, $tag->name);

Только как её изменить, чтобы убрать "component/zoo"?
*

j-lubitel

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
Или в файле component/com_zoo/router.php нужно будет добавлять дополнительные строки вот сюда?:
Код: php
	// tag
$task = 'tag';
if ((@$query['task'] == $task || @$query['view'] == $task) && isset($query['tag']) && isset($query['app_id'])) {
$segments[] = $task;
$segments[] = $app->alias->translateIDToAlias((int) $query['app_id']);
$segments[] = $query['tag'];
unset($query['task']);
unset($query['view']);
unset($query['tag']);
unset($query['app_id']);

// pagination
if (isset($query['page'])) {
$segments[] = $query['page'];
unset($query['page']);
}
}
Только что добавлять? Подскажите знающие люди.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ссылки в JBZoo

Автор Whitelamb

Ответов: 3
Просмотров: 4748
Последний ответ 15.09.2017, 22:17:11
от isay777
[Решено] Как в модуле ZOO Item вывести название и описание категории?

Автор frolov.ar

Ответов: 13
Просмотров: 6522
Последний ответ 01.04.2017, 13:29:52
от rivermc
Как настроить отображение страницы элемента product в виде cookbook?

Автор saschka

Ответов: 1
Просмотров: 1911
Последний ответ 12.01.2017, 16:44:50
от shtier
Запись данных из элемента

Автор yandex_hb

Ответов: 0
Просмотров: 1364
Последний ответ 10.10.2016, 20:23:00
от yandex_hb
Модуль: ZOO item популярные за неделю ( НЕ бесплатно)

Автор dee88

Ответов: 4
Просмотров: 2497
Последний ответ 29.08.2016, 16:13:28
от ameli90