Новости Joomla

Перевод и публикация интервью на греческом портале Joomla Утро, просматриваешь входящие письма и...

Перевод и публикация интервью на греческом портале Joomla 🇬🇷Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции.Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью. Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент. 🇬🇷 Интервью на греческом портале (joomla.gr)🌐 Оригинальное интервью (на английском)Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5

👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:
use Joomla\Http\HttpFactory;$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство $response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.
Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7. Код ответа.Было $response->code. Стало $response->getStatusCode().Заголовки ответа.Было $response->headers. Стало $response->getHeaders().Тело ответа.Было $response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:
// Получили ответ в виде потока$stream = $response->getBody();// "перемотали" на начало$stream->rewind();// Получили строковый ответ$json = $stream->getContents();
В итоге результат одинаковый.@joomlafeed#joomla #разработка #php

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

olf

  • Захожу иногда
  • 360
  • 5 / 1
Не знаю, в какой ветке писать, - написал здесь.
Я чайник в PHP, - поэтому не судите строго, - просто нужна помощь.
Есть 3 сайта Joomla на одном домене, и соответственно на одной базе, только разными суффиксами таблиц. Т.е. получаются адреса вида http://domen/site1, http://domen/site2 и http://domen/site3.
Есть необходимость вывести заголовки последних новостей этих сайтов на титульной странице (она статична). Обьединить колонки и вывести титлы получилось, - работает. А вот как на эти новости сформировать ссылку - проблема. Вот код:

Код
// База Данных
define("DB_HOST", "localhost");
define("DB_LOGIN", "root");
define("DB_PASSWORD", "");
define("DB_NAME", "такая-то");

header( 'Content-Type: text/html; charset=utf-8' );
$db = mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD) or die (mysql_error());
mysql_select_db(DB_NAME, $db);
mysql_set_charset( 'utf8' );

    /* SQL-запрос */
    $query = "SELECT title, created FROM res_content WHERE catid !=0
UNION
SELECT title, created FROM cafe_content WHERE catid!=0
UNION
SELECT title, created FROM coo_content WHERE catid!=0
ORDER BY created DESC LIMIT 3";
    $result = mysql_query($query) or die("Query failed : " . mysql_error());

...
бла-бла-бла
...

    while ($rows = mysql_fetch_assoc($result)) {
                echo $rows['title'];
                echo '<a href="Тут адрес">Подробнее...</a>';
            }
Спасибо откликнувшимся заранее...
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
отвечаю сам на свой вопрос, - может кому интересно.
1.В каждой таблице #__content для начала добавил поле "http", в моем случае, например, таблица res_content:
Код
ALTER TABLE res_content ADD http VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

2.Открыл файл administrator/components/com_content/admin.content.html.php и после таблицы (строка 833) добавил скрытое поле для добавления адреса:
Код
<input name="http" type="hidden" value="http://<?php echo $_SERVER["HTTP_HOST"]; ?>/папка_сайта/" />

3.В файле libraries/joomla/database/table/content.php в классе class JTableContent extends JTable добавил:
Код
/** @var string */
var $http = null;

4. В index.php титульной страницы изменил запрос и соответственно, сформировал ссылку, в итоге вышло такое:
Код
// База Данных
define("DB_HOST", "localhost");
define("DB_LOGIN", "root");
define("DB_PASSWORD", "");
define("DB_NAME", "такая-то");

header( 'Content-Type: text/html; charset=utf-8' );
$db = mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD) or die (mysql_error());
mysql_select_db(DB_NAME, $db);
mysql_set_charset( 'utf8' );

    /* SQL-запрос */
    $query = "SELECT id, title, alias, catid, created, state, http FROM res_content WHERE catid !=0 AND state>0
UNION
SELECT id, title, alias, catid, created, state, http FROM cafe_content WHERE catid!=0 AND  state>0
UNION
SELECT id, title, alias, catid, created, state, http FROM coo_content WHERE catid!=0 AND  state>0
ORDER BY created DESC LIMIT 3";

    $result = mysql_query($query) or die("Query failed : " . mysql_error());

...
бла-бла-бла
...

    while ($rows = mysql_fetch_assoc($result)) {
                echo $rows['title'];
                echo '<a class="n_link" href="'.$rows['http'].'index.php?option=com_content&view=article&id='.$rows['id'].'&catid='.$rows['catid'].'"></a>';
            }
Новость открывается, - правда, в конце адреса должен бы быть добавлен &Itemid=... , но как его туда вытащить - не знаю. Если у кого есть соображение - подскажите.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Ты говоришь, что " в конце адреса должен бы быть добавлен &Itemid=... , но как его туда вытащить - не знаю. ". Сначал этот Itemid надо получить. Я посмотрел твой запрос к БД и не нашёл в нём Itemid. Т.е. в $query = "SELECT id, title, и т.д. добавь Itemid. Потом в echo '<a class="n_link" href="'.$rows['http'].'index.php?option=com_content&view=article&id='.$rows['id'].'&catid='.$rows['catid'] добавь &Itemid='.$rows['Itemid']
Возможно, я неправильно понял: в твоей БД нет поля Itemid, но есть другое поле, например, state, значение которого ты хочешь использовать для Itemid. В этом случае в echo '<a class="n_link" href="'.$rows['http'].'index.php?option=com_content&view=article&id='.$rows['id'].'&catid='.$rows['catid'] добавь &Itemid='.$rows['state']
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
просто в поле "state", если материал удален в архив, к числу добавляется -. Если запрос без AND state>0, то вытаскиваются из архива тоже.
А вот значения Itemid как раз в этой таблице нету. Если б дело было в шаблоне Joomla, Itemid узнать не проблема. А тут страница автономна, и не видит API Joomla.
Очевидно, надо пристыковывать ещё запрос к БД. Но какой?..
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Давай начнём вот с этого: Новость открывается, - правда, в конце адреса должен бы быть добавлен &Itemid=... , но как его туда вытащить - не знаю.
Новость открывается, но тебе ещё что-то надо. А что именно? Что ты дополнительно получишь, если добавишь &Itemid=...?
Меня смутили слова из твоего последнего поста: Очевидно, надо пристыковывать ещё запрос к БД. Но какой?.. Т.е., тебе надо определиться что тебе надо, потом найти таблицу, которая содержит это, далее из неё это получить в виде переменной, затем вставляем эту переменную в &Itemid=$переменная и всё ОК.
« Последнее редактирование: 27.01.2012, 22:19:20 от Woland66 »
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
без понятия. На сколько я понимаю, Itemid - это принадлежность к определенному пункту меню. Может, и действительно не надо, если из одной категории вытягивается, например. Надо попробовать из разных. Если не будет глюка - значит и не надо.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Я отредактировал свой предыдущий пост, посмотри.
Если ты получил, что хотел, то тебе не нужен этот &Itemid=... Вот и всё, не парься.
Да, забыл тебе сказать: у тебя в коде таблицы указываются с префиксами типа res_ и т.д. Это неправильно, надо в целях безопасности этот префикс заменить на #_, эффект будет тем же. Но тут у тебя появится проблема: после префикса у тебя одинаковые названия таблиц, а именно content, поэтому префикс #_ в таком случае не пойдёт. Поэтому названия таблиц после префиков модифицируй типа _contents и _contentes.
C таблицами content ты скорее всего перемудрил, подозреваю, что БД организовал нерационально. Скорее всего из этих трёх таблиц надо сделать две: первая (главная) будет состоять из двух полей: ИД и название предприятия (как я понял ресторан, кафе и кухня), а вторая будет клоном одной из предыдущих трёх таблиц (связанная и подчинённая с главной), в неё надо добавить поле подстановки, значение этого поля будет браться из главной.
« Последнее редактирование: 27.01.2012, 22:40:47 от Woland66 »
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
на щет #_ я писал в начале, что база одна на 3 сайта. Поэтому суффиксы разные. И поля с одинаковыми столбцами в запросе объединяются. Не повлияет на работоспособность, если я в этом запросе напишу #_ вместо суффиксов? Веть этот файл не видит Joomla, - только таблицы?..
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Я опять отредактировал свой предыдущий пост, посмотри.
Ещё раз повторю, что префиксы в код записывать нельзя, их надо менять на #_, это надо для безопасности. На производительность это не повлияет.

У меня первый час ночи, целый день за компом, голова уже не соображает. Итак, у тебя три сайта с одной БД. Раз так, то для каждого сайта надо на сервере создавать три папки с Joomla. На одной Joomla не получится создать три сайта, т.к. в Joomla только один файл index.php. Но, создавая (устанавливая) три папки, ты должен создать и три БД с разными префиксами. Тогда не пойму, как ты установил три Joomla, а работают они у тебя на одной БД, хотя и с разными префиксами?
« Последнее редактирование: 27.01.2012, 23:04:25 от Woland66 »
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
Woland66, хорошо, спасибо за обсуждение, буду пробовать мудрить. Может, модернизирую, чтоб убрать префиксы.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Ты не комплексуй, спрашивай, а то сразу застеснялся :)
А префиксы убирать надо обязательно!
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
И ещё. Я уже говорил выше, что разные префиксы пусть остаются, ты после префикса названия двух последних таблиц измени на __contents и _contentes и всё будет ОК. Не забудь, что это надо изменить тебе не только в коде, но и таблицы в БД соответственно переименовать в _contents и _contentes.
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
Не забудь, что это надо изменить тебе не только в коде, но и таблицы в БД соответственно переименовать в _contents и _contentes.
ну, а как тогда сама система работать будет? она ведь знает _contents, про _contentes ей же ничего не известно.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
ну, а как тогда сама система работать будет? она ведь знает _contents, про _contentes ей же ничего не известно.
Я не понял, что ты имеешь в виду под словом система: Жумлу или БД (SQL)? Сейчас твоя БД и Joomla знает только про _content с разными префиксами. Про _contents и _contentes Жумле ты должен сообщить в коде, а в Базе данных ты должен переименовать две из трёх таблиц _content в таблицы _contents и _contentes (чтобы не путаться переименуй их в _content1 и _content2, а первая у тебя останется просто _content)
Ты прав, я ошибся: ведь у тебя три Жумлы, если просто переименовать таблицы в БД, то они их перестанут понимать. Сейчас подумаю что можно сделать
« Последнее редактирование: 27.01.2012, 23:42:08 от Woland66 »
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
я имею ввиду Joomla. Ведь 3 сайта, 3 админки. 3 Joomla, одна БД. Как я могу для одной из них переименовать таблицу _content в _contents? работать не будет.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Понимаешь, я не пойму как ты посадил три Жумлы на одну БД? Это ведь невозможно. Ты сам в самом начале говорил, что первый сайт у тебя http://domen/site1 (а это одна Joomla), второй http://domen/site2 (а это уже вторая) и т.д. При установке каждой Жумлы создаётся отдельная БД. Как у тебя получилась одна БД на три Жумлы? Скорее всего, ты что-то путаешь.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
я имею ввиду Joomla. Ведь 3 сайта, 3 админки. 3 Joomla, одна БД. Как я могу для одной из них переименовать таблицу _content в _contents? работать не будет.
В том-то и дело, что не одна БД, а три...
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Ты зайди в phpMyAdmin и убедись, что у тебя три БД, т.к. у них разные префиксы. Вот адрес для браузера, чтобы туда попасть: http://localhost/Tools/phpMyAdmin/ (у меня дэнвер, поэтому у тебя может быть другой адрес, если у тебя не дэнвер).
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
При установке Joomla генерирует БД. Когда ты установил первую Joomla, она тебе создала БД. Это первый сайт. Потом ты решил ещё создать сайт, стал устанавливать ещё одну Жумлу и она должна была создать для себя ещё одну БД, т.к. без БД Joomla не работает (на самом деле я делал попыток установить Жумлу без БД, но по-моему, это бесполезно). Но твоя вторая Joomla каким-то образом не сгенерировала для себя БД, а в БД первой Жумлы сгенерировала для себя таблицы разумеется с другим префиксом. Вот мне и не понятно, как это так получилось.
« Последнее редактирование: 28.01.2012, 00:09:12 от Woland66 »
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
нет, в тов то и дело, что я в одной всё установил:

база одна. Админок - три.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Расскажи, как ты устанавливал вторую Жумлу и как она не создала для себя БД, а создала для себя таблицы в БД первой Жумлы?
У меня есть вариант как это сделать, хотя не уверен, что получится, т.к. давно не ставил Жумлу. И для чего делать одну БД для трёх Жумл?
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
при установке дистрибутива есть одноименное поле, - префикс базы данных, по-моему, но в раскрывающемся блоке, не на виду. По умолчанию там jos_ стоит.
А саму базу ту же назначаешь.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Итак, у тебя три таблицы _banner для каждой Жумлы. Если ты посмотришь коды Жумлы, то ты не найдёшь ссылку на cafe_banner или coo_banner, ты найдёшь только #_banner. Если в каждой Жумле будут разные баннеры, подозреваю, что все три сайта будут показывать один и тот же баннер, например, баннеры для первой Жумлы. Но, если сайты показывают свои баннеры (а не баннеры первого сайта), то логично предположить, что замена префиксов на #_ не приведёт к какой-нибудь ерунде. А вот в этом я сильно сомневаюсь.
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
при установке дистрибутива есть одноименное поле, - префикс базы данных, по-моему, но в раскрывающемся блоке, не на виду. По умолчанию там jos_ стоит.
А саму базу ту же назначаешь.
Всё, я вспомнил. Ты прав. Тебе надо для каждого сайта создавать свою БД, чтобы в кодах не использовать префиксы, а заменять их на #_. Я уже говорил, что это для безопасности сайта. Но, если ты это сделаешь, то в кодах тебе надо будет делать три запроса на подключение к трём БД. Хотя, потом что дальше ты будешь с этим делать, я не знаю. Тогда оставляй префиксы и молись, чтобы всё обошлось.
« Последнее редактирование: 28.01.2012, 00:46:12 от Woland66 »
*

Woland66

  • Захожу иногда
  • 87
  • 1 / 0
Получается (судя по скрину таблиц твоей БД), у тебя три сайта-близнеца. Не понятно только для чего?
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
Там компоненты одинаковые для взаимодействия с пользователями используются для каждого сайта отдельно.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 1.5 как убрать кнопку редактировать материант с сайта

Автор andriy465

Ответов: 5
Просмотров: 4008
Последний ответ 12.11.2023, 23:37:03
от all_zer
Нужно wiki под Joomla

Автор THE KILLERS

Ответов: 9
Просмотров: 9686
Последний ответ 05.11.2020, 20:56:47
от Kijv
Поиск статьи по url сайта в админке Joomla 1.5

Автор Tema

Ответов: 5
Просмотров: 2190
Последний ответ 14.08.2020, 07:16:44
от rsn
Не работает страница XML выдает ошибку: This page contains the following errors

Автор vitaliywolf

Ответов: 20
Просмотров: 18783
Последний ответ 07.05.2020, 22:24:16
от sivers
не работает главная без index.php

Автор Mary Poppins

Ответов: 11
Просмотров: 8852
Последний ответ 11.12.2018, 18:28:30
от all_zer