Новости Joomla

Astroid обновился до версии 3.3.7!

Astroid обновился до версии 3.3.7!

Astroid — это мощный фреймворк для дизайнеров и разработчиков, позволяющий создавать адаптивные, быстрые и надежные веб-сайты и шаблоны на базе Joomla.

Главное в новой версии:

-   Исправлена загрузка файлов макетов

В предыдущем крупном релизе Astroid 3.3.6 были сделаны важные улучшения:

Основные моменты:

  • Улучшенный UI/UX в ключевых областях конфигурации
  • Повышенная стабильность и согласованность в Layout Builder и Form Builder
  • Исправления ошибок на основе отзывов сообщества
  • Улучшенная обработка визуальных эффектов, границ и шрифтов

Улучшения:

  • Обновленный UX Layout Builder
  • Улучшенный эффект предзагрузчика
  • Улучшенный стиль границ
  • Улучшенный UI/UX вкладки «Layout» в Template Options

Исправления ошибок:

  • Решены проблемы с некорректными динамическими значениями
  • Исправлен Color Transform при прокрутке
  • Устранены проблемы с работой Form Builder в Article Layout и Module Layout Builder
  • Исправлена проблема с созданием ненужных временных файлов при обработке шрифтов

Скачать: https://github.com/templaza/astroid-framework/releases/tag/v3.3.7

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

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

Гринвич

  • Захожу иногда
  • 213
  • 0 / 0
На сайте www.test.zakaz.com.ua (в дальнейшем www.zakaz.com.ua)
в верхней части броузера все пункты меню отображають вот так "Страница|Название сайта"


кроме Главной (она же VM) и страниц с категориями и товаром. (как на скрине)


Вопрос собственно в следующем:
Как сделать, дабы вместо слова "Home" отображалась название страницы (категории или товара)?
Примеры указаны по желанию, в порядке убывания : (любой из вариантов меня устроит)

1)  Категория (и\или) Товар|Название сайта
2)  Категория|Товар
3)  Название сайта

-------
Само слово "Home", дабы вообще удалить, найти не могу.
Просьба не советовать решение вопроса посмотреть в параметрах менюшки.


« Последнее редактирование: 07.06.2011, 02:48:04 от Гринвич »
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Гринвич

  • Захожу иногда
  • 213
  • 0 / 0
Тут решение со скриншотом: http://joomla.org.ua/forum/viewtopic.php?f=18&t=1016#p1800
С этим скриншотом?


Это совершенно не то.
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
А я уверен, что именно ТО.
[img wdith=300]http://uaimage.com/tsi/1201519_b4d69d5c.png?key=0p_8xti_jgIUib5T81ujSQ[/img]

Там, где Заголовок страницы - вписать НУЖНОЕ. Там скорее всего или Home, или пусто, что в данном случае равнозначно.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Гринвич

  • Захожу иногда
  • 213
  • 0 / 0
Нет, это не то что нужно!


Очевидно я сделал скрины неправильно. (Думал что будет понятно).
Всё что я выше описал, находится вот здесь.

*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Дай доступ в админку в приват, гляну.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Установлен на сайте плагин System - SEOGenerator
 У него есть опция Optional Front Page Title
Вот там и сидит этот Home
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Гринвич

  • Захожу иногда
  • 213
  • 0 / 0
Спасибочки, Вам огромное!

Этот плагин я устанавливал давно и совсем забыл (вернее не знал) о этой его функции. SEOGenerator v3.0
Цитировать
Плагин оптимизирует заголовок страницы для поисковых движков. Позволяет отдельно настраивать названия главной и всех остальных страниц сайта, автоматически извлекать из контента и формировать ключевые слова и описание страниц и т.д.

Можно считать что вопрос практически решён и как бы всё устраевает
но всё равно хотелось бы большего. (если ответ не будет найден, тоже не беда)
Может быть кто нибудь подскажет, как используя этот плагин сделать отображение в верхней части
или какая стока (в Joomla) и в каком файле отвечает за отображения назания страницы.

Очень хочеться сделать так:
Категория (и\или) Товар|Название сайта
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
title для VirtueMart отдельная тема. Или использоваться разные СЕФ-расширения, которые делают заголовки по своим алгоритмам, или прописать свои алгоритмы в шаблоне ВМа.

На www.nasos4you.com.ua title в VirtueMart  организованы так (virtuemart 1.1.8):

В файлы добавлен код:

/components/com_virtuemart/themes/THEME/templates/product_details/flypage.tpl.php
Код
<?php
$manufacturer_name = preg_replace ('/<a.*>.*\((.*)\).*<\/a>/Ui','$1', $manufacturer_link);

$cl = new ps_product_category;
//if ($cl->has_childs($category_id)) {
//}


$category_name =  $cl->get_name($category_id);
$parents = $cl->get_allparents_list($category_id);

$parent_names = '';
foreach ($parents as $parent ) {
$parent_names .= $parent['category_name']." ";
}
$all_names = $parent_names.' '.$category_name;

$product_price_for_title = strip_tags($product_price,'<a>');
if (JString::strlen($product_price_for_title)!= JString::strlen(strip_tags($product_price_for_title))) {
$product_price_for_title = ' ';
}
else {
$product_price_for_title = ' - '.$VM_LANG->_('PHPSHOP_PRODUCT_PRICE_TITLE').' '.$product_price_for_title.' '.JText::_('на').' '.date('d.m.Y',time()).' - ';
$product_price_for_title = preg_replace('~\n~Ui',' ',$product_price_for_title);
$product_price_for_title = preg_replace('~\t~Ui',' ',$product_price_for_title);
$product_price_for_title = preg_replace('~  ~Ui',' ',$product_price_for_title);
}
//$page_title = $VM_LANG->_('PHPSHOP_CART_ADD_TO').' '.$manufacturer_name.' '.$product_name.' '.$all_names.' '.$vendor_city.' : ';
$page_title = $VM_LANG->_('PHPSHOP_CART_ADD_TO').' '.$product_name.$product_price_for_title.$all_names.' '.$vendor_city.' : ';
$page_desc = $VM_LANG->_('PHPSHOP_CART_ADD_TO').' '.$product_name.$product_price_for_title.$all_names.' '.$vendor_city.' : ';
$keywords  = $product_name.' '.$all_names.' '.$vendor_city;
/*
foreach ($categories as $category) {
$page_title  .= $category['category_name'].", ";
$keywords  .= $category['category_name'].", ";
$page_desc  .= $category['category_name'].", ";
}
*/
$page_title = JString::substr($page_title,0,JString::strlen($page_title)-2) ;
$page_title = preg_replace( '/\s+/', ' ', trim( $page_title ) );

$keywords  = JString::substr($keywords,0,JString::strlen($keywords )-2) ;
$keywords = preg_replace( '/;/', ' ', trim( $keywords ) );
$keywords = preg_replace( '/\s+/', ' ', trim( $keywords ) );
$keywords = explode (' ',$keywords);
$keywords = implode (',', $keywords);

$page_desc = JString::substr($page_desc,0,JString::strlen($page_desc)-2) ;
$metadesc = html_entity_decode($VM_LANG->_('PHPSHOP_SHOP_MOD').' '.$vendor_name.', '.$vendor_city.'. '.$page_desc );
$metadesc = preg_replace( '/\s+/', ' ', trim( $metadesc ) );

//##my200912120717 Модифікую заголовок документа {
   $document =& JFactory::getDocument();
   $document->setTitle(html_entity_decode($page_title));
   $document->setDescription($metadesc);
   $document->setMetaData('keywords', $keywords);
//##my200912120717 Модифікую заголовок документа }


?>


components/com_virtuemart/themes/THEME/templates/browse/includes/browse_header_category.tpl.php

Код
<?php
$cl = new ps_product_category;
//if ($cl->has_childs($category_id)) {
//}
$parents = $cl->get_allparents_list($category_id);

$parent_names = '';
foreach ($parents as $parent ) {
$parent_names .= $parent['category_name']." ";
}
$all_names = JString::ucfirst($browsepage_lbl). '; ' . $parent_names;

$page_title = $all_names.'; '.JString::strtolower($VM_LANG->_('PHPSHOP_CART_ADD_TO')).' '.$vendor_city.' : ';
$page_desc = $VM_LANG->_('PHPSHOP_CART_ADD_TO').' '.$all_names.' : ';
$keywords  = $all_names.', ';

foreach ($categories as $category) {
$page_title  .= $category['category_name'].", ";
$keywords  .= $category['category_name'].", ";
$page_desc  .= $category['category_name'].", ";
}
$page_title = JString::substr($page_title,0,JString::strlen($page_title)-2) ;
$keywords  = JString::substr($keywords,0,JString::strlen($keywords )-2) ;
$page_desc = JString::substr($page_desc,0,JString::strlen($page_desc)-2) ;


//##my200912120717 Модифікую заголовок документа {
   $document =& JFactory::getDocument();
   $document->setTitle(html_entity_decode($page_title));
   $metadesc = $VM_LANG->_('PHPSHOP_SHOP_MOD').' '.$vendor_name.', '.$vendor_city.'. '.$page_desc ;
   $document->setDescription($metadesc);
   $document->setMetaData('keywords', $keywords);
//##my200912120717 Модифікую заголовок документа }


?>


Создан файл
/components/com_virtuemart/themes/THEME/user_class/ps_product_category.php
Код
<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
*
* @version $Id: ps_product_category.php 2285 2010-02-01 10:57:18Z soeren_nb $
* @package VirtueMart
* @subpackage classes
* @copyright Copyright (C) 2004-2010 soeren - 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.
* See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/

/**
 * The class to manage and show product categories
 *
 */
class ps_product_category extends vm_ps_product_category {


/**
* creates a bulleted of the childen of this category if they exist
* @author pablo
* @param int $category_id
* @return string The HTML code
*/
function get_child_list($category_id) {
global $sess, $ps_product, $VM_LANG;
$ps_vendor_id = $_SESSION["ps_vendor_id"];
$db = new ps_DB;
$childs = array();

/*##my##2010-11-24 00:25:03 { I need category_full_image
//It was:
$q = "SELECT category_id, category_thumb_image, category_child_id,category_name FROM #__{vm}_category,#__{vm}_category_xref ";
//It became: */
$q = "SELECT category_id, category_thumb_image, category_full_image, category_child_id,category_name FROM #__{vm}_category,#__{vm}_category_xref ";
/*##my##2010-11-24 00:25:03 } */
$q .= "WHERE #__{vm}_category_xref.category_parent_id='$category_id' ";
$q .= "AND #__{vm}_category.category_id=#__{vm}_category_xref.category_child_id ";
$q .= "AND #__{vm}_category.vendor_id='$ps_vendor_id' ";
$q .= "AND #__{vm}_category.category_publish='Y' ";
$q .= "ORDER BY #__{vm}_category.list_order, #__{vm}_category.category_name ASC";
$db->setQuery($q);
$db->query();

while( $db->next_record() ) {
$childs[] = array (
'category_name' =>  $db->f("category_name"),
'category_id' => $db->f("category_id"),
'category_thumb_image' => $db->f("category_thumb_image"),
/*##my##2010-11-24 00:25:39 { I add category_full_image */
'category_full_image' => $db->f("category_full_image"),
/*##my##2010-11-24 00:25:39 } */
'number_of_products' => ps_product_category::products_in_category( $db->f("category_id")),
);
}
return $childs;
}

/*##my##2010-11-24 06:33:47 { Add functions to handle parents */
/**
* Checks for parents of the category $category_id
*
* @param int $category_id
* @return boolean True when the category has parents, false when not
*/
function has_parents($category_id) {
$db = new ps_DB;
if( empty( $GLOBALS['category_info'][$category_id]['has_parents'] )) {
$q = "SELECT category_parent_id FROM #__{vm}_category_xref ";
$q .= "WHERE category_child_id='$category_id' ";
$q .= "AND category_parent_id <> '0' ";
$db->setQuery($q);
$db->query();

if ($db->num_rows() > 0)
$GLOBALS['category_info'][$category_id]['has_parents'] = true;
else
$GLOBALS['category_info'][$category_id]['has_parents'] = false;
}
return $GLOBALS['category_info'][$category_id]['has_parents'];
}

/**
* creates a bulleted of the parents of this category if they exist
* @author gruz
* @param int $category_id
* @return string The HTML code
*/
function get_parent_list($category_id) {
global $sess, $ps_product, $VM_LANG;
$ps_vendor_id = $_SESSION["ps_vendor_id"];
$db = new ps_DB;
$childs = array();

/*##my##2010-11-24 00:25:03 { I need category_full_image
//It was:
$q = "SELECT category_id, category_thumb_image, category_child_id,category_name FROM #__{vm}_category,#__{vm}_category_xref ";
//It became: */
$q = "SELECT category_id, category_thumb_image, category_full_image, category_child_id,category_name FROM #__{vm}_category,#__{vm}_category_xref ";
/*##my##2010-11-24 00:25:03 } */
$q .= "WHERE #__{vm}_category_xref.category_child_id='$category_id' ";
$q .= "AND #__{vm}_category.category_id=#__{vm}_category_xref.category_parent_id ";
$q .= "AND #__{vm}_category.vendor_id='$ps_vendor_id' ";
$q .= "AND #__{vm}_category.category_publish='Y' ";
$q .= "ORDER BY #__{vm}_category.list_order, #__{vm}_category.category_name ASC";
$db->setQuery($q);
$db->query();

while( $db->next_record() ) {
$childs[] = array (
'category_name' =>  $db->f("category_name"),
'category_id' => $db->f("category_id"),
'category_thumb_image' => $db->f("category_thumb_image"),
/*##my##2010-11-24 00:25:39 { I add category_full_image */
'category_full_image' => $db->f("category_full_image"),
/*##my##2010-11-24 00:25:39 } */
'number_of_products' => ps_product_category::products_in_category( $db->f("category_id")),
);
}
return $childs;
}

/**
* creates a bulleted of the parents of this category if they exist
* @author gruz
* @param int $category_id
* @return string The HTML code
*/
function get_allparents_list($category_id) {
$parents = $this->get_parent_list($category_id);
if (empty($parents)) {
return array();
}
$i=0;
while (true) {
if ($parents[$i]['category_id']!=0) {
$new_parent = $this->get_parent_list($parents[$i]['category_id']);
if (!empty($new_parent)) {
$parents[] = $new_parent[0];
break;
} else {
break;
}
}
else {
break;
}
if ($i==$this->count_categories()) {break;} //Страхуюсь на випадок зависання цилку.
//Він зробиться не більше разів, ніж є взагалі категорій
$i++;
}
$parents = array_reverse($parents);
return $parents;
}



/*##my##2010-11-24 06:33:47 } */

}


?>



В настройках ВМа включено использование пользовательских классов. http://www.vm-expert.com/virtuemart-expert-blog/80-extending-virtuemart-114
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

Гринвич

  • Захожу иногда
  • 213
  • 0 / 0
Ой, Спасибочки!
Буду разбираться, пробывать!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать список категорий с главной страницы virtuemart 1.1.3?

Автор SynVelesa

Ответов: 6
Просмотров: 10381
Последний ответ 07.06.2018, 00:21:52
от iGatto
Где редактировать внутренние страницы (с модулем virtuemart)

Автор skelet

Ответов: 2
Просмотров: 1217
Последний ответ 02.07.2015, 07:28:26
от skelet
Как изменить путь к картинке /components/com_virtuemart/shop_image/product/?

Автор ssskyy

Ответов: 5
Просмотров: 1587
Последний ответ 19.06.2015, 10:45:07
от vipiusss
Не корректно работает навигатор сайта (breadcrumbs) - дублирование главной страницы.

Автор SliderShadow

Ответов: 4
Просмотров: 2990
Последний ответ 19.05.2015, 17:43:08
от фунтик
Разбиение на страницы Virtuemart

Автор Павел

Ответов: 11
Просмотров: 4436
Последний ответ 25.09.2014, 07:10:34
от beagler