Новости Joomla

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla.JetBrains - один из мировых лидеров в разработке программного обеспечения для разработчиков. Её программные продукты - это IDE - профессиональные среды разработки, которые отличаются от простого блокнота/редактора с плагинами набором всевозможных инструментов для разработчиков, глубоким анализом кодовой базы, подсказками по ней и по языку программирования, отладкой ошибок и многим-многим другим. Одним из самых известных продуктов компании является IDE PHP Storm, который можно назвать отраслевым стандартом PHP-разработчика. В статье How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples в блоге компании описываются Open Source проекты, которым JetBrains оказывает поддержку (это могут быть бесплатные лицензии для разработчиков для некоммерческих проектов). В список попали:- PHPUnit - фреймворк для unit-тестирования в PHP- Doctrine DBAL - библиотека для PHP, которая предоставляет лёгкий и гибкий слой для коммуникации с базой данных. Она поддерживает различные базы данных через единый и согласованный API.- CodeIgniter — популярный MVC-фреймворк для разработки на PHP- 👩‍💻 Joomla! - наша любимая CMS.Эти названия (кроме "Joomla") чаще всего не слышат вебмастера и разработчики обычных сайтов и интернет-магазинов. Но эти названия хорошо знакомы PHP-разработчикам, которые создают сложные и высоконагруженные проекты и микросервисы. То, что Joomla оказалась в одном ряду с такими программными инструментами - делает ей честь. 🙏 За ссылку спасибо участнику нашего сообщества Ринату Кажетову (@rkazhet). @joomlafeed#joomla #community

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

Adam Bazaroff

  • Захожу иногда
  • 112
  • 10 / 5
Запрос имеет вид

insert into jos_vm_state (state_id, country_id, state_name, state_3_code, state_2_code) values ('166', '176', 'Адыгея Республика', '385', '01');

где 
'166' - Начало нумерации штатов. (165 - последний штат, который ставится по-умолчанию в VM) Это число можно узнать в таблице jos_vm_state (Статистика ряда, Ряды: XXX)
'176' - это код принадлежности штата к стране 176 (Россия)
'Адыгея Республика' - собственно сам штат.
'385' - Первые три цифры одного из индексов штата (в VM - это 3х-буквенная аббревиатура) /уникальное число/
'01' - в VM - это 2х-буквенная аббревиатура /уникальное число/

2х и 3х буквенные аббревиатуры - излишек, который для России не нужен, но эти поля обязательны для VM и должны быть уникальными. Эти аббревиатуры затем показываются перед адресами. Править придется ручками в коде VM.

Чтобы запустить запрос, откройте phpMyAdmin и выберите вкладку SQL. Затем скопируйте содержимое прикрепленного файла в область "Выполнить SQL запрос(ы) на БД" и нажмите кнопку "Пошел".
Всего добавляется 88 областей.

Внимание! Во избежание неприятностей - обязательно сделайте BACKUP базы!

[вложение удалено Администратором]
« Последнее редактирование: 16.04.2009, 17:21:57 от beagler »
*

Adam Bazaroff

  • Захожу иногда
  • 112
  • 10 / 5
Re: [howto] Делаем области России (штаты)
« Ответ #1 : 09.11.2006, 02:00:36 »
Осталась жестокая проблема с цифрами, вместо нормального названия региона в заказе. Т.е. вместо региона "Магаданская область" в заказе будет написано "39", вместо "Приморский край" - "54"...
Я попытался реализовать отображения хотябы в админке.
Редактируем файл order.order_print.php

Вместо строки 184
Код
<td width="65%"><?php $dbt->p("state"); ?>

Ставим
Код
<td width="65%"><?php
$dbzz = new ps_DB;
$dbzz->query( "SELECT state_name FROM #__{vm}_state WHERE state_2_code = '".$dbt->f("state")."'");
$dbzz->next_record();
echo $dbzz->f("state_name");?>

Со строкой 255 проделываем тоже самое (только тег </td> не надо удалять).
Теперь в админке всё работает. Буду копать дальше...
« Последнее редактирование: 09.11.2006, 02:06:34 от Adam Bazaroff »

Re: [howto] Делаем области России (штаты)
« Ответ #2 : 21.11.2006, 14:45:25 »
При проблемах с кодировкой
Динамика, млин... это как я понимаю баг самого ПХП... он при вызове функции htmlentities с пустым параметром charset не отлавливает его (как меж прочим заявлено) из системы...
решил так
в файле "administrator/components/com_virtuemart/classes/ps_html.php"
строка 247 (VM 1.0.7)
заменить htmlentities($dbs->f('state_name'), ENT_QUOTES); на htmlentities($dbs->f('state_name'), ENT_QUOTES'windows-1251');
« Последнее редактирование: 04.01.2007, 12:08:45 от tug »
*

tug

  • Захожу иногда
  • 333
  • 40 / 4
Re: [howto] Делаем области России (штаты)
« Ответ #3 : 04.01.2007, 12:11:49 »
Выкладываю новую версию.
Файл с расширение sql
Данному файлу всё равно есть ли у вас в базе данных штаты и сколько их. Просто залейте его удобным вам способом.
Внимание! Данный файл только для баз с префиксом jos_vm

[вложение удалено Администратором]
*

Adam Bazaroff

  • Захожу иногда
  • 112
  • 10 / 5
Re: [howto] Делаем области России (штаты)
« Ответ #4 : 04.01.2007, 13:06:22 »
А какие изменения произошли? Стоит ли обновлять существующие штаты?
*

tug

  • Захожу иногда
  • 333
  • 40 / 4
Re: [howto] Делаем области России (штаты)
« Ответ #5 : 04.01.2007, 13:09:05 »
Нет, твой файл. Просто я сделал чтоб им номера автоматом назначались, т.к. в 1.0.8 штатов больше, а некоторые на пустой магазин добавляют и тоже с 166 как-то неправильно.
*

Adam Bazaroff

  • Захожу иногда
  • 112
  • 10 / 5
Re: [howto] Делаем области России (штаты)
« Ответ #6 : 04.01.2007, 14:47:43 »
Новые штаты появились?.. Как бы их добавить при обновлении с 1.0.7 до 1.0.8...

Re: [howto] Делаем области России (штаты)
« Ответ #7 : 06.01.2007, 09:18:24 »
Большое спасибо, все работает!!!

Единственно, я зашел в офрмление заказа и надеялся. что эта информация появится в адресе доставки, но там запрашивается только страна...

Как сделать так, чтобы клиент вносил еще регион?
*

tug

  • Захожу иногда
  • 333
  • 40 / 4
Re: [howto] Делаем области России (штаты)
« Ответ #8 : 07.01.2007, 17:24:08 »
В настройках магазина установить опцию "Разрешить указывать регион"

Re: [howto] Делаем области России (штаты)
« Ответ #9 : 08.01.2007, 12:03:01 »
Опа... не все работает. Кодировка не определилась, выскакивают "кракозябы".

Где это можно подправить?

Кстати, никак не решу проблему с тем, что везде выскакивает дата в английском написании...

Re: [howto] Делаем области России (штаты)
« Ответ #10 : 08.01.2007, 12:11:03 »
Извените, не прочитал сразу.... Проблема решилась и в 108.


При проблемах с кодировкой
Динамика, млин... это как я понимаю баг самого ПХП... он при вызове функции htmlentities с пустым параметром charset не отлавливает его (как меж прочим заявлено) из системы...
решил так
в файле "administrator/components/com_virtuemart/classes/ps_html.php"
строка 247 (VM 1.0.7)
заменить htmlentities($dbs->f('state_name'), ENT_QUOTES); на htmlentities($dbs->f('state_name'), ENT_QUOTES'windows-1251');

*

AZ

  • Осваиваюсь на форуме
  • 30
  • 3 / 4
  • Здесь вам не ТУТ...
Re: [howto] Делаем области России (штаты)
« Ответ #11 : 24.05.2007, 19:53:50 »
Цитировать
Всего добавляется 88 областей.
Вроде бы областей 89 :o и цифровая нумерация регионов указанная в файле не соответствует реальной.
Да, а кто-нибудь умудрился добиться отображения (в "Информация о заказе") области в нормальном виде , то есть не цифрами?  :'(
« Последнее редактирование: 18.07.2007, 12:23:17 от AZ »
*

AZ

  • Осваиваюсь на форуме
  • 30
  • 3 / 4
  • Здесь вам не ТУТ...
Re: [howto] Делаем области России (штаты)
« Ответ #12 : 18.07.2007, 12:20:36 »
Господа-товарищи, чего-то никаких движений в этой актуальной теме.
Если я правильно понимаю.., отображения (в информации о заказе) названия региона прописью, а не цифрами добиться не получится?  :(
Вероятно это интересно только мне.

Re: [howto] Делаем области России (штаты)
« Ответ #13 : 01.08.2007, 14:52:39 »
Отображение имени области и страны, а не кода:

Файл "order.order_print.php" (админка):

Строка 186: заменяем код <?php $dbt->p("state");  ?> на
Код
<?php
$state = $dbt->f("state");
$dbc->query( "SELECT state_name FROM #__{vm}_state WHERE state_2_code = '$state'");
$dbc->next_record();
$state_name = $dbc->f("state_name");
echo $state_name;
?>

Строка 289: заменяем код <?php $dbt->p("state");  ?> на
Код
<?php
if( $state != $dbt->f("state")) {
$state = $dbt->f("state");
$dbc->query( "SELECT state_id, state_name FROM #__{vm}_state WHERE state_2_code = '$state'");
$dbc->next_record();
$state_name = $dbc->f("state_name");
}
echo $state_name;
?>

Файл "account.order_details.php" (инфо о заказе в учетной записи пользователя)

Строка 28: добавляем базу
Код
$dbtemp = new ps_DB;

Строка 189: заменяем код <?php $dbbt->p("state");  ?> на
Код
<?php $state = $dbbt->f("state");
$dbtemp->query( "SELECT state_name FROM #__{vm}_state WHERE state_2_code = '$state'");
$dbtemp->next_record();
$state_name = $dbtemp->f("state_name");
echo $state_name;
?>

Строка 202: заменяем код <?php $dbbt->p("country");  ?> на
Код
<?php $country = $dbbt->f("country");
$dbtemp->query( "SELECT country_name FROM #__{vm}_country WHERE country_3_code = '$country'");
$dbtemp->next_record();
$country_name = $dbtemp->f("country_name");
echo $country_name;
?>

Строка 289: заменяем код <?php $dbbt->p("state");  ?> на
Код
<?php
if( $state != $dbbt->f("state")) {
$state = $dbbt->f("state");
$dbtemp->query( "SELECT state_name FROM #__{vm}_state WHERE state_2_code = '$state'");
$dbtemp->next_record();
$state_name = $dbtemp->f("state_name");
}
echo $state_name;
?>

Строка 305: заменяем код <?php $dbbt->p("country");  ?> на
Код
<?php
if( $country != $dbbt->f("country")) {
$country = $dbbt->f("country");
$dbtemp->query( "SELECT country_name FROM #__{vm}_country WHERE country_3_code = '$country'");
$dbtemp->next_record();
$country_name = $dbtemp->f("country_name");
}
echo $country_name;
?>

Файл "checkout.customer_info.php" (адрес доставки, при оформлении заказа)

Строка 23: добавляем базу
Код
$db_temp = new ps_DB;

Строка 61: вместо
Код
<?php
             $db->p("city");
             echo ",";
             $db->p("state");
             echo " ";
             $db->p("zip");
             echo "<br /> ";
             $db->p("country");
           ?>
Вставляем
Код
           <?php
             $db->p("city");
             echo ", ";
             $state = $db->f("state");
$db_temp->query( "SELECT state_name FROM #__{vm}_state WHERE state_2_code = '$state'");
$db_temp->next_record();
$state_name = $db_temp->f("state_name");
echo $state_name;
             echo ", ";
             $db->p("zip");
             echo "<br /> ";
             $country = $db->f("country");
$db_temp->query( "SELECT country_name FROM #__{vm}_country WHERE country_3_code = '$country'");
$db_temp->next_record();
$country_name = $db_temp->f("country_name");
echo $country_name;
           ?>

Файл "ps_checkout.php" (список дополнительных адресов, адрес в подтверждении заказа(последний шаг),  mail-HTML, mail-text)

Изменений много, впадлу писать, просто выложу файл.

Файлы для VM 1.0.12

[вложение удалено Администратором]
« Последнее редактирование: 01.08.2007, 19:36:36 от Bones »

Re: [howto] Делаем области России (штаты)
« Ответ #14 : 01.08.2007, 19:38:49 »
Залил заново файл "account.order_details.php" а также поправил код в описании. Была ошибка.
*

AZ

  • Осваиваюсь на форуме
  • 30
  • 3 / 4
  • Здесь вам не ТУТ...
Re: [howto] Делаем области России (штаты)
« Ответ #15 : 03.08.2007, 16:24:43 »
Да-а-а... Долгая тема была :'(
И вот изменения! ^-^

to Bones
Ок, спасибо, попробую...
*

DWolf

  • Захожу иногда
  • 75
  • 21 / 0
Re: [howto] Делаем области России (штаты)
« Ответ #16 : 10.02.2009, 15:16:57 »
К сожалению этих строк нет в 1.1.3
Может кто-нибудь делал для этой версии?
*

DWolf

  • Захожу иногда
  • 75
  • 21 / 0
Re: [howto] Делаем области России (штаты)
« Ответ #17 : 10.02.2009, 16:58:09 »
Отображение имени области, а не кода для VM 1.1.3:
В конце файла /classes/ps_country.php (в админке) добавить функцию:
Код
function &get_state_by_code( $code, $c_id ) {
$_table_name = '#__{vm}_state';
$db = new ps_DB();
$state_code_type = strlen( $code );
switch ($state_code_type) {
case 2:
$state_code_type_field = 'state_2_code';
break;
case 3:
$state_code_type_field = 'state_3_code';
break;
default:
return false;
}
$db->query('SELECT `state_id`, `state_name`, `state_2_code`, `state_3_code`
FROM `'.$_table_name.'` WHERE country_id = '.$c_id.' and `'.$state_code_type_field.'` = \''.$db->getEscaped($code).'\'' );
$db->next_record();
return $db;
}

Для нормального отображения в админке в файле order.order_print.php делаем изменения:
строка 203:
Код
switch($field->name) {
          case 'country':
          require_once(CLASSPATH.'ps_country.php');
          $country = new ps_country();
          $dbc = $country->get_country_by_code($dbt->f($field->name));
          if( $dbc !== false ) echo $dbc->f('country_name');
          break;
          default:
            $fieldvalue = $dbt->f($field->name);
          if ( is_null($fieldvalue) OR $fieldvalue == "" ) {
            echo "&nbsp;";
          } else {
                    echo $fieldvalue;
                  }
          break;

необходимо исправить на
Код
switch($field->name) {
          case 'country':
          require_once(CLASSPATH.'ps_country.php');
          $country = new ps_country();
          $dbc = $country->get_country_by_code($dbt->f($field->name));
          if( $dbc !== false ) echo $dbc->f('country_name');
          $country_id=$dbc->f('country_id');
          break;
case 'state':
require_once(CLASSPATH.'ps_country.php');
          $state = new ps_country();
          $dbs = $state->get_state_by_code($dbt->f($field->name), $country_id);
          if( $dbs !== false ) echo $dbs->f('state_name');
break;
          default:
            $fieldvalue = $dbt->f($field->name);
          if ( is_null($fieldvalue) OR $fieldvalue == "" ) {
            echo "&nbsp;";
          } else {
                    echo $fieldvalue;
                  }
          break;

строка 248, отсчитываем после добавления предыдущего куска кода:
Код
switch($field->name) {
          case 'country':
          require_once(CLASSPATH.'ps_country.php');
          $country = new ps_country();
          $dbc = $country->get_country_by_code($dbt->f($field->name));
          if( $dbc !== false ) echo $dbc->f('country_name');
break;
          default:
            $fieldvalue = $dbt->f($field->name);
          if ( is_null($fieldvalue) OR $fieldvalue == "" ) {
            echo "&nbsp;";
          } else {
                    echo $fieldvalue;
                  }
          break;


заменить на:
Код
switch($field->name) {
          case 'country':
          require_once(CLASSPATH.'ps_country.php');
          $country = new ps_country();
          $dbc = $country->get_country_by_code($dbt->f($field->name));
          if( $dbc !== false ) echo $dbc->f('country_name');
$country_id=$dbc->f('country_id');
          break;
case 'state':
require_once(CLASSPATH.'ps_country.php');
          $state = new ps_country();
          $dbs = $state->get_state_by_code($dbt->f($field->name), $country_id);
          if( $dbs !== false ) echo $dbs->f('state_name');
break;
          default:
            $fieldvalue = $dbt->f($field->name);
          if ( is_null($fieldvalue) OR $fieldvalue == "" ) {
            echo "&nbsp;";
          } else {
                    echo $fieldvalue;
                  }
          break;


для изменения в информации о заказе в учетной записи пользователя правим файл /pages/accaunt.order_details.tpl.php (в шаблонах)
строка 105:
Код
switch($field->name) {
          case 'country':
          require_once(CLASSPATH.'ps_country.php');
          $country = new ps_country();
          $dbc = $country->get_country_by_code($dbbt->f($field->name));
          if( $dbc !== false ) echo $dbc->f('country_name');
          break;
          default:
          echo $dbbt->f($field->name);
          break;

заменить на:
Код
switch($field->name) {
          case 'country':
          require_once(CLASSPATH.'ps_country.php');
          $country = new ps_country();
          $dbc = $country->get_country_by_code($dbbt->f($field->name));
          if( $dbc !== false ) echo $dbc->f('country_name');
$country_id=$dbc->f('country_id');
          break;
case 'state':
require_once(CLASSPATH.'ps_country.php');
          $state = new ps_country();
          $dbs = $state->get_state_by_code($dbbt->f($field->name), $country_id);
          if( $dbs !== false ) echo $dbs->f('state_name');
break;
          default:
          echo $dbbt->f($field->name);
          break;


строка 148:
Код
switch($field->name) {
          case 'country':
          require_once(CLASSPATH.'ps_country.php');
          $country = new ps_country();
          $dbc = $country->get_country_by_code($dbst->f($field->name));
          if( $dbc !== false ) echo $dbc->f('country_name');
          break;
          default:
          echo $dbst->f($field->name);
          break;

заменить на:
Код
switch($field->name) {
          case 'country':
          require_once(CLASSPATH.'ps_country.php');
          $country = new ps_country();
          $dbc = $country->get_country_by_code($dbst->f($field->name));
          if( $dbc !== false ) echo $dbc->f('country_name');
          $country_id=$dbc->f('country_id');
          break;
case 'state':
require_once(CLASSPATH.'ps_country.php');
          $state = new ps_country();
          $dbs = $state->get_state_by_code($dbbt->f($field->name), $country_id);
          if( $dbs !== false ) echo $dbs->f('state_name');
break;
          default:
          echo $dbst->f($field->name);
          break;

Для изменения адреса доставки, при оформлении заказа правим файл /checkout/customer_info.tpl.php (в шаблонах)
строка 55:
Код
$db->p("state_2_code");
echo " ";
$db->p("zip");

заменить на
Код
$db->p("state_name");
echo ", ";
$db->p("zip");

Вроде бы всё! Надеюсь, очень, сильно!
*

OlegKor

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Re: [howto] Делаем области России (штаты)
« Ответ #18 : 03.03.2009, 13:45:41 »
Уважаемый DWolf

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

Тестировалось на:
Joomla 1.5.9
VirtueMart 1.1.3

В моем случае при формировании заказа из корзины, когда проходиш по шагам все выглядит вот так:

1 шаг "Адрес получателя"
Здесь указанная Вами поправка не работает вовсе. В адресе "Контактная информация" совсем не работает, а если добавить дополнительный адрес доставки, то и вовсе не отображается ОБЛАСТЬ и СТРАНА. Сведения об этом выглядят так:


2 шаг "Варианиты доставки" и 3 шаг "Способ оплаты"
Ну здесь адрес не отображается, этот шаг в нашем случае не интересен.

4 шаг "Оформить заказ"
Сведения об адресе доставки так же отображаются не верно. Просто наименование области исключено из адреса и все. Т.е. как я понимаю, если наименование ГОРОДА и ОБЛАСТИ разные, тогда должно было бы быть написано оба значения, иначе только одно. Но в моем случае, почему-то наименование области просто проигнорировано ... хотя значения разные. Те теперь не берет значение из поля "Код региона (2)", но и не пишет Наименование в любом случае.


Далее, при подтверждении заказа - Заказ принят и есть возможность просмотреть Информацию о заказе. Так вот здесь сведения об адресе отображаются так, как исправления вовсе не вносились в скрипт. Т.е. пишутся значения из "Код региона (2)".


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

С уважением OlegKor

[вложение удалено Администратором]
*

DWolf

  • Захожу иногда
  • 75
  • 21 / 0
Re: [howto] Делаем области России (штаты)
« Ответ #19 : 04.03.2009, 08:07:59 »
OlegKor, вы приводите пример из другой линейки (1.5).... на ней к сожалению я не тестировал...
Кстати, этот форум находится в ветке 1.0.

Если у меня будет свободное время, то я обязательно установлю и протестирую на 1.5.
Как только разберусь в чем дело, сразу же отвечу.

Re: [howto] Делаем области России (штаты)
« Ответ #20 : 06.03.2009, 16:09:17 »
Выкладываю новую версию.
Файл с расширение sql
Данному файлу всё равно есть ли у вас в базе данных штаты и сколько их. Просто залейте его удобным вам способом.
Внимание! Данный файл только для баз с префиксом jos_vm
У меня небольшая проблема, загрузил в SQL,  и вкладка регионы вообще исчезла, просто пустота, а Область/регион, стоит надпись, в чем может быть проблема? vertuemart 1.0.15 joomla lavra 1.0.15
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться