Матвей Земсков

Заметки веб-мастера

Среда, 26 августа 2015 16:49

Делаем запрос к базе данных сайта на Joomla с помощью Jumi

Оцените материал
(5 голосов)

Jumi – это расширение для CMS Joomla, которое позволяет внедрять пользовательский код (например, PHP, JS или простой HTML) в страницы вашего сайта. Расширение включает в себя компонент, модуль и плагин. Работать с Jumi несложно, поэтому знакомство с ним не займет много времени.

В этой статье будет рассказано о том, как безопасно и просто размещать ваш PHP-код на страницах сайта под управлением Joomla. Код, приведенный в этой статье, будет делать запрос к базе данных сайта и выводить результаты на одной из страниц. Все это будет работать благодаря модулю Jumi.

Загрузка и установка

Итак, сначала загружаем zip-архив с Jumi и устанавливаем его. Установка этого расширения ничем не отличается от установки всех остальных. Делается это в админке сайта на странице «Менеджер расширений» (Расширения → Менеджер расширений).

Формируем запрос к базе данных

Создайте файл с именем custom.php следующего содержания:

PHP

<?php
// Connect to database
$db = JFactory::getDbo();
$query = $db->getQuery(true);
 
// Build the query
$query->select($db->quoteName(array('title', 'introtext')));
$query->from($db->quoteName('#__content'));
$query->where($db->quoteName('introtext') . ' LIKE '. $db->quote('%Joomla%'));
$query->order('ordering ASC');
$query->setLimit('1');
 
$db->setQuery($query);
$results = $db->loadObjectList();

// Print the result
foreach($results as $result){
    echo '<h3>' . $result->title . '</h3>';
    echo $result->introtext;
}
?>

Давайте разберем этот код, чтобы понять как он работает.

Сначала мы создаем безопасное подключение к базе данных (без указания логина и пароля):

PHP

// Connect to database
$db = JFactory::getDbo();
$query = $db->getQuery(true);

Затем выбираем какие поля будут участвовать в запросе: нас интересуют поля title и introtext.

PHP

// Build the query
$query->select($db->quoteName(array('title', 'introtext')));

Далее указываем имя таблицы, из которой будут извлекаться данные. В нашем примере мы обращаемся к таблице #__content, в которой Joomla хранит статьи.

PHP

$query->from($db->quoteName('#__content'));

Теперь указываем условия для поиска. Например, нам нужно чтобы в результатах запроса присутствовали статьи в которых присутствует слово “Joomla” в поле introtext.

PHP

$query->where($db->quoteName('introtext') . ' LIKE '. $db->quote('%Joomla%'));

Выберем порядок сортировки результатов запроса: по возрастанию или по убыванию.

PHP

$query->order('ordering ASC');

И в заключении скрипта укажем максимальное количество статей, которые будут выведены на странице.

PHP

$query->setLimit('1');

Создаем модуль Jumi

  • Загружаем созданный файл со скриптом custom.php в корневую папку вашего сайта под управлением Joomla.
  • В админке сайта в главном меню выбираем Расширения→Менеджер модулей→Создать→Jumi.
  • В поле “Source of code” указываем имя нашего скрипта: custom.php
  • Не забудьте сделать стандартные настройки модуля: указать позицию, заголовок и сделать привязку модуля к страницам сайта.
  • Переходим в публичную часть сайта, чтобы увидеть результат работы нашего скрипта. Если вы установили Joomla с демо-данными, то в результатах поиска вы увидите одну статью, где в анонсе упоминается слово “Joomla”.

Результат запроса к БД сайта

В заключении статьи хотелось бы заметить, что на страницах сайта Jumi, можно найти различные примеры использования этого расширения.

Оригинал статьи - https://www.ostraining.com/blog/joomla/database-jumi/

Прочитано 11696 раз
Мои услуги

Предлагаю следующие услуги:

  • Верстка шаблона сайта из дизайн-макета для CMS «1С-Битрикс Управление сайтом» и CMS “Joomla”
  • Создание форм различной сложности (обратная связь, анкеты и тп) для указанных CMS
  • Настройка и кастомизация компонентов и модулей для указанных CMS
  • Доработка модулей и компонентов для указанных CMS, добавление нестандартного функционала
  • Разработка лендингов (landing-pages)

По все вопросам обращайтесь через форму обратной связи

Скачать

Предлагаю вашему вниманию:

Наверх