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

djbob2000

  • Захожу иногда
  • 96
  • 4 / 0
Перенес с Joostina на Joomla 1.5 сайт при помощи mtw migrator. Около 1500 больших материалов. На Joostina алиасы не заполнял. При переносе в алиасах образовались тире, несколько тире, или куча тире вперемешку в латинскими буквами:
--
---lr--k--
Поставил "UA and RU Alias Plugin" - жить полегче стало, но он транслитерует только при сохранении статьи. Есть ли какое-то простое решение чтобы переписать все алиасы на сайте на нормальные? Или как мне быть, не вручную же пересохранять.
*

beliyadm

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

djbob2000

  • Захожу иногда
  • 96
  • 4 / 0
А подскажите тогда просто как удалить (очистить) все поля alias, наверное это какой-то примитивный SQL запрос?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
зайти в phpmyadmin и выполнить запрос (префикс если что заменить)
Код: sql
UPDATE jos_content SET alias = ''
У всех материалов не будет алиаса
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Marilyn Manson

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
написать скрипт, прогнать через него дамп данных из БД и вернуть обратно, технически процесс на 20 минут, но готового решения нет :)

А может быть подскажете как этот скрипт будет выглядеть? :)) Я думаю, что сотни людей будут благодарны за него...
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Просто вставить строчку выше в phpMyAdmin
Но аккуратно, при включении SEF сайт может сойти с ума
*

Marilyn Manson

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Просто вставить строчку выше в phpMyAdmin
Но аккуратно, при включении SEF сайт может сойти с ума

Воланд, спасибо!

Но меня интересует вопросы из 1 поста (по поводу перезаписи уже существующих кривых алиасов)
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Воланд, спасибо!

Но меня интересует вопросы из 1 поста (по поводу перезаписи уже существующих кривых алиасов)
собственно
написать скрипт, прогнать через него дамп данных из БД и вернуть обратно, технически процесс на 20 минут, но готового решения нет :)
*

Marilyn Manson

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
собственно

Так я об этом скрипте и спросил несколькими постами выше...
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
а что о нем спрашивать? его писать надо
или самому или за деньги
*

Marilyn Manson

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
а что о нем спрашивать? его писать надо
или самому или за деньги

Написал свой вариант, но он выдает ошибку: Fatal error: Using $this when not in object context in ...\update_alias.php on line 20.

20 строка - это: if(trim(str_replace('-','',$this->alias)) == '')

Код скрипта:

Код
<?php

$MySQLHost = '';
$MySQLUser = '';
$MySQLPassword = '';
$MySQLDB = '';

$id = @mysql_connect($MySQLHost,$MySQLUser,$MySQLPassword);
$db = @mysql_select_db($MySQLDB);

if($id == 0 || $db == 0) {
// Problems with MySQL connection
echo 'MySQL connection error';
exit;

}

if(trim(str_replace('-','',$this->alias)) == '')
{
  $tr = array(
   "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",
   "Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i",
   "Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
   "О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
   "У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch",
   "Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
   "Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
   "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
   "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
   "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
   "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
   "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
   "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
   " "=>"-","!"=>"","?"=>"",","=>"","."=>"",
   );
   $this->title = trim($this->title," ");
   $this->alias = strtr($this->title,$tr);
  
   $sql = "UPDATE jos_content SET alias = '".$this->alias."' WHERE title = '".$this->title."'";
}

?>

Помогите, пожалуйста, исправить... в программинге не так силен
*

Marilyn Manson

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Разве никто не знает в чем проблема? Подскажите, пожалуйста...
*

k_voronin

  • Новичок
  • 7
  • 1 / 0
rewrite_alias_content.php
Код
<?php
$db_type = 'mysql';
$db_host = '';
$db_name = '';
$db_username = '';
$db_password = '';
$db_prefix = 'jos_';
$p_connect = false;


include 'mysql.php';

function error()
{
$result['error_sql'] = @current(@end($this->saved_queries));
$result['error_no'] = @mysql_errno($this->link_id);
$result['error_msg'] = @mysql_error($this->link_id);

return $result;
}

  // функция превода текста с кириллицы в траскрипт
  function encodestring($st)
  {
    // Сначала заменяем "односимвольные" фонемы.
    $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
    "abvgdeeziyklmnoprstufh'iei");
    $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    "abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"ABVGDEEZIYKLMNOPRSTUFH'IEI",
    "abvgdeeziyklmnoprstufh'iei");
    // Затем - "многосимвольные".
    $st=strtr($st,
                    array(
                        "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
                        "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
                        "Ж"=>"zh", "Ц"=>"ts", "Ч"=>"ch", "Ш"=>"sh",
                        "Щ"=>"shch","Ь"=>"", "Ю"=>"yu", "Я"=>"ya",
                        "ї"=>"i", "Ї"=>"yi", "є"=>"ie", "Є"=>"ye", " "=>"-", "."=>""
                        )
             );
    // Возвращаем результат.
    return $st;
  }


// Create the database object (and connect/select db)
$db = new DBLayer($db_host, $db_username, $db_password, $db_name, $db_prefix, false);



$result = $db->query('SELECT id, title, alias FROM jos_content');


if ($db->num_rows($result))
{

while ($menu_data = $db->fetch_assoc($result))
{
$new_alias=encodestring($menu_data['title']);
$result1 = $db->query('UPDATE jos_content SET alias = "'.$new_alias.'" WHERE id = "'.$menu_data['id'].'"');
echo $new_alias;
echo '<br>';

}
}




?>

rewrite_alias_menu.php
Код
<?php
$db_type = 'mysql';
$db_host = '';
$db_name = '';
$db_username = '';
$db_password = '';
$db_prefix = 'jos_';
$p_connect = false;


include 'mysql.php';

function error()
{
$result['error_sql'] = @current(@end($this->saved_queries));
$result['error_no'] = @mysql_errno($this->link_id);
$result['error_msg'] = @mysql_error($this->link_id);

return $result;
}

  // функция превода текста с кириллицы в траскрипт
  function encodestring($st)
  {
    // Сначала заменяем "односимвольные" фонемы.
    $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
    "abvgdeeziyklmnoprstufh'iei");
    $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    "abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"ABVGDEEZIYKLMNOPRSTUFH'IEI",
    "abvgdeeziyklmnoprstufh'iei");
    // Затем - "многосимвольные".
    $st=strtr($st,
                    array(
                        "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
                        "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
                        "Ж"=>"zh", "Ц"=>"ts", "Ч"=>"ch", "Ш"=>"sh",
                        "Щ"=>"shch","Ь"=>"", "Ю"=>"yu", "Я"=>"ya",
                        "ї"=>"i", "Ї"=>"yi", "є"=>"ie", "Є"=>"ye", " "=>"-", "."=>""
                        )
             );
    // Возвращаем результат.
    return $st;
  }


// Create the database object (and connect/select db)
$db = new DBLayer($db_host, $db_username, $db_password, $db_name, $db_prefix, false);



$result = $db->query('SELECT id, name, alias FROM jos_menu');


if ($db->num_rows($result))
{

while ($menu_data = $db->fetch_assoc($result))
{
$new_alias=encodestring($menu_data['name']);
$result1 = $db->query('UPDATE jos_menu SET alias = "'.$new_alias.'" WHERE id = "'.$menu_data['id'].'"');
echo $new_alias;
echo '<br>';

}
}




?>


mysql.php
Код
<?php
/***********************************************************************

  Copyright (C) 2002-2005  Rickard Andersson (rickard@punbb.org)

  This file is part of PunBB.

  PunBB is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published
  by the Free Software Foundation; either version 2 of the License,
  or (at your option) any later version.

  PunBB is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  MA  02111-1307  USA

************************************************************************/


// Make sure we have built in support for MySQL
if (!function_exists('mysql_connect'))
exit('This PHP environment doesn\'t have MySQL support built in. MySQL support is required if you want to use a MySQL database to run this forum. Consult the PHP documentation for further assistance.');


class DBLayer
{
var $prefix;
var $link_id;
var $query_result;

var $saved_queries = array();
var $num_queries = 0;


function DBLayer($db_host, $db_username, $db_password, $db_name, $db_prefix, $p_connect)
{
$this->prefix = $db_prefix;

if ($p_connect)
$this->link_id = @mysql_pconnect($db_host, $db_username, $db_password);
else
$this->link_id = @mysql_connect($db_host, $db_username, $db_password);

if ($this->link_id)
{
// UNCOMMENT THIS IF EXIST PROBLEMS WITH ENCODING
//@mysql_query("SET NAMES 'utf8'");
if (@mysql_select_db($db_name, $this->link_id))
return $this->link_id;
else
error('Unable to select database. MySQL reported: '.mysql_error(), __FILE__, __LINE__);
}
else
error('Unable to connect to MySQL server. MySQL reported: '.mysql_error(), __FILE__, __LINE__);
}


function start_transaction()
{
return;
}


function end_transaction()
{
return;
}


function query($sql, $unbuffered = false)
{
if (defined('PUN_SHOW_QUERIES'))
$q_start = get_microtime();

if ($unbuffered)
$this->query_result = @mysql_unbuffered_query($sql, $this->link_id);
else
$this->query_result = @mysql_query($sql, $this->link_id);

if ($this->query_result)
{
if (defined('PUN_SHOW_QUERIES'))
$this->saved_queries[] = array($sql, sprintf('%.5f', get_microtime() - $q_start));

++$this->num_queries;

return $this->query_result;
}
else
{
if (defined('PUN_SHOW_QUERIES'))
$this->saved_queries[] = array($sql, 0);

return false;
}
}


function result($query_id = 0, $row = 0)
{
return ($query_id)? @mysql_result($query_id, $row) : false;
}


function fetch_assoc($query_id = 0)
{
return ($query_id)? @mysql_fetch_assoc($query_id) : false;
}


function fetch_row($query_id = 0)
{
return ($query_id)? @mysql_fetch_row($query_id) : false;
}


function num_rows($query_id = 0)
{
return ($query_id)? @mysql_num_rows($query_id) : false;
}


function affected_rows()
{
return ($this->link_id)? @mysql_affected_rows($this->link_id) : false;
}


function insert_id()
{
return ($this->link_id)? @mysql_insert_id($this->link_id) : false;
}


function get_num_queries()
{
return $this->num_queries;
}


function get_saved_queries()
{
return $this->saved_queries;
}


function free_result($query_id = false)
{
return ($query_id)? @mysql_free_result($query_id) : false;
}


function escape($str)
{
if (is_array($str))
return '';
else if (function_exists('mysql_real_escape_string'))
return mysql_real_escape_string($str, $this->link_id);
else
return mysql_escape_string($str);
}


function error()
{
$result['error_sql'] = @current(@end($this->saved_queries));
$result['error_no'] = @mysql_errno($this->link_id);
$result['error_msg'] = @mysql_error($this->link_id);

return $result;
}


function close()
{
if ($this->link_id)
{
if ($this->query_result)
@mysql_free_result($this->query_result);

return @mysql_close($this->link_id);
}
else
return false;
}
}

*

Diman

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
k_voronin Спасибо большое! видно что в базе данных всё поменялось. Но размещенные материалы в виде блога к примеру почему то так и имеют ссыили прежнего вида. Попробовал присвоить пункт меню открывающий этот материал, тогда меняется на странице блога.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как отключить стандартный счетчик просмотров материалов

Автор Akksimo

Ответов: 5
Просмотров: 5279
Последний ответ 25.12.2019, 16:56:29
от nikolaevevge
Убрал в настройках материалов "Заголовок как ссылка" - "нет". И в разделе ссылки с заголовков исчезл

Автор Adrian1111

Ответов: 6
Просмотров: 3349
Последний ответ 22.03.2018, 22:17:44
от palexa
Тотальное изменение урлов на ЧПУ

Автор JohnGonzo

Ответов: 9
Просмотров: 4317
Последний ответ 05.11.2017, 08:35:58
от JohnGonzo
Расширение - Фильтр выводимых материалов по различным параметрам.

Автор Liana

Ответов: 4
Просмотров: 3883
Последний ответ 02.11.2016, 21:51:12
от SeBun
Re: Изменение таблиц базы данных

Автор ZAlex60

Ответов: 4
Просмотров: 1508
Последний ответ 23.09.2016, 09:57:14
от ZAlex60