Новости Joomla

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

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Нужно получить в модуле алиас текущего раздела/категории. Существует глобальная переменная или массив, позволяющая их вывести (чтобы не делать новый запрос)?
Также интересует механизм запросов - нужно сделать свою выборку с базы и получить массив через mysql_fetch_array. Какой функцией оптимальнее задавать запросы в Joomla 1.5?
Спасибо.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Вот просто выборка данных:
Код: php
$db = & JFactory::getDBO();
$db->setQuery('select * from #__sections');
$rows = $db->loadObjectList();

Вот тебе одиночное значение:
Код: php
$db = & JFactory::getDBO();
$db->setQuery('select alias from #__sections where id = ' . $id);
$alias = $db->loadResult();
*

mijsvit

  • Захожу иногда
  • 137
  • 7 / 0
Спасибо, с запросом разобрался!
Касательно $id - эта переменная только для примера? У меня в модуле она пуста.
Нужно хоть один глобальный идентификатор текущей категории
« Последнее редактирование: 18.05.2009, 23:44:09 от mijsvit »
*

maximator666

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
аналогичный вопрос. Модифицию модуль newsflash, он упорно не желает выводить свой заголовок.
Решил взять заголовок категории. Вот запрос который там есть:

Код
$query = 'SELECT a.*,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
' FROM #__content AS a' .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
' WHERE a.state = 1 ' .
($noauth ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
' AND (a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' ) ' .
' AND (a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )' .
' AND cc.id = '. (int) $catid .
' AND cc.section = s.id' .
' AND cc.published = 1' .
' AND s.published = 1' .
' ORDER BY a.ordering';
$db->setQuery($query, 0, $items);
$rows = $db->loadObjectList();

return $rows;


Какой запрос мне нужно дописать чтобы получить название текущей категории?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
таблица категорий в этом запросе уже подключена, связь (AND cc.id = '. (int) $catid .) на месте, так что просто брать cc.title и выводить
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

maximator666

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
так, но на выходе у нас $rows. как с него тогда правильно вытянуть cc.title ?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
так, но на выходе у нас $rows. как с него тогда правильно вытянуть cc.title ?
foreach ($rows as $row) {
echo 
$row->cat_title;
}

но обязательно в самом селекте делайте алиас для заголовка категории (у меня в примере cat_title, ибо у нас в нескольких таблицах получается поле title)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

maximator666

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
что-то не так.. переменная пустая. мож неправильно алиас прицепил?! скиньте плиз строку с кодом
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
скиньте плиз строку с кодом
не уж, это вы показывайте ваш код :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

maximator666

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
я толком синтаксиса не знаю) экспериментирую:) потомувидимои не получается. подскажите плз как правильно алиас прицепить) напишите плз)
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
SELECT id AS catid - это алиас данного поля (когда в выбираемых таблицах встречается несколько одинаковых названий)
INNER JOIN #__categories AS cc ON cc.id = a.catid - это подключение с левой стороны дополнительной таблицы к запросу
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

maximator666

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Добавил - вообще вся инфа модуля не выводится. Видимо снова я чёт не то прописал в запрос crazy! Вот что вышло :

Код
$query = 'SELECT a.*,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
                       
' FROM #__content AS a' .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
                        ' INNER JOIN #__categories AS cc ON cc.title = a.cattitle' .
                        ' INNER JOIN #__sections AS s ON s.id = a.sectionid' .


' WHERE a.state = 1 ' .
($noauth ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
' AND (a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' ) ' .
' AND (a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )' .
' AND cc.id = '. (int) $catid .
                        ' AND cc.title = '. $cattitle .
' AND cc.section = s.id' .
' AND cc.published = 1' .
' AND s.published = 1' .
' ORDER BY a.ordering';
$db->setQuery($query, 0, $items);
$rows = $db->loadObjectList();

return $rows;

Ух и поддастал я уже наверное:)
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
1 - два раза подключена таблица категорий (убери одну строку)
INNER JOIN #__categories AS cc ON cc.id = a.catid
2 - в SELECT нет выборки данных из других таблиц, отличных от content (которая с алиасом A)
Код: php
$query = 'SELECT a.*, cc.title AS cattitle, ' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
' FROM #__content AS a' .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
                        ' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
' WHERE a.state = 1 ' .
($noauth ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
' AND (a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' ) ' .
' AND (a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )' .
' AND cc.id = '. (int) $catid .
                        ' AND cc.title = '. $cattitle .
' AND cc.section = s.id' .
' AND cc.published = 1' .
' AND s.published = 1' .
' ORDER BY a.ordering';
$db->setQuery($query, 0, $items);
$rows = $db->loadObjectList();

return $rows;
вот как то так
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

maximator666

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
супер.спасибо) :D
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Параметры материала вызвать в модуле.

Автор SnowB

Ответов: 1
Просмотров: 1428
Последний ответ 07.07.2011, 19:56:32
от Виталик
[Решено] Как в модуле узнать его заголовок.

Автор Виталик

Ответов: 0
Просмотров: 1284
Последний ответ 08.01.2011, 18:47:32
от Виталик
Установить hook на запросы к БД

Автор enshtein

Ответов: 21
Просмотров: 4529
Последний ответ 03.09.2009, 13:32:03
от Physicist
Секция <head> в модуле

Автор salikoff

Ответов: 10
Просмотров: 2439
Последний ответ 08.05.2009, 01:35:46
от userxp
По содержимому или META статьи в одном модуле -> отобразить статью с теми же META или содержимым в д

Автор Sergei_Shablovsky

Ответов: 0
Просмотров: 1434
Последний ответ 09.02.2009, 09:07:43
от Sergei_Shablovsky