Новости Joomla

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

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

Долгое время у всех был немой вопрос: "Как же теперь оценивать эффективность сайта?". Теперь этот на этот вопрос отчасти отвечает новый инструмент аналитики.
Процитируем справку Яндекса по инструменту:
На запросы пользователей в Поиске может отвечать Алиса AI. Ответы появляются в поисковой выдаче, в объектных ответах и на отдельной вкладке Поиска. В них чаще всего упоминаются страницы сайтов, на которые Алиса AI опиралась при подготовке ответа.

С помощью инструмента Видимость сайта в Алисе AI в Яндекс Вебмастере вы можете:
- узнать долю упоминаний сайта среди источников в ответах Алисы AI в Поиске и отследить динамику изменений;
- посмотреть примеры запросов, по которым страницы сайта показываются в ответах Алисы AI;
- посмотреть примеры сайтов той же тематики, которые часто упоминаются в генеративной выдаче.
Данные отображаются за последние 3 месяца и обновляются каждую неделю.

Статистика собирается только по тем запросам, по которым ваш сайт уже находится достаточно высоко в поисковой выдаче. Это позволяет анализировать видимость именно в той нише, где вы заинтересованы в продвижении, и избегать «размытия» по малозначимым для вас запросам.

Кроме того, такой подход обусловлен работой Алисы AI: она строит ответ с опорой на самые релевантные, информативные и качественные страницы, которые обычно занимают высокие позиции в Поиске.

Чтобы увидеть статистику вашего сайта в меню Яндекс.Вебмастера перейдите в раздел "Эффективность" и далее в "Показы сайта в Алисе AI".

В начале февраля 2026г. был вебинар с Михаилом Сливинским - амбассадором Поиска Яндекса, и в рамках вебинара была озвучена просьба сделать такой инструмент. Скорее всего разработка на тот момент уже велась, потому что от просьбы до релиза прошло около 2-х месяцев. В любом случае хорошо, что такая статистика появилась.

Показы сайта в Алисе AI в вашем Яндекс,Вебмастере.

@joomlafeed

👩‍💻 ИИ-админ для Joomla ближе, чем вы думаете: Joomla MCP.

👩‍💻 ИИ-админ для Joomla ближе, чем вы думаете: Joomla MCP.

В февральском номере Joomla Community Magazine в статье Evolving Joomla - Joomla CMS MCP Server: Opening the Door to AI-Powered Administration рассказывается о работе команды разработчиков над внедрением в ядро Joomla MCP-сервера.

Что такое MCP-сервер?
Последние годы всех захватывает бум ИИ-технологий. Появились ИИ-агенты - программы, устанавливаемые на сервер или компьютер, которые получают от вас запрос или задачу в человеческом виде и могут выполнять действия с файлами, ходить по сайтам, создавать сайты, программировать и т.д. Люди используют ИИ-агентов в самых разных ситуациях: от написания и проверки кода (даже там, где язык программирования не знаете совсем) до планирования путешествий и бронирования гостиницы.

ИИ-агенты могут использовать различные программные инструменты по протоколу Model Context Protocol (MCP). Для этого разработчик программы должен внедрить MCP в свой продукт или сервис. Так, например, ваш ИИ-агент может ходить по сайтам через браузер и собирать нужную информацию, управляя браузером через MCP-сервер. Или использовать функционал IDE PHP Storm для написания кода, сбора и отладки ошибок, использовать поиск PHP Storm по кодовой базе, а не простой текстовый поиск по файлам. MCP предоставляет набор функций для полноценного управления программным обеспечением.

В случае с Joomla, сервер MCP может предоставить администраторам следующие возможности:
- Автоматическое создание категорий, материалов и меню на основе карты сайта или PDF-файла.
- Создавайть SEO-оптимизированные заголовки и метаописания в пакетном режиме.
- Обновлять расширения на нескольких сайтах одновременно
- Создание посадочные страницы.

Важно отметить, что сервер MCP не задумывался как функция, доступная только «супер-администраторам». Цель инициативы — создать решение, которое будет простым в настройке, маломощным и доступным для широкого круга пользователей.

В процессе разработки точка входа Joomla (аналогично Site, Administrator, Api, Cli), которая будет работать с Streamable HTTP, необходимым для MCP. Аутентификация пока что предполагается на токенах, но затем планируется создание универсального OAuth-сервера для Joomla.
Фактические возможности MCP — инструменты, ресурсы и подсказки — реализованы в виде плагинов для обеспечения расширяемости. Таким образом ожидаем, что и сторонние разработчики смогут создавать MCP-плагины для внедрения поддержки своих расширений Joomla для работы с ИИ.

@joomlafeed

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

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
По заказу dvtimofei переработан плагин vmproductsnapshots_1.1.3.j15

показывает все свойства и аттрибуты товара, добавлен весь функционал выбора количества и добавления в корзину.

Установка:
1. Разархивируйте.
2. Установите и опубликуйте плагин.
3. Файл addtocart_form2.tpl.php положить в \components\com_virtuemart\themes\default\templates\browse\includes

Пример использования в тексте статьи:
{product_snapshot:id=1|2|3|4|5|6,showname=y,showprice=y,showaddtocart=y,displayeach=v,displaylist=v,width=90%,border=0,style=color:black;,align=left}

Покажет в статье товары с id 1,2,3,4,5,6


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

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Спасибо!  ^-^ Только вариант Узнать цену и кнопка купить все равно присутствует )
« Последнее редактирование: 18.08.2009, 13:22:02 от Wester »
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
еще бы добавить style к каждому элементу товара, при выводе через ||| (а border убрать в этом случае)
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
При показе кнопки купить -
Notice: Undefined variable: product_parent_id in /www/components/com_virtuemart/themes/моя тема/templates/browse/includes/addtocart_form2.tpl.php on line 4
Как это исправить?
*

Wester

  • Захожу иногда
  • 180
  • 4 / 1
Можно ли оставить ссылку "купить"?
*

atlet

  • Захожу иногда
  • 97
  • 1 / 0
Не подскажите как настроить вид отображения товаров? Т.е я выбираю какие показывать товары в материале, а вот как они будут отображается где задается? (например чтоб картика ыла слево, описание и название обтекало ее справо, купить и кол-во товаров было снизу)
*

atlet

  • Захожу иногда
  • 97
  • 1 / 0
Не совсем ясно, но все равно спасибо. В функции return_snapshot() много всего понаписанно, но что именно отвечает за вывод мне не ясно, т.к я не силен в php.
*

atlet

  • Захожу иногда
  • 97
  • 1 / 0
*

gora4o

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
При отображении модуля в статье таким образом:

{product_snapshot:id=1|2|3|,showname=y,showprice=y,showaddtocart=y,displayeach=v,displaylist=v,width=90%,border=0,style=color:black;,align=left}

{product_snapshot:id=4|5|6,showname=y,showprice=y,showaddtocart=y,displayeach=v,displaylist=v,width=90%,border=0,style=color:black;,align=left}

{product_snapshot:id=7|8|9,showname=y,showprice=y,showaddtocart=y,displayeach=v,displaylist=v,width=90%,border=0,style=color:black;,align=left}

Последние два вывода модуля смещаются жутко вправо и это наблюдается только в Опере 9 и 10 в Мозиле и в ИЕ7,ИЕ8 все хорошо


В чем может быть причина?
*

gora4o

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Также еще у всех товаров наблюдается глюк-кнопка покупки отображается, но она не активна, то есть грузится просто как изображение и это только так в Опере 9,10 и в ИЕ7, ИЕ8 в Мозиле все хорошо.
*

atlet

  • Захожу иногда
  • 97
  • 1 / 0
Уважаемый beagler обаружил такой глюк, что если вывести товары через Ваш плагин, то не получается купить больше 6 товров. Т.е остальные просто не добавляються в корзину. В чем может быть дело?
*

atlet

  • Захожу иногда
  • 97
  • 1 / 0
Когда я нажимаю купть повляется Предупреждение: Пожалуйста, введите допустимое значение для этой позиции. Может это что-то говорит.
*

PoTaP0ff

  • Осваиваюсь на форуме
  • 11
  • 1 / 0
Кхм... если использовать Ваш плагин - то, при таких настройках магазина, когда не показывается поле ввода кол-ва товара, т.е. в корзину должен записаться 1 товар - при нажатии на кнопку купить - вылазиет ошибка:
Когда я нажимаю купть повляется Предупреждение: Пожалуйста, введите допустимое значение для этой позиции.
ЗЫ: и больше 1го раза у мну в корзину один и тот же товар не добавляется. Пишет что кол -во товара обновлено, но на самом деле все не так...
« Последнее редактирование: 13.01.2010, 10:38:07 от PoTaP0ff »
*

myreg12345

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
2 beagler
Подскажите, а каким образом в этом плагине дополнительно можно выводить в описании характеристики типа товаров?
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
работа над плагином закончена полгода назад. ТЗ закачика выполненно. Плагин выложен в общее пользование as-is. Для доработки плагина с учётом Ваших пожеланий, к сожалению, нет времени.
*

myreg12345

  • Осваиваюсь на форуме
  • 19
  • 1 / 0
Понимаю! И так большое спасибо за плагин :)
*

lazyleto

  • Осваиваюсь на форуме
  • 13
  • 6 / 0
Подправил вид отображения товара: картинка слева, справа сверху вниз — всё остальное. Может кому-то пригодится.
Однако Количество и кнопка В корзину в IE так и не отображаются.
Файл vmproductsnapshots.php (vmproductsnapshots_1.1.4.j15):
Код
<?php
/**
 * VirtueMart Show-Product-Snapshop Mambot
 *
 * @version $Id: vmproductsnapshots.php 1958 2009-10-08 20:09:57Z soeren_nb $
 * @package VirtueMart
 * @subpackage mambots
 *
 * @copyright (C) 2004-2008 Soeren Eberhardt
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
 *
 * VirtueMart is Free Software.
 * VirtueMart comes with absolute no warranty.
 *
 * http://virtuemart.net
 */

if( ! defined( '_VALID_MOS' ) && ! defined( '_JEXEC' ) )
die( 'Direct Access to ' . basename( __FILE__ ). ' is not allowed.' ) ;

/**
 * VirtueMart Show-Product-Snapshop Mambot
 *
 * <b>Usage:</b>
 * <code>{product_snapshot:id=XX,showname=y,showprice=n,showdesc=n,showaddtocart=y,displayeach=h,displaylist=v,width=90%,border=0,style=color:black;,align=left}</code>
 * string sku (product_sku) for more than one, separate with vertical bar
 * string showname (show the product name? y or n)
 * string showprice (show the product price? y or n)
 * string showdesc (show the product short description? y or n)
 * string quantity (the quantity to add to cart. Separate with vertical bar when there's more than one product eg 1|2|1)
 * string showaddtocart (show an "Add-to-cart" link? y or n)
 * string displayeach (the horizontal or vertical orientation of the product attributes. h or v)
 * string displaylist (the horizontal or vertical orientation of the products.
                       It only applies when there is more than one sku. h or v)
 * string width (The width of the Table element)
 * string border (The value of the Border attribute of the Table element)
 * string style (the value for the style attribute of the Table element)
 * string align (defines the align of the table with the product snapshot)
 */
global $ps_product ;
// Load the VirtueMart main parse code
//if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
// require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
//} else {
// require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
//}

require_once (dirname( __FILE__ ). "/../../components/com_virtuemart/virtuemart_parser.php") ;

include_class( "product" ) ;

if( vmIsJoomla( '1.5', '>=' ) ) {
$mainframe->registerEvent( 'onBeforeDisplayContent', 'pluginProductSnap' ) ;
} else {
$_MAMBOTS->registerFunction( 'onPrepareContent', 'botProductSnap' ) ;
}

function pluginProductSnap( &$row, &$params, $page = 0 ) {
return handleProductSnapShot( $row, $params, $page ) ;
}
function botProductSnap( $published, &$row, &$params, $page = 0 ) {
return handleProductSnapShot( $row, $params, $page, $published ) ;
}
/**
 * Main Function to display Product Snapshots
 *
 * @param mosContent $row
 * @param JParams $params
 * @param int $page
 * @param boolean $published
 * @return boolean
 */
function handleProductSnapShot( &$row, &$params, $page = 0, $published = true ) {
global $mosConfig_absolute_path, $mosConfig_live_site, $database ;

// load default parameters
if( vmIsJoomla( '1.5', '>=' ) ) {
$db = JFactory::getDBO() ;
$plugin = & JPluginHelper::getPlugin( 'content', 'vmproductsnapshots' ) ;
$parameters = $plugin->params ;
} else {
$query = "SELECT id,params FROM #__mambots WHERE element = 'vmproductsnapshots' AND folder = 'content'" ;
$database->setQuery( $query ) ;
$mambot = $database->loadResult() ;
$parameters = $mambot->params ;
}
$bot_params = & new vmParameters( $parameters ) ;
$param_defaults = array( 'id' => '0' ,
'enabled' => '1',
'showname' => 'y' ,
'showimage' => 'y' ,
'showdesc' => 'y' ,
'showprice' => 'y' ,
'quantity' => '1' ,
'showaddtocart' => 'y' ,
'displaylist' => 'v' ,
'displayeach' => 'v' ,
'width' => '100%' ,
'border' => '0' ,
'style' => '' ,
'align' => '' ) ;
// get settings from admin mambot parameters
foreach( $param_defaults as $key => $value ) {
$param_defaults[$key] = $bot_params->get( $key, $value ) ;
}

$enabled = $param_defaults['enabled'];
if( !$published || !$enabled ) {
$row->text = preg_replace( "/{product_snapshot:.+?}/", '', $row->text );
return true ;
}

$vm_productsnap_entrytext = $row->text ;
$vm_productsnap_matches = array( ) ;
if( preg_match_all( "/{product_snapshot:.+?}/", $vm_productsnap_entrytext, $vm_productsnap_matches, PREG_PATTERN_ORDER ) > 0 ) {
foreach( $vm_productsnap_matches[0] as $vm_productsnap_match ) {
$vm_productsnap_match = str_replace( "{product_snapshot:", "", $vm_productsnap_match ) ;
$vm_productsnap_match = str_replace( "}", "", $vm_productsnap_match ) ;

// Get Bot Parameters
$vm_productsnap_params = get_prodsnap_params( $vm_productsnap_match, $param_defaults ) ;

// Get the html
$showsnapshot = return_snapshot( $vm_productsnap_params ) ;

$vm_productsnap_entrytext = preg_replace( "/{product_snapshot:.+?}/", $showsnapshot, $vm_productsnap_entrytext, 1 ) ;
}
$row->text = $vm_productsnap_entrytext ;

}
return ;
}

/**
 *  compare and return parameters for product snap shot.
 * @author mike howard
 * @param string $vm_productsnap_match
 * @param array $param_defaults
 * @return array
 */
function get_prodsnap_params( $vm_productsnap_match, $param_defaults ) {
$params = explode( ",", $vm_productsnap_match ) ;
foreach( $params as $param ) {
$param = explode( "=", $param ) ;
if( isset( $param_defaults[$param[0]] ) ) {
$param_defaults[$param[0]] = $param[1] ;
}
}
$param_defaults['id'] = "'" . str_replace( "|", "','", $param_defaults['id'] ). "'" ;
$param_defaults['quantity'] = explode( "|", $param_defaults['quantity'] ) ;
return $param_defaults ;
}

/**
 * return the HTML code to show a snapshot of a product based on the product id.
 *
 * @param array $params
 * @return string
 */
function return_snapshot( &$params ) {

global $sess, $VM_LANG, $mosConfig_live_site, $ps_product, $mainframe;

$db = new ps_DB();
require_once(CLASSPATH . 'htmlTools.class.php' );
$document =& JFactory::getDocument();
$document->addStyleSheet( VM_THEMEURL.'theme.css' );
$document->addScript( VM_THEMEURL.'theme.js' );
$document->addScriptDeclaration( 'var cart_title = "'.$VM_LANG->_('PHPSHOP_CART_TITLE').'";var ok_lbl="'.$VM_LANG->_('CMN_CONTINUE').'";var cancel_lbl="'.$VM_LANG->_('CMN_CANCEL').'";var notice_lbl="'.$VM_LANG->_('PEAR_LOG_NOTICE').'";var live_site="'.$mosConfig_live_site.'";' );
$document->addScript( $mosConfig_live_site .'/components/'. VM_COMPONENT_NAME .'/js/mootools/mooPrompt.js' );
$document->addStyleSheet( $mosConfig_live_site .'/components/'. VM_COMPONENT_NAME .'/js/mootools/mooPrompt.css' );

$Itemid = $sess->getShopItemid();
require_once(CLASSPATH . 'ps_product_attribute.php' );
$ps_product_attribute = new ps_product_attribute;
require_once(CLASSPATH . 'ps_product_type.php' );
$ps_product_type = new ps_product_type;

$tpl = vmTemplate::getInstance();
//vmCommonHTML::loadMooTools();

$html = "" ;

$q = "SELECT DISTINCT product_name,product_id,product_parent_id,product_thumb_image,product_s_desc
FROM #__{vm}_product
WHERE product_id IN ({$params['id']})" ;
$db->query( $q ) ;

    $ordering=explode(",",$params['id']);
    $db->recordx = array();
    foreach($ordering as $key1 => $value1) {
        foreach ($db->record as $key2 => $value2) {
            $a = "'" . $value2->product_id . "'";
            if ($a == $value1) {
                $db->recordx[] = $value2;
            }
        }
    }
    foreach($db->record as $key => $value) {
        $db->record[$key] = $db->recordx[$key];
    }

$product_count = $db->num_rows() ;
if( $product_count > 0 ) {
$html .= "<table class=\"productsnap\" width=\"{$params['width']}\" border=\"{$params['border']}\" style=\"{$params['style']}\" " ;
$html .= ! empty( $params['align'] )? "align=\"{$params['align']}\">" : ">" ;
$html .= "\n" ;

// set up how the rows and columns are displayed
if( 'v' == $params['displayeach'] ) {
$row_sep_top = "<tr>\n" ;
$row_sep_btm = "</tr>\n" ;
} else {
$row_sep_top = "" ;
$row_sep_btm = "" ;
}

if( 'h' == $params['displaylist'] ) {
$start = "<tr>\n" ;
$end = "</tr>\n" ;
} else {
$start = "" ;
$end = "" ;
}

if( 'h' == $params['displaylist'] && 'v' == $params['displayeach'] ) {
$prod_top = "<td valign=\"top\"><table>\n" ;
$prod_btm = "</table></td>\n" ;
} else if( $params['displaylist'] == $params['displayeach'] ) {
$prod_top = "" ;
$prod_btm = "" ;
} else {
$prod_top = "<tr>\n" ;
$prod_btm = "</tr>\n" ;
}
/*
eg of display
list h, each h
-- prod_sep_top "" -- prod_sep_btm "" -- start = "<tr>" -- end = "</tr>" -- row_sep_top = "<td>" -- row_sep_btm = "</td>"
<table><tr><td>name</td><td>image</td><td>name</td><td>image</td></tr></table>
list h, each v
-- prod_sep_top "<td><table>" -- prod_sep_btm "</table></td>" -- start = "<tr>" -- end = "</tr>" -- row_sep_top = "<tr><td>" -- row_sep_btm = "</td></tr>"
<table><tr><td><table><tr><td>name</td></tr><tr><td>image</td></tr></table></td><td><table><tr><td>name</td></tr><tr><td>image</td></tr></table></td></tr></table>
list v, each h
-- prod_sep_top "<tr>" -- prod_sep_btm "</tr>" -- start = "" -- end = "" -- row_sep_top = "<td>" -- row_sep_btm = "</td>"
<table><tr><td>name</td><td>image</td></tr><tr><td>name</td><td>image</td></tr></table>
list v, each v
-- prod_sep_top "" -- prod_sep_btm "" -- start = "" -- end = "" -- row_sep_top = "<tr><td>" -- row_sep_btm = "</td></tr>"
<table><tr><td>name</td></tr><tr><td>image</td></tr><tr><td>name</td></tr><tr><td>image</td></tr></table>
*/
$i = 0 ;
$html .= $start ;
while( $db->next_record() ) {
    $html .= "<tr>" ;
            $html .= "<td colspan=\"2\">&nbsp;</td>" ;
            $html .= "</tr>" ;
$html .= $prod_top ;
if( 'y' == $params['showimage'] ) {
$html .= $row_sep_top ;
$url = "index.php?page=" . $ps_product->get_flypage( $db->f( "product_id" ) ) ;
if( $db->f( "product_parent_id" ) ) {
$url = "index.php?page=shop.product_details&amp;flypage=" . $ps_product->get_flypage( $db->f( "product_parent_id" ) ) ;
$url .= "&amp;product_id=" . $db->f( "product_parent_id" ) ;
} else {
$url = "index.php?page=shop.product_details&amp;flypage=" . $ps_product->get_flypage( $db->f( "product_id" ) ) ;
$url .= "&amp;product_id=" . $db->f( "product_id" ) ;
}
$html .= "<td rowspan=\"4\" class=\"image\" align=\"center\" valign=\"top\"><a href=\"" . $sess->url( URL . $url ). "\">" ;
$html .= "<img alt=\"" . $db->f( "product_name" ). "\" hspace=\"7\" src=\"" . IMAGEURL . "/product/" . $db->f( "product_thumb_image" ). "\" width=\"124\" border=\"0\" />" ;
$html .= "</a></td>\n" ;
}
if( 'y' == $params['showname'] ) {
$html .= "<td style=\"font-size: 16px; font-weight: bold;\" class=\"product_name\"><a href=\"" . $sess->url( URL . $url ). "\">" . $db->f( "product_name" ). "</a></td>\n" ;
$html .= $row_sep_btm ;
}
if( 'y' == $params['showdesc'] ) {
$html .= $row_sep_top ;
$html .= "<td class=\"desc\"><br>" . $db->f( "product_s_desc" ). "\n" ;
$html .= "<br><a href=\"" . $sess->url( URL . $url ). "\">[Подробнее...]</a></td>\n" ;
$html .= $row_sep_btm ;
}
if( 'y' == $params['showprice'] ) {
$html .= $row_sep_top ;
//$html .= "<td class=\"price\">".$PHPSHOP_LANG->_PHPSHOP_CART_PRICE .": ". number_format($price["product_price"],2). " " . $price["product_currency"]."</td>\n";
$html .= "<td class=\"price\"><br><strong>Цена за шт. (шт.):</strong>" . str_replace( "$", "\\$", $ps_product->show_price( $db->f( "product_id" ) ) ). "</td>\n" ;
$html .= $row_sep_btm ;
}
if( 'y' == $params['showaddtocart'] ) {
if( @$params['quantity'][$i] > 1 ) {
$qty = $params['quantity'][$i] ;
} else {
$qty = 1 ;
}
$html .= $row_sep_top ;
$html .= "<td class=\"addtocart\">" ;
// $url = "index.php?page=shop.cart&func=cartAdd&quantity=$qty&product_id=" . $db->f( "product_id" ) ;
// $html .= "<br><a href=\"" . $sess->url( URL . $url ). "\"> " . $VM_LANG->_('PHPSHOP_CART_ADD_TO') ;
// $html .= "</a>" ;
// if( @$params['quantity'][$i] > 1 ) {
// $html .= " ($qty шт.)<br>" ;
// }
// $html .= "<br />\n</td>" ;

$tpl->set( "product_id", $db->f( "product_id" ) );
if( $db->f("product_unit") && VM_PRICE_SHOW_PACKAGING_PRICELABEL) {
$product_price_lbl = "<strong>". $VM_LANG->_('PHPSHOP_CART_PRICE_PER_UNIT').' ('.$db->f("product_unit")."):</strong>";
}
else {
$product_price_lbl = "<strong>". $VM_LANG->_('PHPSHOP_CART_PRICE'). ": </strong>";
}
$tpl->set( 'product_in_stock', $db->f('product_in_stock') );
$tpl->set( 'i', $qty ) ;
$tpl->set( "product_id", $db->f( "product_id" ) ) ;
//$tpl->set( "product_parent_id",(int)$db->f("product_parent_id"));
//$tpl->set( "product_price", $ps_product->show_price( $db->f( "product_id" ) ) );

$tpl->set( 'ps_product_attribute', $ps_product_attribute );
$html .= $tpl->fetch('browse/includes/addtocart_form2.tpl.php' ) ;
//$html .= "</td>" ;


//
$html .= $row_sep_btm ;
}
$html .= $prod_btm ;
$html .= "<tr>" ;
            $html .= "<td colspan=\"2\">&nbsp;<hr style=\"clear: both; border-width: 1px medium medium; border-style: dotted none none; border-color: rgb(0, 0, 0) -moz-use-text-color -moz-use-text-color; height: 1px;\"></td>" ;
            $html .= "</tr>" ;
$i ++ ;
}
$html .= $end ;
$html .= "</table>" ;
return ($html) ;
} else {
echo 'Product not found' ;
return ("") ;
}
}
?>
*

lazyleto

  • Осваиваюсь на форуме
  • 13
  • 6 / 0
Стандартный плагин для добавления товаров в статьи vmproductsnapshots_1.1.4.j15.zip не совсем устраивал.
beagler модифицировал плагин:

Показывает все свойства и аттрибуты товара, добавлен весь функционал выбора количества и добавления в корзину.

Установка:
1. Разархивируйте.
2. Установите и опубликуйте плагин.
3. Файл addtocart_form2.tpl.php положить в \components\com_virtuemart\themes\default\templates\browse\includes

Пример использования в тексте статьи:
{product_snapshot:id=1|2|3|4|5|6,showname=y,showprice=y,showaddtocart=y,displayeach=v,displaylist=v,width=90%,border=0,style=color:black;,align=left}

Покажет в статье товары с id 1,2,3,4,5,6

После изменения вида отображения товара (картинка слева, справа сверху вниз — всё остальное), товар в статье выглядит так:



В тексте статьи пишу без дополнительных параметров:
{product_snapshot:id=1|2|3|4|5|6}

Размер превьюшки у меня 124. Если нужен другой размер, то то в файле vmproductsnapshots.php найдите код и измените 124 на нужный размер:

Код
$html .= "<td rowspan=\"4\" class=\"image\" align=\"center\" valign=\"top\"><a href=\"" . $sess->url( URL . $url ). "\">" ;
$html .= "<img alt=\"" . $db->f( "product_name" ). "\" hspace=\"7\" src=\"" . IMAGEURL . "/product/" . $db->f( "product_thumb_image" ). "\" width=\"124\" border=\"0\" />" ;
$html .= "</a></td>\n" ;



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

korkunov

  • Захожу иногда
  • 127
  • 1 / 0
Замечания:
Первое:
Цитата из ридми:
Установка:
1. Установите и опубликуйте плагин.
2. Файл addtocart_form2.tpl.php положить в \components\com_virtuemart\themes\default\templates\browse\includes
                                                                                                                 ^^^^^ не все используют default, т.е. туда, что указано в VM-Настройки-Сайт-Вид-Выберите шаблон для магазина

Второе:
При клике из статьи на товар получаю:
Fatal error: Call to a member function getUserStateFromRequest() on a non-object in Z:\home\localhost\www\j18\components\com_virtuemart\virtuemart.php on line 31

Касательно ошибки - просветите где грабли !
*

newnata

  • Осваиваюсь на форуме
  • 20
  • 1 / 0
У меня та же проблема с ошибкой, что и предыдущего автора. Хотя плагин я не устанавливала. Подскажите, с чем это может быть связано. Или что можно предпринять в таком случае. Весь интернет облазила ничего найти не смогла. Уже второй день мучаюсь.
*

korkunov

  • Захожу иногда
  • 127
  • 1 / 0
ребят, обратите внимание на дату моего поста - год назад и версию vm
в последних версиях не тестил.
up
Кто-нибудь подправьте чтобы в 1.1.5 работал, Плиз!
*

richman

  • Захожу иногда
  • 50
  • 1 / 0
Подскажите, как сделать так, чтобы в данном плагине при нажатии на кнопку "Купить" сразу происходил переход к форме регистрации, минуя страницу корзины. Бывают случаи, когда страница корзины не нужна, то есть нет необходимости класть несколько товаров в одну корзину. Я так думаю, что достаточно заменить на кнопке "Купить" стандартную ссылку, ведущую в корзину, на ссылку, ведущую на страницу регистрации. В стандартном случае эта ссылка показывается в корзине и называется "Оформить заказ". Но что-то ссылки оказались не простыми и пока не могу разобраться, что чем заменять.
*

plk500

  • Новичок
  • 1
  • 0 / 0
Кхм... если использовать Ваш плагин - то, при таких настройках магазина, когда не показывается поле ввода кол-ва товара, т.е. в корзину должен записаться 1 товар - при нажатии на кнопку купить - вылазиет ошибка:ЗЫ: и больше 1го раза у мну в корзину один и тот же товар не добавляется. Пишет что кол -во товара обновлено, но на самом деле все не так...
Проблему решил так. Файл addtocart_form2.tpl.php из архива в папку components\com_virtuemart\themes\default\templates\browse\includes
НЕ ПЕРЕМЕЩАЛ. Вместо этого переименовал родной файл в этой папке, то есть addtocart_form.tpl.php переименовал в addtocart_form2.tpl.php. Как ни странно, все заработало.
P.S. Должен оговориться, что в настройках магазина у меня прописан другой шаблон, не default.
« Последнее редактирование: 07.06.2012, 11:11:04 от plk500 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Эффект добавления в корзину

Автор Sanyo

Ответов: 114
Просмотров: 41664
Последний ответ 08.11.2014, 22:09:13
от site-logic
Вывод товара из дочерних категорий в родительскую

Автор B0nG

Ответов: 0
Просмотров: 3060
Последний ответ 03.08.2014, 15:13:57
от B0nG
Вывод категории и только некоторых подкатегорий

Автор ИринаМ

Ответов: 8
Просмотров: 2810
Последний ответ 30.04.2014, 11:20:17
от ИринаМ
Свое поле ввода количества для свойств товара

Автор Batyabest

Ответов: 5
Просмотров: 1812
Последний ответ 12.12.2013, 17:28:41
от Batyabest
Вывод картинки во flypage при определенной стоимости - Как?

Автор lexrider

Ответов: 2
Просмотров: 1774
Последний ответ 20.11.2013, 12:58:21
от lexrider