VirtueMart - страница производителя в Joomla
VirtueMart показывает собственную страницу о производителе товара. Это неудобно по целому ряду причин:
- открывается страница не в полное окно, без дизайна сайта, бедно выглядящая и вообще, судя по всему задумывалась как весьма вспомогательная
- с этой страницей невозможно работать как с любым другим материалом (контентом) Joomla
- невозможно создать раздел “производители”, чтоб материал одновременно присутствовал в VirtueMart и Joomla.
Если с первым бороться проще всего, то остальные пункты требуют серьезного вмешательства. Поэтому убиваем нескольких зайцев сразу: производителей ведем как обычный контент, и делаем так, чтоб по ссылке открывался именно он, а не то, что в VirtueMart. Вопрос дизайна решается автоматически - шаблоном сайта.
(Крайний раз редактировалось 12/12/2006)
Создание разделов и категорий описывать не буду, суть в том, что в Joomla есть раздел, например, “производители”, в нем есть материал, с заголовком, в точности соответствующим названию этого самого производителя. По названию и будем связывать. (Есть еще один вариант, но об этом позже)
В VirtueMart тоже создаем этого производителя, но достаточно заполнить одно-единственное его поле - название, опять-таки в точности как указано выше.
Идем в /administrator/components/com_virtuemart/html/shop.product_details.php
Примерно со строки 172 (у меня) приводим к виду:
/** LINK TO MANUFACTURER POP-UP **/
$manufacturer_name = $ps_product->get_mf_name($product_id);
$text = '('.$manufacturer_name.')';
$manufacturer_link = "";
$db = new ps_DB;
$q = “select id from jos_content where title=’”.$manufacturer_name .”‘”;
$db->query($q);
$db->next_record();
$content_id = $db->f(”id”);
if ($content_id){
$manufacturer_link = “<a
href=”/index.php?option=com_content&task=view&id=$content_id&Itemid=id_катег”
target=”_blank” title=”$text”>$text</a>”; //это все в одну строку
}
id_катег - id той самой категории “производители”, которую вы создали и повесили на какой-либо пункт меню. Проще всего взять, заглянув на страницу материала. Например, у меня URL - /index.php?option=com_content&task=view&id=123&Itemid=43, вот 43 и есть нужное нам значение.
Последний if - если статья о производителе по каким-то причинам отсутствует, то не показывать это все вообще.
Если у Вас в шаблоне от этого что-то существенно зависит (например, рамку Вы вокруг него обводите), то может получиться. что эта самая рамка останется, только будет пустой. Для того, чтоб избежать этого, придется поместить весь нужный кусок кода в $manufacturer_link, т.к. browse_Х.php на самом деле только шаблон, а не php файл, то есть он не анализируется интерпретатором php, в него невозможно вставить код, по крайней мере в моей версии. Если знаете решение - скажите :)
July 5th, 2006 at 6:48
Не подскажешь как установить в VirtueMart плату за доставку - Shipping Fee? У меня при заказе выползает 2 $ - откуда не пойму. Используется стандартный модуль доставки. Обязательно ли создавать доставщика (Shipper) и Shipping Rate?
(Включена подписка на комментарии)July 5th, 2006 at 6:58
Если я правильно понимаю, доставочная служба обязательна, т.к. по умолчанию их там десяток, и предполагается, что покупатель будет выбирать какую-то из них.
Кроме того, чтоб рассчитать тариф, нужно знать откуда, куда, сколько весит, итд. Таблица всего вышеперечисленного и составляет в VirtueMart “Shipping Rate”(Тариф доставки).
Про 2$ - посмотри тарифы, посмотри какая служба доставки выбрана - где-то же эта цифра стоит :)
Зы: страна “откуда” скорее всего берется из Store|Edit Store|Store Information
ЗЗЫ: Для меня доставка неважна, поэтому глубоко не колупался.
August 3rd, 2006 at 13:54
Очень полезная и интересная штука, но почему то не работает :(
(коммент удален, т.к. проблема была в синтаксической ошибке php)
(Включена подписка на комментарии)April 15th, 2009 at 10:53
$manufacturer_link = “<a>$text</a>”;
А как сделать, чтобы не Java-окно, а обычная страница открывалась?
April 16th, 2009 at 2:21
2 valetxxx: во-первых, в том куске, который вы скопировали, была ошибка, и Di_Mon об этом писал.
во-вторых, прошу не путать Java и Java-script - из-за этого я комметарий чуть не бросил в спам, т.к. Java в Joomlе не используется.
в-третьих, Java-script окно появляется в оригинальной версии файла, в моем варианте это сделано через target=”_blank”
в четвертых, <a>$text</a> работать не будет.
$manufacturer_link = “<a href=”/index.php?option=com_content&task=view&id=$content_id&Itemid=id_катег” target=”_blank” title=”$text”>$text</a>”; //это все в одну строкуMay 29th, 2009 at 5:46
Очень хочется сделать как описано в статье, но при внесении изменений выдает ошибки. Может подскажите, что поменять.
Вот код:
// LINK TO MANUFACTURER POP-UP
$manufacturer_id = $ps_product->get_manufacturer_id($product_id);
$manufacturer_name = $ps_product->get_mf_name($product_id);
$manufacturer_link = “”;
if( $manufacturer_id && !empty($manufacturer_name) ) {
$link = “$mosConfig_live_site/index2.php?page=shop.manufacturer_page&manufacturer_id=$manufacturer_id&output=lite&option=com_virtuemart&Itemid=”.$Itemid;
$text = ‘( ‘.$manufacturer_name.’ )’;
$manufacturer_link .= vmPopupLink( $link, $text );
// Avoid JavaScript on PDF Output
if( @$_REQUEST[’output’] == “pdf” )
$manufacturer_link = “<a>$text</a>”;
}
June 2nd, 2009 at 4:25
Усли просто заменяю исходный на тот что в статье, то при попытки открыть товар пишет
syntax error, unexpected T_STRING in Z:\home\shopper_frenzy.ru\www\administrator\components\com_virtuemart\html\shop.product_details.php on line 260
June 2nd, 2009 at 10:50
не то. инструкция где? на моей странице я такого кода не припомню.
June 2nd, 2009 at 17:12
Вопрос по странице производителя
Не очень хорошо разбираюсь в php. Поясни пожалуйста подробнее:
- Идем в /administrator/components/com_virtuemart/html/shop.product_details.php
- Примерно со строки 172 (у меня) приводим к виду: - куда именно и после чего вставлять или если заменять, то какой текст?
June 3rd, 2009 at 3:08
2alex: в оригинале есть строчка
LINK TO MANUFACTURER POP-UP
вот от нее и надо плясать. Этот код писался для версии 1.0.5, и если у Вас другая версия (а она все-таки должна быть новее - почти 3 года прошло) то без понимания того, что происходит в приведенном куске, вам не обойтись. Сорри.
Я сам в эту часть новых версий достаточно давно не заглядывал, чтоб с разбегу сказать и точный номер строки, и все остальное.
Сейчас поправлю пост, и выделю жирным добавленые строчки, насколько помню :)
November 19th, 2009 at 19:42
5 часов жизни угрохал, но сделал для j1.5.14 и последнего virtuemart, 1.1.4 вроде .
Для страницы категории:
$manufacturer_link = “”;
$manufacturer_id = $ps_product->get_manufacturer_id($db_browse->f(’product_id’));
$manufacturer_name = $ps_product->get_mf_name($db_browse->f(’product_id’));
$db = new ps_DB;
$q = “select id from jos_content where title=’$manufacturer_name’”;
$db->query($q);
$db->next_record();
$content_id = $db->f(’id’);
if( $manufacturer_id && !empty($manufacturer_name) ) {
$link = JRoute::_(”$mosConfig_live_site/index.php?option=com_content&view=article&id=$content_id&Itemid=152″);
$text = $manufacturer_name;
$manufacturer_link .= “<a>$text&la>”;
}
P.S. Путник, сил моих больше нет, я сам не программист (жизнь заставила), помогите с той частью где вставлять ссылку на все товары производителя. А то метод проб и ошибок очень долог, особенно когда смутно догадываешься о том, что делаешь
(Включена подписка на комментарии)P.P.S извиняюсь, если не первый раз отправляю, просто вроде не прошло с первого.
November 26th, 2009 at 18:04
2Денис: к сожалению, не подскажу. Я сейчас несколько отошел от веб-разработки, поэтому под рукой нет рабочей последней джумлы с ВМ, а ветка 1.0.* в этом вопросе слабый помощник.