Новости Joomla

Загадочный параметр $live_site в configuration.php Joomla

Загадочный параметр $live_site в configuration.php Joomla

👩‍💻 Загадочный параметр $live_site в configuration.php Joomla. Зачем он нужен?Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.Однако, параметр всё же остался в ядре Joomla. Зачем он нужен? А нужен он в 2-х случаях:- для работы класса Joomla\CMS\Uri\Uri, который часто используется в коде Joomla для работы методов

Uri::root() и
Uri::base(), а значит может влиять и на работу в том числе ajax-скриптов.- для работы Joomla в CLI - командной строке сервера. В случае если вы используете в вашем CLI-плагине методы опять-таки класса Uri, то CLI ничего не знает о текущем домене, так как запускается вне web-сервера. Поэтому домен нужно указывать принудительно. Либо с помощью параметра командной строки
--live-site, например,
—live-site=https://site.ru/. Со слешем на конце, иначе в CLI адрес сайта станет
https://site.rujoomla.php.Либо в параметре
$live_site в файле configuration.php, так как
CliApplication берёт настройку оттуда, если параметр команды не указан или пуст.⚠️ Иначе в качестве хоста и url класса Uri будет установлено
https://joomla.invalid/set/by/console/application. В самом же коде команды получить параметр
$live_site можно из объекта приложения

protected function doExecute(InputInterface $input, OutputInterface $output): int    {         //...              $live_site = $this->getApplication()->get('live_site');         //...    }
и исходя из этого строить дальнейшую логику.@joomlafeed#joomla #разработка #php #cli

Вышел плагин AllVideos v.7.0 от JoomlaWorks

Вышел плагин AllVideos v.7.0 от JoomlaWorks

Вышел плагин AllVideos v.7.0 от JoomlaWorks.Этот контент-плагин - одно из старейших расширений для Joomla. Его задача - преобразовывать шорт-коды вида

{YOUTUBE}...{/YOUTUBE},
{MP3}parth/to/file.mp3{/MP3} и подобные во встроенные видео или аудио.👩‍💻 v.7.0.0. Что нового?- Добавлена поддержка Youtube Shorts. Просто скопируйте полный url видео и вставьте его внутри тегов
{YOUTUBE}...{/YOUTUBE}.- Поддержка Joomla 5.x без плагина обратной совместимости. PHP 5, PHP 7, PHP 8. - Индексация умным поиском в CLI. В Joomla 5 плагин перестал вызывать ошибку при индексации контента умным поиском через CLI,Заметьте, что этот один и тот же пакет для всех версий Joomla, начиная с 1.5.x и заканчивая 5.x. Технически "под капотом" код плагина по сути не менялся, а для поддержки следующих версий Joomla авторы вставляют "заплатки". Плагин всё ещё использует старую архитектуру файлов и классов Joomla, что, к сожалению, заставляет прибавлять к его описанию слова "пока ещё" - "пока ещё работает".
Страница расширенияGitHub расширенияJoomla Extensions Directory👩‍💻 За ссылку спасибо самому внимательному участнику нашего сообщества - Ринату Кажетову (@rkazhet).@joomlafeed#joomla #расширения

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

Wester

  • Захожу иногда
  • 180
  • 4 / 1
На странице подтверждения заказа VirtueMart выводит адрес доставки пустым, хотя согласно шаблону, должен выводить выбранный адрес доставки  :(
Подскажите где подкрутить.

Joomla 1.5.14
VirtueMart 1.1.3

\components\com_virtuemart\themes\default\templates\checkout\get_final_confirmation.tpl
Код
// Begin with Shipping Address
if (!ps_checkout::noShipToNecessary ()) {

$db->query ("SELECT * FROM #__{vm}_user_info WHERE user_info_id='".strip_tags ($_REQUEST['ship_to_info_id'])."'");
$db->next_record ();

echo '<tr><td valign="top"><strong>'.$VM_LANG->_('PHPSHOP_ADD_SHIPTO_2'). ":</strong></td>";
echo '<td>';
echo vmFormatAddress ( array ('name' => $db->f ("first_name")." ".$db->f ("last_name"),
        'address_1' => $db->f ("address_1"),
        'address_2' => $db->f ("address_2"),
        'state' => $db->f ("state"),
        'zip' => $db->f ("zip"),
        'city' => $db->f ("city"),
        'country' => $db->f ('country')
        ), true );

echo "</td></tr>";
}

« Последнее редактирование: 14.08.2009, 16:39:07 от Wester »
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
У всех работает?
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Пишет "Адрес доставки:*пусто*", кто-нибудь исправил?
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
в ps_checout.php закомментировать следующие строки (у меня 712-713)
Код
$q .= "INNER JOIN #__{vm}_country c ON (i.country=c.country_3_code) ";
$q .= "LEFT JOIN #__{vm}_state s ON (i.state=s.state_2_code AND s.country_id=c.country_id) ";

*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
ps_checkout.php*
Что-то не получается (  Просто пропадает страна и регион в адресе доставки, но на странице подтвердить заказ поле адрес доставки все равно пустое...
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Так вроде из базы данных берет?
ro_basket.php
Код
<?php
if ( !defined ( '_VALID_MOS' ) && !defined ( '_JEXEC' ) ) die ( 'Direct Access to '.basename (__FILE__).' is not allowed.' );
/**
* This is the read-only version of the BASKET handler.
* It displays all products and all totals. Product quantities can't be
* changed on this page.
*
* @version $Id: ro_basket.php 1589 2008-12-08 20:27:20Z soeren_nb $
* @package VirtueMart
* @subpackage html
* @copyright Copyright (C) 2004-2008 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
*/
mm_showMyFileName ( __FILE__ );

require_once (CLASSPATH. 'ps_product.php' );
$ps_product = new ps_product;
require_once (CLASSPATH. 'ps_checkout.php' );
$ps_checkout = new ps_checkout;
require_once (CLASSPATH . 'ps_shipping_method.php' );

global $weight_total, $total, $tax_total, $order_tax_details, $discount_factor, $order_total;

/* make sure this is the checkout screen */
if ($cart["idx"] == 0) {
echo $VM_LANG->_('PHPSHOP_EMPTY_CART');
$checkout = False;
}
else {
$checkout = True;
$payment_method_id = vmGet ( $_REQUEST, "payment_method_id" );
$total = 0;
// Added for the zone shipping module
$vars["zone_qty"] = 0;
$weight_total = 0;
$weight_subtotal = 0;
$tax_total = 0;
$shipping_total = $shipping_tax = 0;
$order_total = 0;
$coupon_discount = vmGet ( $_SESSION, 'coupon_discount', 0 );
$coupon_discount_before=$coupon_discount_after=$payment_discount_before=$payment_discount_after=$tax=$shipping=false;
$product_rows = Array ();

for ($i=0;$i<$cart["idx"];$i++) {
// Added for the zone shipping module
$vars["zone_qty"] += $cart[$i]["quantity"];

if ($i % 2) $product_rows[$i]['row_color'] = "sectiontableentry2";
else $product_rows[$i]['row_color'] = "sectiontableentry1";

// Get product parent id if exists
$product_parent_id=$ps_product->get_field ($cart[$i]["product_id"],"product_parent_id");

// Get flypage for this product
$flypage = $ps_product->get_flypage ($cart[$i]["product_id"]);

// Build URL based on whether item or product
if ($product_parent_id) {
$url = $sess->url (URL .basename ($_SERVER['PHP_SELF']). "?page=shop.product_details&flypage=$flypage&product_id=$product_parent_id");
}
else {
$url = $sess->url (URL . basename ($_SERVER['PHP_SELF'])."?page=shop.product_details&flypage=$flypage&product_id=" . $_SESSION['cart'][$i]["product_id"]);
}

$product_rows[$i]['product_name'] = "<a href=\"$url\"><strong>"
. shopMakeHtmlSafe ($ps_product->get_field ($_SESSION['cart'][$i]["product_id"], "product_name"))
. "</strong></a><br />"
. $ps_product->getDescriptionWithTax ( $_SESSION['cart'][$i]["description"], $_SESSION['cart'][$i]["product_id"] );

// Display attribute values if this an item
$product_rows[$i]['product_attributes'] = "";
if ($product_parent_id) {
$db_detail=$ps_product->attribute_sql ($cart[$i]["product_id"],$product_parent_id);
while ($db_detail->next_record ()) {
$product_rows[$i]['product_attributes'] .= "<br />" . $db_detail->f ("attribute_name"). "<br />";
$product_rows[$i]['product_attributes'] .= $db_detail->f ("attribute_value");
}
}
$product_rows[$i]['product_sku'] = $ps_product->get_field ($cart[$i]["product_id"], "product_sku");

/* Product PRICE */
$my_taxrate = $ps_product->get_product_taxrate ($cart[$i]["product_id"], $weight_subtotal);
$tax = $my_taxrate * 100;

$price = $ps_product->get_adjusted_attribute_price ($cart[$i]["product_id"], $cart[$i]["description"]);
$price['product_price'] = $GLOBALS['CURRENCY']->convert ( $price['product_price'], $price['product_currency'] );
if ( $auth["show_price_including_tax"] == 1 ) {
$product_price = $price["product_price"] * ($my_taxrate+1);
} else {
$product_price = $price["product_price"];
}
$product_price = round ( $product_price, 5 );
$product_rows[$i]['product_price'] = $GLOBALS['CURRENCY_DISPLAY']->getFullValue ($product_price);

/* Quantity Box */
$product_rows[$i]['quantity'] = $cart[$i]["quantity"];

/* WEIGHT CALCULATION */
$weight_subtotal = ps_shipping_method::get_weight ($cart[$i]["product_id"]) * $cart[$i]['quantity'];
$weight_total += $weight_subtotal;

/* SUBTOTAL CALCULATION */
$subtotal = $product_price * $cart[$i]["quantity"];

$total += $subtotal;
$product_rows[$i]['subtotal'] = $GLOBALS['CURRENCY_DISPLAY']->getFullValue ($subtotal);
if (!empty ($my_taxrate) && MULTIPLE_TAXRATES_ENABLE=='1') {
if ( $auth["show_price_including_tax"] == 1 ) {
eval ( "\$message = \"".$VM_LANG->_('PHPSHOP_INCLUDING_TAX')."\";" );
$product_rows[$i]['subtotal'] .= "&nbsp;".$message;
}
else {
$product_rows[$i]['subtotal'] .= "&nbsp;(+ $tax% ".$VM_LANG->_('PHPSHOP_CART_TAX').")";
}
}

// UPDATE CART / DELETE FROM CART
$action_url = $_SERVER['SERVER_PORT']=="443" ? SECUREURL : URL . basename ($_SERVER['PHP_SELF']);
$product_rows[$i]['update_form'] = "<input type=\"hidden\" name=\"page\" value=\"". $page ."\" />
        <input type=\"hidden\" name=\"func\" value=\"cartUpdate\" />
        <input type=\"hidden\" name=\"product_id\" value=\"". $_SESSION['cart'][$i]["product_id"] ."\" />
        <input type=\"hidden\" name=\"Itemid\" value=\"". $sess->getShopItemid ()."\" />
        <input type=\"hidden\" name=\"description\" value=\"". $cart[$i]["description"]."\" />
        <input type=\"image\" name=\"update\" title=\"". $VM_LANG->_('PHPSHOP_CART_UPDATE')."\" src=\"". IMAGEURL ."ps_image/edit_f2.gif\" value=\"". $VM_LANG->_('PHPSHOP_UPDATE')."\" />
      </form>";
$product_rows[$i]['delete_form'] = "<form action=\"$action_url\" method=\"post\" name=\"delete\" />
        <input type=\"hidden\" name=\"option\" value=\"com_virtuemart\" />
        <input type=\"hidden\" name=\"page\" value=\"". $page ."\" />
        <input type=\"hidden\" name=\"Itemid\" value=\"". $sess->getShopItemid ()."\" />
        <input type=\"hidden\" name=\"func\" value=\"cartDelete\" />
        <input type=\"hidden\" name=\"product_id\" value=\"". $_SESSION['cart'][$i]["product_id"] ."\" />
        <input type=\"hidden\" name=\"description\" value=\"". $cart[$i]["description"]."\" />
      <input type=\"image\" name=\"delete\" title=\"". $VM_LANG->_('PHPSHOP_CART_DELETE')."\" src=\"". IMAGEURL ."ps_image/delete_f2.gif\" value=\"". $VM_LANG->_('PHPSHOP_CART_DELETE')."\" />
      </form>";
} // End of for loop through the Cart

$total = $total_undiscounted = round ($total, 5);
$subtotal_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue ($total);


if ($_REQUEST["page"] == "checkout.index" && !empty ($_POST["do_coupon"])) {
/* process the coupon */

/* make sure they arent trying to run it twice */
if (@$_SESSION['coupon_redeemed'] == true) {
$vmLogger->warning ( $VM_LANG->_('PHPSHOP_COUPON_ALREADY_REDEEMED',false) );
}
else {
require_once ( CLASSPATH . "ps_coupon.php" );
$vars["total"] = $total;
ps_coupon::process_coupon_code ( $vars );
}
}

// DISCOUNT
$discount_word = ' ';
$payment_discount_display = '0';
$payment_discount = $ps_checkout->get_payment_discount ($payment_method_id, $total);
if ( PAYMENT_DISCOUNT_BEFORE == '1') {
if ( $payment_discount != 0.00 ) {
$payment_discount_before = true;
if ( $payment_discount > 0.00 ) {
$discount_word = $VM_LANG->_('PHPSHOP_PAYMENT_METHOD_LIST_DISCOUNT');
}
else {
$discount_word = $VM_LANG->_('PHPSHOP_FEE');
}

$total -= $payment_discount;
$payment_discount_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue ($payment_discount-($payment_discount*2));
}
// COUPON DISCOUNT
$coupon_display = '';
if ( PSHOP_COUPONS_ENABLE=='1' && @$_SESSION['coupon_redeemed']==true ) {
$total -= $_SESSION['coupon_discount'];
$coupon_discount_before = true;
$coupon_display = "- ".$GLOBALS['CURRENCY_DISPLAY']->getFullValue ( $_SESSION['coupon_discount'] );
}
}
/* SHOW SHIPPING COSTS */
if ( !empty ($shipping_rate_id) && !ps_checkout::noShippingMethodNecessary () && !is_null ($ps_checkout->_SHIPPING) ) {
$shipping = true;
$vars["weight"] = $weight_total;
$shipping_total = round ( $ps_checkout->_SHIPPING->get_rate ( $vars ), 5 );
$shipping_taxrate = $ps_checkout->_SHIPPING->get_tax_rate ();

// When the Shipping rate is shown including Tax
// we have to extract the Tax from the Shipping Total
if ( $auth["show_price_including_tax"] == 1 ) {
$shipping_tax = round ( $shipping_total- ($shipping_total / (1+$shipping_taxrate)), 5);
}
else {
$shipping_tax = round ( $shipping_total * $shipping_taxrate, 5);
}
$shipping_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue ($shipping_total);
}
else {
$shipping_total = 0;
$shipping_display = "";
}
/* SHOW TAX */
if (!empty ($_REQUEST['ship_to_info_id']) || $auth["show_price_including_tax"] == 1) {
$tax = true;

if ( ($weight_total != 0 || TAX_VIRTUAL=='1') && $total > 0 ) {
$order_taxable = $ps_checkout->calc_order_taxable ($vars);
$vars['payment_discount'] = $payment_discount;
$tax_total = $ps_checkout->calc_order_tax ($order_taxable, $vars);
} else {
$tax_total = 0;
}
if ( $auth['show_price_including_tax']) {
$tax_total *= $discount_factor;
}
$tax_total += $shipping_tax;
$tax_total = round ( $tax_total, 5 );
$tax_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue ($tax_total);

$tax_display .= ps_checkout::show_tax_details ( $order_tax_details );
}

if ( PAYMENT_DISCOUNT_BEFORE != '1') {
if ( $payment_discount != 0.00 ) {
$payment_discount_after = true;
if ( $payment_discount > 0.00 ) {
$discount_word = $VM_LANG->_('PHPSHOP_PAYMENT_METHOD_LIST_DISCOUNT');
}
else {
$discount_word = $VM_LANG->_('PHPSHOP_FEE');
}
$total -= $payment_discount;
$payment_discount_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue ($payment_discount-($payment_discount*2));
}
// COUPON DISCOUNT
$coupon_display = '';
if ( PSHOP_COUPONS_ENABLE=='1' && @$_SESSION['coupon_redeemed']==true ) {
$total -= $_SESSION['coupon_discount'];
$coupon_discount_after = true;
$coupon_display = "- ".$GLOBALS['CURRENCY_DISPLAY']->getFullValue ( $_SESSION['coupon_discount'] );
}
}

// Attention: When show_price_including_tax is 1,
// we already have an order_total including the Tax!
if ( $auth["show_price_including_tax"] == 0 ) {
$order_total += $tax_total;
$total_undiscounted += $tax_total;
}
$order_total += $shipping_total + $total;
$total_undiscounted += $shipping_total;

/* check if the minimum purchase order value has already been reached */
if (round ($_SESSION['minimum_pov'], 2) > 0.00) {
if ($total_undiscounted >= $GLOBALS['CURRENCY']->convert ( $_SESSION['minimum_pov'] ) ) {
// OKAY!
define ('_MIN_POV_REACHED', '1');
}
} else
define ('_MIN_POV_REACHED', '1');

$order_total_display = $GLOBALS['CURRENCY_DISPLAY']->getFullValue ($order_total);

$tpl = new $GLOBALS['VM_THEMECLASS']();
$tpl->set_vars ( Array (
'product_rows' => $product_rows,
'subtotal_display' => $subtotal_display,
'discount_word' => $discount_word,
'payment_discount_before' => $payment_discount_before,
'payment_discount_after' => $payment_discount_after,
'payment_discount_display' => $payment_discount_display,
'coupon_discount_before' => $coupon_discount_before,
'coupon_discount_after' => $coupon_discount_after,
'coupon_display' => $coupon_display,
'shipping' => $shipping,
'shipping_display' => $shipping_display,
'tax' => $tax,
'tax_display' => $tax_display,
'order_total_display' => $order_total_display,
));

if ( $auth["show_price_including_tax"] == 1) {
$basket_html = $tpl->fetch ( 'basket/ro_basket_b2c.html.php');
}
else {
$basket_html = $tpl->fetch ( 'basket/ro_basket_b2b.html.php');
}

}
?>
И так к слову зачем нужен файл ro_basket_b2b.html.php?
« Последнее редактирование: 14.08.2009, 16:41:34 от Wester »
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
А с пустым адресом что делать? не выводит и все ((
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
...ага... оформление заказа в 2 шага - 1 .... 2 - подтведить заказ

[вложение удалено Администратором]
« Последнее редактирование: 14.08.2009, 18:21:22 от Wester »
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
нет  >:( Может быть сама функция не правильно написана (в 1 посту)
« Последнее редактирование: 14.08.2009, 20:29:44 от Wester »
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
уже пробывал не помагает..
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Цитировать
а в {vm}_user_info есть адрес с таким user_info_id
Это в базе данных искать?
На странице подтверждения заказа:
$vars: ship_to_info_id => c5821315791756c6f74b27077a5797b3
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Есть!
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
при выборе 1 варианта (по умолчанию): "ИМЯ ФАМИЛИЯул. Елецкая77115583МоскваRUS"
при выборе 2 варианта выводит: "77115583RUS"

Код
// Begin with Shipping Address
//if (!ps_checkout::noShipToNecessary ()) {

$db->query ("SELECT * FROM #__{vm}_user_info WHERE user_info_id='".strip_tags ($_REQUEST['ship_to_info_id'])."'");
$db->next_record ();

echo '<tr><td valign="top"><strong>'.$VM_LANG->_('PHPSHOP_ADD_SHIPTO_2'). ":</strong></td>";
echo '<td>';
echo $db->f ("first_name")." ".$db->f ("last_name"). $db->f ("address_1"). $db->f ("address_2").$db->f ("state"). $db->f ("zip"). $db->f ("city").$db->f ('country');

echo "</td></tr>";
//}
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Ну я так понял приехал я с этим вопросом никуда ))) beagler, подскажи еще че-нить, еще +1 поставлю ))
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
посмотри как в list_shipto_addresses.tpl.php адреса выводятся

:) плюс на хлеб не намажешь.
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Там все ясно... а как решить проблему не понимаю)
list_shipto_addresses.tpl.php

ЗЫ Понимаю, и в холодильник не поставишь...  ;)
« Последнее редактирование: 17.08.2009, 10:39:50 от beagler »
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
А почему я не могу вывести страну и регион (все остальное работает) на странице подтверждения >:(
echo $db->f ("country_name"). ", ";
echo $db->f ("state_name"). ", ";
тоже самое работает на странице выбора адреса (list_shipto_addresses.tpl.php)...  ?
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Да, если это убрать то пропадает везде страна и регион
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Для одного товара несколько активных цен!

Автор RodrigeZ

Ответов: 7
Просмотров: 6346
Последний ответ 24.04.2017, 01:22:33
от VIPersone
Как настроить уведомление о новом заказе?

Автор mrfruze

Ответов: 5
Просмотров: 4927
Последний ответ 02.03.2015, 14:58:59
от redsowet
Не работает авторизация на сайте

Автор ranaza

Ответов: 4
Просмотров: 1434
Последний ответ 10.12.2012, 15:38:18
от dstavropolskij
При регистрации не сообщает что email или логиl

Автор SMVVK

Ответов: 0
Просмотров: 1304
Последний ответ 01.10.2012, 20:14:55
от SMVVK
[РЕШЕНО]Не выводятся доступные варианты о

Автор SMVVK

Ответов: 1
Просмотров: 1317
Последний ответ 07.01.2012, 13:05:12
от SMVVK