Новости Joomla

Перевод и публикация интервью с 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

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

vipex

  • Захожу иногда
  • 160
  • 1 / 0
Имеется последняя 3 Joomla и VirtueMart 3.0.14. При загрузке страницы автоматически товары отображаются плиткой. Как сделать отображение товаров по умолчанию списком. Переключатель Список/Плитка на сайте есть
*

fsv

  • Moderator
  • 2782
  • 411 / 2
В шаблоне категории (скорее всего у вас он уже переопределен), в контейнере товаров задать нужный класс "список", убрав класс "плитка".
Веб-разработка: заказ. Только новая разработка.
*

vipex

  • Захожу иногда
  • 160
  • 1 / 0
В шаблоне категории (скорее всего у вас он уже переопределен), в контейнере товаров задать нужный класс "список", убрав класс "плитка".
  а как это сделать?
*

fsv

  • Moderator
  • 2782
  • 411 / 2
  а как это сделать?
Это не дефолтный функционал, никто, кроме вас не знает, что у вас за код, и что у вас за файлы. А показать их вы не захотели.
Общая схема описана, там проще некуда.
Веб-разработка: заказ. Только новая разработка.
*

vipex

  • Захожу иногда
  • 160
  • 1 / 0
Я бы показал, какой файл отвечает за контейнер товаров ?
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Ссылка на страницу (обязательно).
В шаблоне, в папке /html/com_virtuemart/category/default.php
Веб-разработка: заказ. Только новая разработка.
*

vipex

  • Захожу иногда
  • 160
  • 1 / 0
Код
<?php
/**
 *
 * Show the products in a category
 *
 * @package    VirtueMart
 * @subpackage
 * @author RolandD
 * @author Max Milbers
 * @todo add pagination
 * @link http://www.virtuemart.net
 * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
 * VirtueMart is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * @version $Id: default.php 9017 2015-10-14 10:44:34Z Milbo $
 */

defined ('_JEXEC') or die('Restricted access');

$doc = JFactory::getDocument();
$sidebar = JLayoutHelper::render('virtuemart.vm-sidebar', array('item' => $this));
$doc->setBuffer($sidebar, array('type' => 'modules', 'name' => 'vm-sidebar', 'title' => ''));

?> <div class="category-view"> <?php
$js = "
jQuery(document).ready(function () {
jQuery('.orderlistcontainer').hover(
function() { jQuery(this).find('.orderlist').stop().show()},
function() { jQuery(this).find('.orderlist').stop().hide()}
)
});
";
vmJsApi::addJScript('vm.hover',$js);

// Show child categories
if (VmConfig::get ('showCategory', 1) and empty($this->keyword)) {
if (!empty($this->category->haschildren)) {

echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children));

}
}

if($this->showproducts){
?>
<div class="gridlist-view">
<div class="gridlist">
<a href="#" id="list" class="btn btn-default"><i class="fa fa-th-list"></i></a>
<a href="#" id="grid" class="btn btn-primary"><i class="fa fa-th icon-white"></i></a>
</div>
<div class="browse-view">
<?php

if (!empty($this->keyword)) {
//id taken in the view.html.php could be modified
$category_id  = vRequest::getInt ('virtuemart_category_id', 0); ?>
<h3><?php echo $this->keyword; ?></h3>

<form action="<?php echo JRoute::_ ('index.php?option=com_virtuemart&view=category&limitstart=0', FALSE); ?>" method="get">

<!--BEGIN Search Box -->
<div class="virtuemart_search">
<?php echo $this->searchCustomList ?>
<br/>
<?php echo $this->searchCustomValues ?>
<input name="keyword" class="inputbox" type="text" size="20" value="<?php echo $this->keyword ?>"/>
<input type="submit" value="<?php echo vmText::_ ('COM_VIRTUEMART_SEARCH')?>" class="button" onclick="this.form.keyword.focus();"/>
</div>
<input type="hidden" name="search" value="true"/>
<input type="hidden" name="view" value="category"/>
<input type="hidden" name="option" value="com_virtuemart"/>
<input type="hidden" name="virtuemart_category_id" value="<?php echo $category_id; ?>"/>

</form>
<!-- End Search Box -->
<?php  } ?>

<?php // Show child categories
?>
<h1><span><?php echo vmText::_($this->category->category_name); ?></span></h1>

<?php if (empty($this->keyword) and !empty($this->category) and !empty($this->category->category_description)) { ?>
<div class="category_description">
<?php echo $this->category->category_description; ?>
</div>
<?php } ?>

<div class="browse-view-inner">
<?php
if (!empty($this->products)) {
$products = array();
$products[0] = $this->products;
echo shopFunctionsF::renderVmSubLayout($this->productsLayout,array('products'=>$products,'currency'=>$this->currency,'products_per_row'=>$this->perRow,'showRating'=>$this->showRating));

?>
</div>
<div class="vm-pagination vm-pagination-bottom">
<?php echo $this->vmPagination->getPagesLinks (); ?>
<span class="vm-page-counter"><?php echo $this->vmPagination->getPagesCounter (); ?></span>
<div class="floatright display-number"><?php echo $this->vmPagination->getResultsCounter ();?><br/><?php echo $this->vmPagination->getLimitBox ($this->category->limit_list_step); ?></div>
<div class="clear"></div>
</div>

<?php
} elseif (!empty($this->keyword)) {
echo vmText::_ ('COM_VIRTUEMART_NO_RESULT'). ($this->keyword ? ' : (' . $this->keyword . ')' : '');
}
?>
</div>
</div>
<?php } ?>
</div>

<?php
$j = "Virtuemart.container = jQuery('.category-view');
VirtueMart.containerSelector = '.category-view';";

vmJsApi::addJScript('ajaxContent',$j);
?>
<!-- end browse-view -->


Делаю на денвере
В на сайте вот этот код отвечает за выводсписком/плиткой

<div class="gridlist-view">
   <div class="gridlist">
      <a href="#" id="list" class="btn btn-default"><i class="fa fa-th-list"></i></a>
      <a href="#" id="grid" class="btn btn-primary"><i class="fa fa-th icon-white"></i></a>
   </div>
« Последнее редактирование: 20.02.2017, 17:18:16 от vipex »
*

vipex

  • Захожу иногда
  • 160
  • 1 / 0
И как тут задать нужный класс "список", убрав класс "плитка" ?
*

vipex

  • Захожу иногда
  • 160
  • 1 / 0
... там проще некуда.
Я так понимаю что это сделать не легко а сложно.
*

vipex

  • Захожу иногда
  • 160
  • 1 / 0
Ну а если самому нельзя сделать это сколько стоит сделать?
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Ну а если самому нельзя сделать это сколько стоит сделать?
Попробуйте узнать в коммерческом разделе.

Я так понимаю что это сделать не легко а сложно.
Понимание пришло из-за отсутствия ответов в теме?
Возможно, никто не хочет тратить свое время на игру "угадайка" с ТС-ом, игнорирующим уточнения.

Все имеет свое значение, объяснять долго. Вы игнорируете.
"Делаю на денвере" - флаг вам удачи. Полно бесплатных хостингов, чтобы на время выложить сайт.
Да, часто надо сделать много телодвижений, чтобы получить ответ в одну короткую строчку кода. Или не получить. Это уж как повезет.
Веб-разработка: заказ. Только новая разработка.
*

fsv

  • Moderator
  • 2782
  • 411 / 2
<div class="browse-view-inner">
заменить на
<div class="browse-view-inner list-group-item">

<a id="list" class="btn btn-default" href="#">
<a id="grid" class="btn btn-primary" href="#">
заменить на
<a id="list" class="btn btn-primary" href="#">
<a id="grid" class="btn btn-default" href="#">

разметку меняли? не нахожу пару элементов, указанных в джаваскрипте

Веб-разработка: заказ. Только новая разработка.
*

vipex

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

Модуль SJ Filter for VirtueMart - только 30 custom fields

Автор Alex_gs

Ответов: 0
Просмотров: 2531
Последний ответ 08.08.2022, 15:09:59
от Alex_gs
Вывод всех товаров на Главную

Автор Akeksandr

Ответов: 1
Просмотров: 2736
Последний ответ 28.12.2021, 14:48:23
от Akeksandr
Вывод модуля рекомендуемых товаров

Автор sergspb

Ответов: 0
Просмотров: 2733
Последний ответ 06.11.2020, 09:59:01
от sergspb
Эффект добавления товара в корзину VM3

Автор bassez

Ответов: 0
Просмотров: 2871
Последний ответ 05.06.2020, 12:28:26
от bassez
Решено: Валютный знак рубля в VirtueMart 2

Автор frostwar

Ответов: 10
Просмотров: 11648
Последний ответ 07.04.2020, 15:50:54
от liberator