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

fsv

  • Moderator
  • 2765
  • 402 / 2
Добавление теме VirtueMart функции вставки статьи Joomla!

Иногда в интернет-магазин на базе VirtueMart необходимо вставить статью (материал) Joomla!. Это может быть статья, посвященная определенной категории товаров или определенному производителю в карточке конкретного товара.

Для начала добавим к теме VirtueMart функцию вставки статьи Joomla! :
/components/com_virtuemart/themes/ВашаТема/theme.php
в конце файла (строка примерно 148, после " // Your code here please...", но перед "}"
вставляем
Код
function insertJoomlaArticle( $id ) {
$db = new ps_DB;
$q = "SELECT CONCAT(`introtext`,' ',`fulltext`) FROM #__content WHERE id='$id'";
$db->setQuery($q);;
$text = $db->loadResult();
return $text;
}

Все, необходимая функция задана.


Если необходимо вывести определенную статью Joomla! в определенной категории:
1) определяем, какой используется шаблон категории :  
Настройки VM – вкладка Сайт – Вид – Настройки шаблона для магазина - Product List Style
- если «Product Listing with a table (default)», то используется шаблон  browse_layouttable.tpl.php
- если «Flat Product List (fixed to 1 product per row, using a table)», то используется шаблон  browse_listtable.tpl.php
- если «Product List (no table, div-based)», то используется шаблон browse_notables.tpl.php
2) В папке /components/com_virtuemart/themes/ВашаТема/templates/browse/includes/
открываете используемый шаблон. Пусть это будет browse_notables.tpl.php.
перед строками примерно 61,62
Код
<?php 
echo $browsepage_footer;
вставляем
Код
<?php
if ($category_id == 10) {
echo $this->insertJoomlaArticle(999);
}
?>
где 10 – id категории товаров VirtueMart, в которую необходимо вывести материал Joomla! , а 999 – id этого материала Joomla! (меняем на свои значения)

Если необходимо вывести для разных категорий товаров разные, соответствующие им статьи, используем if-else .


Если необходимо вывести в карточке товара статью о его производителе:
Вставляем в нужное место используемого flypage
Код
<?php
 if ($manufacturer_id == 1) {
 echo $this->insertJoomlaArticle(15);
 }
else {
 if ($manufacturer_id == 2) {
echo $this->insertJoomlaArticle(27);
}
}
и так далее…
?>
где 1,2 – id производителей, а 15,27 – id соответствующим им статей (меняем на свои значения)

Конечно, этот вариант очень громоздкий и неудобный, если производителей много и (или) они часто добавляются в магазин. Как вариант, можно в таблицу  jos_vm_manufacturer добавить поле content_id – это id соответствующей этому производителю статьи - и вывести его для заполнения в админку VM "Информация о производителе". А в коде flypage прописать запрос id статьи в зависимости от id производителя, и далее - вставку выбранной статьи в карточку товара.

Сделать это можно примерно так:

Спойлер
[свернуть]


Если необходимо вывести статью о производителе в категории производителя:
…да просто пишем ее в админке VM в "Информации о производителе".  ))
Если при этом необходимо, чтобы описание производителя было не в хедере категории производителя, а отображалось после списка товаров этого производителя, смотрим соответствующую тему форума


« Последнее редактирование: 23.11.2011, 12:28:44 от fsv »
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Yliana

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Вариант "Если необходимо вывести в карточке товара статью о его производителе" мне нравится, но добавить код не получается, статья все равно не выводится, только ломается шаблон. В коде точно нет ошибки?
*

Yliana

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Вот мой flypage.tpl
Куда надо добавить?
Код
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
mm_showMyFileName(__FILE__);
 ?>
 
<div id="product-details-page">
<div class="details-catbar"><span class="catbar-text"><h3><?php echo $product_name ?></h3></span></div>
<?php echo $buttons_header // The PDF, Email and Print buttons ?>
<?php
if( $this->get_cfg( 'showPathway' )) {
echo "<div class=\"pathway\">$navigation_pathway</div>";
}
?>

<?php  if( $this->get_cfg('showManufacturerLink') )?>
<div class="details-padding">
<div class="product-image">
<div class="product-image-first"><?php echo $product_image ?></div>
<div class="product-image-add"><?php echo $this->vmlistAdditionalImages( $product_id, $images )?></div>
</div>
<div class="details-right-column">
 
<?php if( $this->get_cfg('showManufacturerLink')) { ?><?php } ?>
      <!--<div class="product-price-label">
<?php echo $product_price_lbl ?>
</div>-->
      <div class="product-price">
<?php echo $product_price ?>
</div>
<div class="product-description">
<?php echo $product_description ?>
</div>
<div class="product-packaging">
<?php echo $product_packaging ?>
</div>
<div class="show-availability">
<?php
  if( $this->get_cfg( 'showAvailability' )) {
  echo $product_availability;
  }
  ?>
</div>

  <span style="font-style: italic;">
<?php echo $file_list ?>
</span>
<div class="product-type">
  <?php echo $product_type ?>
</div>

<?php if( $this->get_cfg('showVendorLink')) { ?>
<div class="vendor-link">
  <?php echo $vendor_link ?>
</div>
<?php  } ?>
<div class="add-cart-inner">
  <?php echo $addtocart ?>

</div>
</div>
<div class="clr"></div>
<div class="details-bottom-section">
<div class="product-reviews">
<div class="product-reviews-inner">
  <?php echo $product_reviews ?>
</div>
</div>
</div>
<div id="prod-navigation-bar">
<?php
if( $this->get_cfg( 'product_navigation', 1 )) {
if( !empty( $previous_product )) {
echo '<a class="previous_page" href="'.$previous_product_url.'">'.shopMakeHtmlSafe($previous_product

['product_name']).'</a>';
}
if( !empty( $next_product )) {
echo '<a class="next_page" href="'.$next_product_url.'">'.shopMakeHtmlSafe($next_product['product_name']).'</a>';
}
}
?>
</div>
<?php  if( $this->get_cfg('showManufacturerLink') )?>
</div>
<div class="recent-products-list">
<?php
if( !empty( $recent_products )) { ?>
<div class="vmRecent">
<?php echo $recent_products; ?>
</div>
<?php
}
if( !empty( $navigation_childlist )) { ?>
<?php echo $VM_LANG->_('PHPSHOP_MORE_CATEGORIES')?><br />
<?php echo $navigation_childlist ?><br style="clear:both"/>
<?php
} ?>
</div>
<div class="related-products">
  <?php echo $related_products ?>
</div>

« Последнее редактирование: 19.11.2011, 23:54:52 от Yliana »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Вариант "Если необходимо вывести в карточке товара статью о его производителе" мне нравится, но добавить код не получается, статья все равно не выводится, только ломается шаблон.

1) Шаблон ломается, но при этом статья выводится? - Все нормально, просто не туда "воткнули".

2) Вообще не выводится?
- Вы добавили функцию?
- Вы создали статью?
- Вы id статьи и id производителя правильно указали?

В коде точно нет ошибки?

Прежде чем написать, все у себя проверил, все работает.


Ваш flypage не смотрел, вставил в свой стандартный. У меня это примерно вместо стр.58
<td colspan="2"><br /><?php echo $addtocart ?></td>
вставил
<td colspan="2"><br /><?php echo $addtocart ?>
<br /><br /><br /><?php
 if ($manufacturer_id == 1) {
 echo $this->insertJoomlaArticle(1);
 }
 ?></td>

только замените id на свои.

=> Статья вывелась под формой "Добавить в корзину".

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Yliana

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Шаблон ломается, статья не выводится
все вставила
Наверно с шаблоном проблема, т.к. у меня много чего не хочет выводиться, например на странице производителя информация о нем выводиться никак не хочет.
Короче, шаблон буду копать
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Ладно...
Заменил свой flypage вашим. Все работает.
Если статья нужна после формы "add-to-cart", то после ваших строк 55-59
Код
<div class="add-cart-inner">
              <?php echo $addtocart ?>
         
      </div>
   </div>
вставьте
Код
<br /><br /><br />
   <?php
 if ($manufacturer_id == 1) {
 echo $this->insertJoomlaArticle(15);
 }
 ?>
, заменив "1" и "15" на свои значения.

Проверил в Опере, Лисе, IE9. Все на месте.

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Yliana

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Да, я тоже заменила свой шаблон стандартным, ситуация та же - шаблон слетает, статья не публикуется. Видимо ошибка глубже, в каких-то других настройках
*

Yliana

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
Первый шаг не сделала: 1) добавим к теме VirtueMart функцию вставки статьи Joomla!
Когда сделала, все заработало. Ура!
*

Yliana

  • Осваиваюсь на форуме
  • 30
  • 1 / 0
А как сделать, чтобы заголовок статьи тоже выводился?
*

fsv

  • Moderator
  • 2765
  • 402 / 2
А как сделать, чтобы заголовок статьи тоже выводился?

Код
function insertJoomlaArticle( $id ) {
$db = new ps_DB;
$q = "SELECT CONCAT(`title`,' ',`introtext`,' ',`fulltext`) FROM #__content WHERE id='$id'";
$db->setQuery($q);;
$text = $db->loadResult();
return $text;
}

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

fsv

  • Moderator
  • 2765
  • 402 / 2
В первом посте дописал (под спойлером) "Добавление в административной панели VirtueMart (меню "Производители") поля для ввода id статьи Joomla! об этом производителе"

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Letos

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Пытаюсь вставить, как написано выше статью в категорию товаров. Выходят кракозябры след. ошибка:
Fatal error: Call to undefined method vmTheme::insertJoomlaArticle() in components/com_virtuemart/themes/ja-zeolite/templates/browse/includes/browse_layouttable.tpl.php on line 52
*

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Letos, а вы 2-й код куда вставили, как там написано в browse_notables.tpl.php или в browse_layouttable.tpl.php?
приведите кусочек кода из шаблона, возможно вы допустили ошибку в синтаксисе
« Последнее редактирование: 12.12.2011, 20:26:41 от ELLE »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Пытаюсь вставить, как написано выше статью в категорию товаров. Выходят кракозябры след. ошибка:
Fatal error: Call to undefined method vmTheme::insertJoomlaArticle() in components/com_virtuemart/themes/ja-zeolite/templates/browse/includes/browse_layouttable.tpl.php on line 52

Все же в ошибке указано.
Вы не задали функцию insertJoomlaArticle.
Или задали, но не в своей теме "ja-zeolite".

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Taatshi

  • Глобальный модератор
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Народ, объясните подробнее - не секу - нафиг надо? В товаре - вставляем в описание, в категории - в описание категории по дефолту. Что я проглядела?
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Народ, объясните подробнее - не секу - нафиг надо? В товаре - вставляем в описание, в категории - в описание категории по дефолту. Что я проглядела?

Если этого хватает, ну и хорошо. А кому то, исходя из специфики магазина, может быть мало одного информационного блока. А так можно "навтыкать" информации сколько хочешь, и где попало.

Также практические примеры:

1) В карточке товара кроме описания товара надо вывести статью о производителе этого товара. Товаров и ИХ ОПИСАНИЙ - 2000, производителей 20, шаблон карточки 1.

2) В карточке товара тематическую статью, не относящуюся к этому артикулу, не в позиции описания товара.

3) В подкатегорию товара вывести кроме описания подкатегории статью с какой-то информацией о родительской категории, не в позиции описания этой подкатегории.

4) Недавно отвечал на вопрос, как на главной магазина сделать "текст – картинки категорий – текст". Вот он, вариант.

5)
Спойлер
[свернуть]


« Последнее редактирование: 12.12.2011, 23:01:52 от fsv »
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Taatshi

  • Глобальный модератор
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
пункт 1 как сеошника меня напрягает. не айс.
пункт 3 можно проще
пункт 4 порадовал)

впрочем, может, кому и понравилось)) я не претендую на истину в последней...))
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

fsv

  • Moderator
  • 2765
  • 402 / 2
пункт 1 как сеошника меня напрягает. не айс.

Согласен. Но кому-то надо (см.выше).
К тому же это может быть и НЕ повторяющаяся информация, но не относящаяся к описанию именно этого товара. --> Дописал п.2, ваш комментарий "сместился" на 1 позицию вниз.

пункт 3 4 можно проще

Предложенное решение: в теме задать функцию (один раз и на всю жизнь), в нужное место shopIndex.tpl вставить
<?php echo $this->insertJoomlaArticle(999)?>

Как проще, чем 1 короткая строчка кода?

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Taatshi

  • Глобальный модератор
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Предложенное решение: в теме задать функцию (один раз и на всю жизнь), в нужное место shopIndex.tpl вставить
<?php echo $this->insertJoomlaArticle(999)?>

Как проще, чем 1 короткая строчка кода?

Вы предлагаете под вставку определенной статьи каждый раз лазать в код. А если у Вас категорий 40 - будет 40 раз код. На странице Каждой категории... что-то тут, мне кажется, Вы неинтересно задумали))

тогда уже позицию прописать и сделать кастом модуль в котором свитчами категории и статьи прописывать - все не лазать в код, а прямо из админки править..
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Вы предлагаете под вставку определенной статьи каждый раз лазать в код. А если у Вас категорий 40 - будет 40 раз код. На странице Каждой категории... что-то тут, мне кажется, Вы неинтересно задумали))
тогда уже позицию прописать и сделать кастом модуль в котором свитчами категории и статьи прописывать - все не лазать в код, а прямо из админки править..

Вы не внимательно прочли тему. Я предлагаю 1 раз вставить код. И в админке для товара (или категории) указывать id статьи.

Цитировать
А если у Вас категорий 40 - будет 40 раз код. На странице Каждой категории...
И где же вы 40 шаблонов категорий то напасетесь?

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

« Последнее редактирование: 13.12.2011, 00:22:55 от fsv »
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Taatshi

  • Глобальный модератор
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Вы не внимательно прочли тему. Я предлагаю 1 раз вставить код. И в админке для товара (или категории) указывать id статьи.

Ой, очень даже может быть))) устала под вечер - прошу прощения.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

Letos

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Спасибо, разобрался))Я не обратил внимания на самый первый абзац, думал это не касается добавления категории)
« Последнее редактирование: 13.12.2011, 18:46:51 от Letos »
*

Letos

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Возник новый вопрос. Сейчас статья добавляется сразу под картинками товаров и смещает под себя навигационную панель. ТО есть выходит так: товары,потом статья, потом пагинция. Если товаров больше чем на одну страницу то появляется неудобство, так как нужно сначала прокрутить статью и только потом будет видно панель страничек. Как поменять их местами?)
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Возник новый вопрос. Сейчас статья добавляется сразу под картинками товаров и смещает под себя навигационную панель. ТО есть выходит так: товары,потом статья, потом пагинция. Если товаров больше чем на одну страницу то появляется неудобство, так как нужно сначала прокрутить статью и только потом будет видно панель страничек. Как поменять их местами?)

вывод пагинации в категории - echo $browsepage_footer;

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Letos

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Спасибо, всё получилось)
*

Djamilastyle

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
  • От Всевышнего пришли и к Ему наше возвращение!
4) Недавно отвечал на вопрос, как на главной магазина сделать "текст – картинки категорий – текст". Вот он, вариант.

5)
Спойлер
[свернуть]
где отвечал? где вариант?? долго искала, не нашла.  Мне как раз нужно статью на главную разместить. после категорий. Я сделала это при помощи модуля, который вставила в статью, но он  не красиво выводит изображения. Хочу вернуться к главной virt.  но и статью в конце тоже хочу.


« Последнее редактирование: 19.01.2012, 02:03:41 от Djamilastyle »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
где отвечал? где вариант??

http://joomlaforum.ru/index.php/topic,192016.msg1011157.html#msg1011157

долго искала, не нашла. 

Заходите в профиль отвечающего, просмотр его сообщений. Дата примерно вам известна.

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Djamilastyle

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
  • От Всевышнего пришли и к Ему наше возвращение!
спасибо за помощь. Я тут "засучив рукава" взялась за претворение рекомендаций в жизнь, но на первом же шагу возникла проблема, которую сама решить не в силах.
при попытке вставить функцию для вывода статей выдал вот что

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/insaf/djamilastyle.com/www/components/com_virtuemart/themes/default/theme.php on line 148
*

fsv

  • Moderator
  • 2765
  • 402 / 2
при попытке вставить функцию для вывода статей выдал вот что
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/insaf/djamilastyle.com/www/components/com_virtuemart/themes/default/theme.php on line 148

Покажите ваш код со строки примерно 147
Код
// Your code here please...
и до конца файла.

А лучше внимательно сами проверьте, как скопипастили.

Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Djamilastyle

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
  • От Всевышнего пришли и к Ему наше возвращение!
я максимально внимательно все сделала еще раз, проблема та же, вот кусок

   // Your code here please...function insertJoomlaArticle( $id ) {
$db = new ps_DB;
$q = "SELECT CONCAT(`introtext`,' ',`fulltext`) FROM #__content WHERE id='$id'";
$db->setQuery($q);;
$text = $db->loadResult();
return $text;
}
}
?>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart не может создать мини-изображение из .jpeg-файла

Автор Nick IntegraLL

Ответов: 12
Просмотров: 6780
Последний ответ 03.04.2019, 03:28:34
от Roki37
Нужно вывести случайные товары на главную Joomla

Автор manowar

Ответов: 3
Просмотров: 4722
Последний ответ 13.12.2016, 12:41:12
от vitaliypoli
Как реализовать на VirtueMart такую карточку товара?

Автор AdmbVlad

Ответов: 0
Просмотров: 1409
Последний ответ 14.10.2015, 17:01:55
от AdmbVlad
[download] Модуль вывода товаров для VirtueMart (1.2.3 и 2.1)

Автор beliyadm

Ответов: 1448
Просмотров: 363039
Последний ответ 21.07.2015, 06:21:55
от Серегин
mod VirtueMart featureprod редактирование

Автор vsokol

Ответов: 1
Просмотров: 1476
Последний ответ 10.04.2015, 08:07:41
от vsokol