Новости 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 Гость просматривают эту тему.
  • 24 Ответов
  • 2203 Просмотров
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Доброе время суток, гуру программирования и сайтостроения. У меня нарисовалась проблема на Joomla 3, не могу решить, помогите, пожалуйста.

Вопрос в пагинации. Хочу сделать такую пагинацию, чтобы можно было переходить по материалам в рамках одной категории. Т.е. жмякаю в пагинации на 2 и перехожу на статью с orderin = 2 данной категории, т.е. ссылка не вида доменное имя/категория?start=2, а именно доменное_имя/алиас_категории/2-алиас_статьи

Причём чтобы была на всех страницах, для каждого материала в категории.)))

Если сделать блог категорий для пункта меню, сделать отображать по 1 материалу полностью в настройках админки, сдалать пагинацию, то будет корявость вида ?start=2

Если пункт меню превратить в Материал, то при пагинации Вперёд-Назад ссылки будут иметь вид  доменное имя/алиас_пункта_меню/1-алиас_статьи/2-алиас_статьи и т.д. для всей пагинации! тут 1-алиас_статьи - алиас статьи, МАТЕРИАЛА, который укажем для пункта меню. Бредкрамбс примет вид: главная страниц->пункт меню->титл материала меню->титл текущего материала, а надо: главная страниц->пункт меню(или наименование категории)->титл текущего материала

Надеюсь, изложила понятно... Можно чего поделать или надоть писать ручками модуль пагинации? Я плохо умею писать оптимизированные модули пока что...

А если модуль надоть делать... ета как лучше сделать? Я не совсем тупая, кое что моя понимать, но сейчас расстроенная сижу, думала это мона быстро в настройках админки сделать и всё.((((

*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Блина... похоже я слишком сложно изложила свою простую мысль... у меня бывает... кароч... надо чтобы пагинация листала по материалам, и в адресной строке не было фигни типа ?start=2
*

robert

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

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Стандартными средствами - вряд ли. Нужно создать свой шаблон с формой в качестве пагинации вместо ссылки.

Шаблон я сама сделала... Я так понимаю, это должен быть модуль, содержащий php-скрипт с обращением к БД, и оформленный в виде пагинации для категории? Я правильно поняла?

Можете сказать, как примерно будет выглядеть php-скрипт и наиболее оптимальный запрос к БД? Хотя бы принципиально... не знаю, с чего начать-то...

Если я правильно поняла, задачка нетривиальная и её решения на просторах Рунета нету...((( Причём, поискав решение в Сети, видела, что не я одна задалась такой целью.
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Злодеи, так никто ничего полезного не написал.(((
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
tora312, направление я вам подсказал, а написать,
как примерно будет выглядеть php-скрипт и наиболее оптимальный запрос к БД
- это уже за вас работу сделать.
У вас есть 3 варианта:
- Ждать, пока появится кто-нибудь, у кого есть время и желание написать вам пагинацию.
- Взяться за литературу и самой разобраться (впрочем, что я и делаю уже 4-й год), на рабочие вопросы вам здесь охотно ответят.
- Создать тему в комм.разделе.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
tora312, направление я вам подсказал, а написать,- это уже за вас работу сделать.
У вас есть 3 варианта:
- Ждать, пока появится кто-нибудь, у кого есть время и желание написать вам пагинацию.
- Взяться за литературу и самой разобраться (впрочем, что я и делаю уже 4-й год), на рабочие вопросы вам здесь охотно ответят.
- Создать тему в комм.разделе.


))) Почти сделала.))) Сама. Вроде рабочий вопрос.)

С помощью функций Жумлы... или вообще как оптимизировать запрос к БД? Чтобы получить эти данные?

Код
$query = 'SELECT `id`, `title`, `alias`, `introtext`, `ordering`
FROM `#__content` WHERE `catid`=\''.$idd.'\' AND `state`=\'1\'';

*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не совсем понял ваш вопрос. Запрос вроде нормальный.
Код: php-brief
$db=JFactory::getDbo();
$query='SELECT `id`,`title`,`alias`,`introtext`,`ordering` FROM `#__content` WHERE `catid`="'.$idd.'" AND `state`="1"';
$db->setQuery($query);
$result=$db->loadObjectList();
Не будь паразитом, сделай что-нибудь самостоятельно!
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
В переопределенном шаблоне материала:
Код: php
$model = JModelLegacy::getInstance('Articles', 'ContentModel');
$model->setState('filter.category_id', $this->item->catid);
$articles = $model->getItems();
echo '<ul>';
foreach( $articles as $article ){
    echo '<li><a href="'.JRoute::_(ContentHelperRoute::getArticleRoute($article->id, $article->catid, $article->language)).'">'.$article->title.'</a></li>';
}
echo '</ul>';
//echo '<pre>'.print_r($articles, true).'</pre>';
« Последнее редактирование: 03.12.2015, 23:01:37 от fsv »
Веб-разработка: заказ. Только новая разработка.
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
fsv

Ой какой Вы молодец! Обожаю Вас! Вот оно, что надо! Ну... я надеюсь, я плохо шарю в функция Joomla... если правильно поняла, этот кусок кода создаст меньшую нагрузку на сайтик, чем прямой запрос к БД? Статей ведь может быть много... 100 и более...

А если я узнаю текущую категорию:

Код
if (JRequest::getVar('view') == 'category') {
$idd=JRequest::getInt('id');
} else if (JRequest::getVar('view')=='article') {
$idd=JRequest::getInt('catid');}

А потом:

Код
$model = JModelLegacy::getInstance('Articles', 'ContentModel');
$model->setState('filter.category_id', $idd);
$articles = $model->getItems();
echo '<ul>';
foreach( $articles as $article ){
    echo '<li><a href="'.JRoute::_(ContentHelperRoute::getArticleRoute($article->id, $article->catid, $article->language)).'">'.$article->title.'</a></li>';
}
echo '</ul>';

Можно вопросик?

Эээ... вот это зачем?
Код
$article->language
Язык тут нужен? И в каком порядке тут идут данные? By ordering? И как можно лимитировать запрос, ограничив его нужным числом статей... например первые 12? Или с 13 по последнюю?? Спасибки заранее!)))
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
robert
Цитировать
Не совсем понял ваш вопрос. Запрос вроде нормальный.
Код: php-brief
$db=JFactory::getDbo();
$query='SELECT `id`,`title`,`alias`,`introtext`,`ordering` FROM `#__content` WHERE `catid`="'.$idd.'" AND `state`="1"';
$db->setQuery($query);
$result=$db->loadObjectList();

Я запросы умею... но если Joomla уже взяла эти данные, а я опять их беру... лишняя нагрузка к БД? Извините, возможно я рассуждаю примитивно.)
Чёт я с рендером села... лан, ща попробкую.)
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Ахтунг! Не работает тут:

$article->ordering;
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Спойлер
[свернуть]
Не будь паразитом, сделай что-нибудь самостоятельно!
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
По нагрузке. Включите отладку и проверьте оба варианта, потом сюда напишите, что получилось.
По id категории. Зачем в категории из реквеста получаете, если мы в материале? Если надо нечто подобное и в категории, то там на просмотр $this выведите, проще код должен быть.
Язык. Не надо - не пишите. У функции 3 аргумента, категория и язык не обязательны, там по умолчанию значения указаны.
Веб-разработка: заказ. Только новая разработка.
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Уважаемые гуру, прошу ногами не бить.))) Учтите, что я по профессии преподаватель физкультуры в средней школе.))) Аха, именно так.))) Для своего любимого сайтика делаю.)
По поводу >>Включите отладку и проверьте оба варианта, потом сюда напишите, что получилось. - Дык... не знаю, как это делать.)

По поводу реквеста, не знаю, как по-другому получить id категории. Ещё мне нужен алиас категории.))) Дело в том, что работать должно как для материала в категории, так и для пункта меню Блог категории. Может я чего неоптимально сделала, на локалке работает.)

Вот что получилось, запихала усё в модуль, привязав к пункту меню... без рендера и стилей:

Код
//Относительный url текущей страницы и текущую категорию - ВОТ ТУТ РЕАЛЬНО НЕ ПОНЯЛА КАК МОЖНО ЕЩЁ ПОЛУЧИТЬ ID КАТЕГОРИИ.
$urii = &JFactory::getURI();
$urll = $urii->toString(array('path', 'query', 'fragment'));

if (JRequest::getVar('view') == 'category') {
$idd=JRequest::getInt('id');
} else if (JRequest::getVar('view')=='article') {
$idd=JRequest::getInt('catid');}


// Закажем класс БД.
$db = JFactory::getDbo();

// Узнаем url категории. ВООБЩЕ ID КАТЕГОРИИ МНЕ НУЖЕН ДЛЯ `path` текущей категории... ЕГО МОЖНО ПОЛУЧИТЬ ЛЕГЧЕ?
$db->setQuery('SELECT `path` FROM `#__categories` WHERE `id`=\''.$idd.'\' LIMIT 1'); // Пришлось один прямой запрос сделать.(((
$list = $db->loadObjectList();
foreach($list as $comp)
{
$path = $comp->path;
}

// Создадим массив с данными о материалах.
$model = JModelLegacy::getInstance('Articles', 'ContentModel');
$model->setState('filter.category_id', $idd); // ВОТ ТУТ СТАВЛЮ ТЕКУЩЕЕ ЗНАЧЕНИЕ КАТЕГОРИИ $idd, ЧТОБЫ ПОЛУЧИТЬ ВСЕ ДАННЫЕ МАТЕРИАЛОВ
//ДАННОЙ КАТЕГОРИИ.
$articles = $model->getItems();
foreach( $articles as $i=>$article ){ // Получаю ВСЕ НУЖНЫЕ МНЕ ДАННЫЕ О СТАТЬЯХ В СООТВЕТСТВУЮЩЕЙ КАТЕГОРИИ
$comps[$i]['id'] = $article->id;
$comps[$i]['title'] = $article->title;
$comps[$i]['alias'] = $article->alias;
$com_pg[$i]['url'] = '/'.$path.'/'.$comps[$i]['id'].'-'.$comps[$i]['alias'];
$com_pg[0]['url'] = '/'.$path;
}

В итоге вывожу пагинацию циклом на всю категорию, привязывая к БЛОГУ КАТЕГОРИИ.

Наверное, можно проще... я хз.
« Последнее редактирование: 04.12.2015, 18:20:34 от tora312 »
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Спойлер
[свернуть]

robert, я правильно поняла... Если я хочу получить всё то, что сделала выше для всех материалов с 11 до последнего в категории 3 , упорядочив по возрастанию ордерин, делаю (Проверила, чёт не робит...):

Код
$model = JModelLegacy::getInstance('Articles', 'ContentModel');
$model->setState('filter.category_id', 3);
$model->setState('list.ordering','a.ordering');
$model->setState('list.start', 11);
$articles = $model->getItems();
foreach( $articles as $i=>$article ){...}

Как можно упорядочить, скажем, по дате создания? И как тут получить `ordering` - ОН МНЕ ОЧ. НУЖЕН, у меня может быть значение -1.)))
Помогите с этим, плиз... Очень надо...
« Последнее редактирование: 04.12.2015, 18:27:27 от tora312 »
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Ёлкиный, не поняла, как можно лимитировать запросы... у меня всё даёт...
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Just idea:
Если в стандартном варианте пагинация выглядит как:
http://designexpo.info/?start=10
http://designexpo.info/?start=20
А вы хотите:
http://designexpo.info/?start=2
http://designexpo.info/?start=3
Можно запилить плагин, который будет перехватывать этот параметр, делить на 10 (или сколько у вас материалов в категории) и прибавлять 1 и отображать, а когда страничка будет отображаться, то в обратном порядке.
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Не, не в том там дело... Устала, не пойму... подскажите, почему, БЛИНА, не работает?

Код
$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
$appParams = JFactory::getApplication()->getParams();
$model->setState('params', $appParams);
$model->setState('filter.category_id', $params->get('catid', $idd));
$model->setState('list.ordering','a.ordering');
$model->setState('list.start', 10);
$model->setState('list.limit', (int) $params->get('count', 0)); // ДОЛЖЕН ВСЁ ВЗЯТЬ С 10-Й СТАТЬИ ПО УМОЛЧАНИЮ, А НЕ РОБИТ! ЗАРАЗА. НИЧЁ НЕ БЕРЁТ!
$articles = $model->getItems();
« Последнее редактирование: 04.12.2015, 20:38:15 от tora312 »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не знаю, почему у вас не работает. Не поленился теститровать у себя:
Спойлер
[свернуть]
- все работает как надо.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
- все работает как надо.

Роберт, у меня тоже это работает.))) Но мне нужно взять с 11 статьи все до конца, сколько бы там ни было статей. Если я НЕ указываю лимит - $model->setState('list.limit',10); - грит ошибка.

Помогите мне с 3 вещами, пожалуйста!

Если я указываю по умолчанию $model->setState('list.limit',0); и $model->setState('list.start', 11); - ничего не берёт.((( Помогите мне с этим и ещё помогите ПЛИЗ узнать ордерин текущей статьи, учитывая что могут попадаться ордерин -1.)  А то у меня не работает почему-то

Код
foreach( $articles as $i=>$article ){
$comps[$i]['ordering'] = $article->ordering;
}

И как узнать патч текущей категории без запроса к БД, функциями Joomla? И всо...))) Пока для полноты счастья мне больше ничего не надо.

Тут застряла и сижу.((( А пагинацию ещё вчера сделала, спасибки ВАМ ВСЕМ ОГРОМНЕЙШЕЕ!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Код: php-brief
$model->setState('list.ordering','a.любой_столбец');// a - алиас таблицы #__content
$model->setState('list.start',10);// выборка начинается с 11-й записи
$model->setState('list.limit',18446744073709551615);// для MyISAM таблиц
А пагинацию ещё вчера сделала
Вы просто молодец! Такие, как вы, всегда приветствуются.
« Последнее редактирование: 05.12.2015, 12:15:47 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Спасибки.))) Туплю чёт... кароч... $model->setState('list.start',10); - без лимита не будет работать, потому надоть загнать поболя число в лимит?))) Чтобы наверняка?) Можно и 99999999, не обязательно ведь 18446744073709551615

$model->setState('list.ordering','a.любой_столбец'); - Не поняла... $model->setState('list.ordering','a.ordering'); - это ведь упорядочить по ордерин? А как получить сами значения ордерин?? Можно, если Вас не затруднит, на примере... как это 'a.любой_столбец'... Чтобы могла заполнить массив по материалам:

Код
foreach( $articles as $i=>$article ){
$comps[$i]['ordering'] = $article->ordering;}

И крайний вопрос... как получить патч текущей категории. например, мы на странице мой _сайтик/категория/123-алиас, как узнать "категория"?? Или если мы на странице Блог категорий... без прямого запроса к БД... с таким запросом умею.)))

Я так делала... можно сразу узнать патч из запроса, а не ид?:

Код
if (JRequest::getVar('view') == 'category') {
$idd=JRequest::getInt('id');
} else if (JRequest::getVar('view')=='article') {
$idd=JRequest::getInt('catid');}

$db->setQuery('SELECT `path` FROM `#__categories` WHERE `id`=\''.$idd.'\' LIMIT 1');
$list = $db->loadObjectList();
foreach($list as $comp)
{
$path = $comp->path;
}
« Последнее редактирование: 05.12.2015, 16:07:48 от tora312 »
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2


Поясните пожалуйста, как для девушки.) Никак не пойму. Лучше примером.)))
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
как получить сами значения ордерин?
Придется подключить модель Article, принцип тот же, что и с Articles, и методом getItem() загружать каждый материал.
Но это уже извращение, лучше с самого начала сделать 1 запрос, в котором выбирается и ordering.
Что значит
патч текущей категории
? Путь, что ли?
Код: php-brief
$path=JRoute::_('index.php?option=com_content&view=category&id='.$this->item->catid);
//ну или по всем канонам Joomla
$path=JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->catslug));
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT SEO Meta templates плагин сео-шаблонов для Joomla

Автор sergeytolkachyov

Ответов: 25
Просмотров: 4149
Последний ответ 24.11.2023, 10:24:11
от sergeytolkachyov
Нет позиций в Google Joomla 3

Автор Benderalfa

Ответов: 1
Просмотров: 2422
Последний ответ 20.09.2022, 20:53:56
от darkghost
Расширенные описания страниц в Joomla (микроданные, микроформаты, RDFa, schema.org)

Автор ELLE

Ответов: 151
Просмотров: 110131
Последний ответ 20.11.2021, 18:15:42
от Byzi
Вопрос по отличию SEO MODx и Joomla

Автор vovafit

Ответов: 7
Просмотров: 1639
Последний ответ 20.11.2021, 18:15:09
от Byzi
Не получается поменять description на главной странице Joomla 3.

Автор illimited

Ответов: 11
Просмотров: 1139
Последний ответ 21.12.2020, 14:39:49
от illimited