Новости Joomla

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

👩‍💻 Вместе мы развиваем Joomla: станьте Joomfluencer!

👩‍💻 Вместе мы развиваем Joomla: станьте Joomfluencer!

Вы уверенно чувствуете себя перед камерой, динамичны, обаятельны и всегда улыбаетесь? Чувствуете себя искателем приключений, готовым поделиться своими исследованиями CMS Joomla!, взять интервью у видных деятелей сообщества, пообщаться лично или по видеосвязи с волонтерами Joomla или отправиться на поиски новых идей?

Joomla ищет одного или нескольких волонтеров, готовых вдохнуть новую жизнь в обсуждение Joomla, ее CMS, пользователей, сообщества и многого другого.

Возможны самые разные форматы и темы: шортсы, интервью, аналитика и разборы в режиме реального времени, быстрые советы и рекомендации, знакомство с миром Joomla, изучение открытого исходного кода... Нет никаких ограничений!

Joomla! уже активно представлена ​​во многих социальных сетях:
- 155K подписчиков на Facebook,
- 55K подписчиков на X (ранее Twitter),
- 16K подписчиков на YouTube,
- 14K подписчиков на LinkedIn,
- 5,7K подписчиков в Instagram
а так же другие площадки ждут вас. Аккаунты Threads и Bluesky относительно новые, но их популярность только растёт!

А если хватит энергии, можно рассмотреть и TikTok!

❓ Итак, вы готовы?
👉 Свяжитесь с отделом маркетинга по адресу: marketing@community.joomla.org

Подробности в статье в Joomla Community Magazine.

@joomlafeed

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

Magos

  • Захожу иногда
  • 53
  • 0 / 0
Имеем Joomla 1.7.3 + Zoo 2.5.6 проблема старая но видимо так толком и не решенная дубли статей пример:
Имеем запись "Запись" в категориях "1,2,3" получаем на выходе:

1/item/запись
2/item/запись
3/item/запись

Как решить проблему или хотя бы убрать категорию и item из url? На всякий случай привожу код router.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) {
$segments[] = $task;
unset($query['task']);
unset($query['view']);

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

if (@$query['view'] == $task) {
unset($query['layout']);
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']);
}
}

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

// 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[] = $task;
$segments[] = $app->alias->item->translateIDToAlias((int) $query['item_id']);
unset($query['task']);
unset($query['view']);
unset($query['item_id']);
}

if (@$query['view'] == $task) {
unset($query['layout']);
unset($query['view']);
}

// 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 == 2 && $segments[0] == $task) {
$vars['task']    = $task;
$vars['item_id'] = (int) $app->alias->item->translateAliasToID($segments[1]);
}

// 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]);
}

// try to retrieve vars from menu item
if (empty($vars)) {
if ($menu_item = $app->object->create('JSite')->getMenu()->getActive()) {
$vars['task'] = @$menu_item->query['view'];

switch ($vars['task']) {
case 'frontpage':
if ($count == 1) {
$vars['page'] = (int) $segments[0];
}

break;
case 'category':
if ($count == 1) {
$vars['page'] = (int) $segments[0];
$vars['category_id'] = @$menu_item->query['category_id'];
}

break;
default:
break;
}
}
}

return $vars;
}[ /code]

Помогите пожалуйста
« Последнее редактирование: 09.02.2012, 18:25:52 от Magos »
*

Magos

  • Захожу иногда
  • 53
  • 0 / 0
Проблема решена установкой sh404SEF + плагина под zoo.
*

max777

  • Новичок
  • 3
  • 0 / 0
Приветствую, а можно чуть поподробнее - как решил проблему? какой плагин?
*

Apoca1ypto

  • Давно я тут
  • 749
  • 71 / 0
Как убрать /item/ из тела ссылки элемента
По поводу дублей, Zoo добавляет тэг c каноническим URL, который поддерживают Google и Яндекс.
Во время спора в Интернете Ваш оппонент приводит неопровержимые доказательства своей точки зрения? Не отчаивайтесь. До...тесь до орфографии.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать /item/ из тела ссылки элемента?

Автор Evenfrost

Ответов: 151
Просмотров: 52200
Последний ответ 12.03.2018, 12:05:20
от Apoca1ypto
[Решено] Как в модуле ZOO Item вывести название и описание категории?

Автор frolov.ar

Ответов: 13
Просмотров: 6926
Последний ответ 01.04.2017, 13:29:52
от rivermc
Модуль: ZOO item популярные за неделю ( НЕ бесплатно)

Автор dee88

Ответов: 4
Просмотров: 2606
Последний ответ 29.08.2016, 16:13:28
от ameli90
Zoo item (настройка)

Автор altry1st

Ответов: 26
Просмотров: 11251
Последний ответ 12.02.2016, 10:30:16
от ssttaass
Zoo item PRO + AJAX

Автор kozhenevsky

Ответов: 0
Просмотров: 1874
Последний ответ 05.07.2015, 18:17:26
от kozhenevsky