Неправильные title

  • 10 Ответов
  • 1488 Просмотров

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

*

youart

  • ***
  • 41
  • 3
Неправильные title
« : 14.01.2014, 17:06:06 »
Всем привет!

VirtueMart 2.0.22c

Есть модуль VirtueMart Производители, он немного модифицирован (точно не знаю что именно менялось) - при клике на производителя, открывается страница с описанием производителя и ниже идут все его товары.

Проблема с title - если переход был с главной страницы, title - "VirtueMart Category View + название производителя", если же перейти со страницы категории, то title - "Название категории с которой переходим + название производителя"

Подскажите, пожалуйста как это можно исправить, чтобы в title было только название производителя?

*

zomby6888

  • ******
  • 1484
  • 167
Re: Неправильные title
« Ответ #1 : 14.01.2014, 17:44:07 »
у меня за вывод страницы с производителями отвечает файл \components\com_virtuemart\views\manufacturer\tmpl\details.php
добавляете туда строчки:
Код: php
$doc =& JFactory::getDocument();
$doc->setTitle($this->manufacturer->mf_name);
Ну и конечно лучше переопределить его в шаблоне.
интернет-блог: http://websiteprog.ru

*

youart

  • ***
  • 41
  • 3
Re: Неправильные title
« Ответ #2 : 14.01.2014, 18:41:51 »
Спасибо, zomby6888! поставил этот код в файл components/com_virtuemart/views/category/tmpl/default.php и тайтлы на странице производителя заработали как надо, НО! теперь появилась проблема с тайтлами на странице категории, в исходном коде страницы тайтл пустой - <title></title> и в браузере отображается URL страницы)

Раскопал, как именно модифицировался модуль:

Задача: вывести описание производителя вместе с его товарами.

1. Водим переменные в фале components/com_virtuemart/views/category/view.html.php (примерно 182 строка)
После кода:

Код
$virtuemart_manufacturer_id = JRequest::getInt('virtuemart_manufacturer_id',0 );
Вставляем код:

Код
// get manufacturer models $model = VmModel::getModel('manufacturer'); if ($virtuemart_manufacturer_id !=0 ) { $manufacturer = $model->getManufacturer(); $model->addImages($manufacturer,1); $manufacturerImage = $manufacturer->images[0]->displayMediaThumb('class="manufacturer-image"',false); $this->assignRef('manufacturerImage', $manufacturerImage); $this->assignRef('manufacturer', $manufacturer); $pathway->addItem(strip_tags($manufacturer->mf_name)); }
2. Далее переадресуем ссылку в компоненте магазина - components/com_virtuemart/views/manufacturer/tmpl/default.php (ну или в меню, или в модуле, или от куда нам надо получить ссылку на страницу с товарами производителя):
Находим код:

Код
index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=
Меняем на:

Код
index.php?option=com_virtuemart&view=category&virtuemart_manufacturer_id=
т.е. заменяем ссылку со страницы описания производителя, на страницу с товарами производителя.

3. Вставляем практически в любое место переменные отображения информации о производителе (описание, url, изображение) в фаил - components/com_virtuemart/views/category/tmpl/default.php
Я вставил в конце страници.
Переменные производителя выглядят следующим образом и находятся в файле - /components/com_virtuemart/views/manufacturer/tmpl/details.php :
<?php echo $this->manufacturer->mf_desc ?> - описание
<?php echo $this->manufacturerImage; ?> - изображение
ну и т.д




*

zomby6888

  • ******
  • 1484
  • 167
Re: Неправильные title
« Ответ #3 : 14.01.2014, 19:55:18 »
Не самый лучший способ выводить данные о производителе во вьюхе категории. Особенно здесь:
Цитировать
Водим переменные в фале components/com_virtuemart/views/category/view.html.php (примерно 182 строка)
Назывется прощайте обновления виртуемарт)
Фактически вы из категории попадаете не на страницу с производителем а на страницу с категорией. Значит в вашем случае и тайтл надо прописывать для категории. Но я так понимаю у вас в этом файле components/com_virtuemart/views/category/tmpl/default.php скорее всего идет проверка на get параметр  virtuemart_manufacturer_id или еще как то, в том месте вам  и нужно тайтл прописать, способом который я привел выше.
интернет-блог: http://websiteprog.ru

*

youart

  • ***
  • 41
  • 3
Re: Неправильные title
« Ответ #4 : 14.01.2014, 20:08:33 »
Не самый лучший способ выводить данные о производителе во вьюхе категории. Особенно здесь: Назывется прощайте обновления виртуемарт)
Фактически вы из категории попадаете не на страницу с производителем а на страницу с категорией. Значит в вашем случае и тайтл надо прописывать для категории. Но я так понимаю у вас в этом файле components/com_virtuemart/views/category/tmpl/default.php скорее всего идет проверка на get параметр  virtuemart_manufacturer_id или еще как то, в том месте вам  и нужно тайтл прописать, способом который я привел выше.

а в каком именно месте нужно поставить этот код? пробовал в начале страницы, не работает, а найти место где идет проверка опыта не хватает
Код
<?php
/**
 *
 * Show the products in a category
 *
 * @package    VirtueMart
 * @subpackage
 * @author RolandD
 * @author Max Milbers
 * @todo add pagination
 * @link http://www.virtuemart.net
 * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. 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.
 * @version $Id: default.php 6556 2012-10-17 18:15:30Z kkmediaproduction $
 */



//vmdebug('$this->category',$this->category);
//vmdebug ('$this->category ' . $this->category->category_name);
// Check to ensure this file is included in Joomla!
defined ('_JEXEC') or die('Restricted access');
JHTML::_ ('behavior.modal');
/* javascript for list Slide
  Only here for the order list
  can be changed by the template maker
*/
$js = "
jQuery(document).ready(function () {
jQuery('.orderlistcontainer').hover(
function() { jQuery(this).find('.orderlist').stop().show()},
function() { jQuery(this).find('.orderlist').stop().hide()}
)
});
";

$document = JFactory::getDocument ();
$document->addScriptDeclaration ($js);

/*$edit_link = '';
if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php');
if (Permissions::getInstance()->check("admin,storeadmin")) {
$edit_link = '<a href="'.JURI::root().'index.php?option=com_virtuemart&tmpl=component&view=category&task=edit&virtuemart_category_id='.$this->category->virtuemart_category_id.'">
'.JHTML::_('image', 'images/M_images/edit.png', JText::_('COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT'), array('width' => 16, 'height' => 16, 'border' => 0)).'</a>';
}

echo $edit_link; */
if (empty($this->keyword) and !empty($this->category)) {
?>
<div class="category_description">
<?php echo $this->category->category_description; ?>
</div>
<?php
}

/* Show child categories */

if (VmConfig::get ('showCategory', 1) and empty($this->keyword)) {
if (!empty($this->category->haschildren)) {

// Category and Columns Counter
$iCol = 1;
$iCategory = 1;

// Calculating Categories Per Row
$categories_per_row = VmConfig::get ('categories_per_row', 3);
$category_cellwidth = ' width' . floor (100 / $categories_per_row);

// Separator
$verticalseparator = " vertical-separator";
?>

<div class="category-view">

<?php // Start the Output
if (!empty($this->category->children)) {

foreach ($this->category->children as $category) {

// Show the horizontal seperator
if ($iCol == 1 && $iCategory > $categories_per_row) {
?>
<div class="horizontal-separator"></div>
<?php
}

// this is an indicator wether a row needs to be opened or not
if ($iCol == 1) {
?>
<div class="row">
<?php
}

// Show the vertical seperator
if ($iCategory == $categories_per_row or $iCategory % $categories_per_row == 0) {
$show_vertical_separator = ' ';
} else {
$show_vertical_separator = $verticalseparator;
}

// Category Link
$caturl = JRoute::_ ('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $category->virtuemart_category_id, FALSE);

// Show Category
?>
<div class="category floatleft<?php echo $category_cellwidth . $show_vertical_separator ?>">
<div class="spacer">
<h2>
<a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>">
<?php echo $category->category_name ?>
<br/>
<?php // if ($category->ids) {
echo $category->images[0]->displayMediaThumb ("", FALSE);
//} ?>
</a>
</h2>
</div>
</div>
<?php
$iCategory++;

// Do we need to close the current row now?
if ($iCol == $categories_per_row) {
?>
<div class="clear"></div>
</div>
<?php
$iCol = 1;
} else {
$iCol++;
}
}
}
// Do we need a final closing row tag?
if ($iCol != 1) {
?>
<div class="clear"></div>
</div>
<?php } ?>
</div>

<?php
}
}
?>
<div class="browse-view">
<?php
if (!empty($this->keyword)) {
?>
<h3><?php echo $this->keyword; ?></h3>
<?php
} ?>
<?php if ($this->search !== NULL) {
$category_id  = JRequest::getInt ('virtuemart_category_id', 0); ?>
<form action="<?php echo JRoute::_ ('index.php?option=com_virtuemart&view=category&limitstart=0', FALSE); ?>" method="get">

<!--BEGIN Search Box -->
<div class="virtuemart_search">
<?php echo $this->searchcustom ?>
<br/>
<?php echo $this->searchcustomvalues ?>
<input name="keyword" class="inputbox" type="text" size="20" value="<?php echo $this->keyword ?>"/>
<input type="submit" value="<?php echo JText::_ ('COM_VIRTUEMART_SEARCH')?>" class="button" onclick="this.form.keyword.focus();"/>
</div>
<input type="hidden" name="search" value="true"/>
<input type="hidden" name="view" value="category"/>
<input type="hidden" name="option" value="com_virtuemart"/>
<input type="hidden" name="virtuemart_category_id" value="<?php echo $category_id; ?>"/>

</form>
<!-- End Search Box -->
<?php } ?>

<?php // Show child categories
if (!empty($this->products)) {
?>
<div class="orderby-displaynumber">
<div class="width70 floatleft">
<?php echo $this->orderByList['orderby']; ?>
<?php echo $this->orderByList['manufacturer']; ?>
</div>
<div class="width30 floatright display-number"><?php echo $this->vmPagination->getResultsCounter ();?><br/><?php echo $this->vmPagination->getLimitBox ($this->category->limit_list_step); ?></div>
<div class="vm-pagination">
<?php echo $this->vmPagination->getPagesLinks (); ?>
<span style="float:right"><?php echo $this->vmPagination->getPagesCounter (); ?></span>
</div>

<div class="clear"></div>
</div> <!-- end of orderby-displaynumber -->

<h1><?php echo $this->category->category_name; ?></h1>
<div class="manufacturer-description">
<?php echo $this->manufacturer->mf_desc ?>
<div class="clear"></div>
</div>

<?php
// Category and Columns Counter
$iBrowseCol = 1;
$iBrowseProduct = 1;

// Calculating Products Per Row
$BrowseProducts_per_row = $this->perRow;
$Browsecellwidth = ' width' . floor (100 / $BrowseProducts_per_row);

// Separator
$verticalseparator = " vertical-separator";

$BrowseTotalProducts = count($this->products);

// Start the Output
foreach ($this->products as $product) {

// Show the horizontal seperator
if ($iBrowseCol == 1 && $iBrowseProduct > $BrowseProducts_per_row) {
?>
<div class="horizontal-separator"></div>
<?php
}

// this is an indicator wether a row needs to be opened or not
if ($iBrowseCol == 1) {
?>
<div class="row">
<?php
}

// Show the vertical seperator
if ($iBrowseProduct == $BrowseProducts_per_row or $iBrowseProduct % $BrowseProducts_per_row == 0) {
$show_vertical_separator = ' ';
} else {
$show_vertical_separator = $verticalseparator;
}

// Show Products
?>
<div class="product floatleft<?php echo $Browsecellwidth . $show_vertical_separator ?>">
<div class="spacer">
<div class="width30 floatleft center">
    <a title="<?php echo $product->product_name ?>" rel="vm-additional-images" href="<?php echo $product->link; ?>">
<?php
echo $product->images[0]->displayMediaThumb('class="browseProductImage"', false);
?>
</a>

<!-- The "Average Customer Rating" Part -->
<?php if ($this->showRating) { ?>
<span class="contentpagetitle"><?php echo JText::_ ('COM_VIRTUEMART_CUSTOMER_RATING')?>:</span>
<br/>
<?php
// $img_url = JURI::root().VmConfig::get('assets_general_path').'/reviews/'.$product->votes->rating.'.gif';
// echo JHTML::image($img_url, $product->votes->rating.' '.JText::_('COM_VIRTUEMART_REVIEW_STARS'));
// echo JText::_('COM_VIRTUEMART_TOTAL_VOTES').": ". $product->votes->allvotes;
?>
<?php } ?>
  <?php
if ( VmConfig::get ('display_stock', 1)) { ?>
<!-- if (!VmConfig::get('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none')){?> -->
<div class="paddingtop8">
<span class="vmicon vm2-<?php echo $product->stock->stock_level ?>" title="<?php echo $product->stock->stock_tip ?>"></span>
<span class="stock-level"><?php echo JText::_ ('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_TITLE_TIP')?></span>
</div>
<?php } ?>
</div>

<div class="width70 floatright">

<h2><?php echo JHTML::link ($product->link, $product->product_name); ?></h2>

<?php // Product Short Description
if (!empty($product->product_s_desc)) {
?>
<p class="product_s_desc">
<?php echo shopFunctionsF::limitStringByWord ($product->product_s_desc, 40, '...')?>
</p>
<?php } ?>

<div class="product-price marginbottom12" id="productPrice<?php echo $product->virtuemart_product_id ?>">
<?php
if ($this->show_prices == '1') {
if ($product->prices['salesPrice']<=0 and VmConfig::get ('askprice', 1) and  !$product->images[0]->file_is_downloadable) {
echo JText::_ ('COM_VIRTUEMART_PRODUCT_ASKPRICE');
}
//todo add config settings
if ($this->showBasePrice) {
echo $this->currency->createPriceDiv ('basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $product->prices);
echo $this->currency->createPriceDiv ('basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $product->prices);
}
echo $this->currency->createPriceDiv ('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $product->prices);
if (round($product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1])!= $product->prices['salesPrice']) {
echo '<div class="price-crossed" >' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices). "</div>";
}
if (round($product->prices['salesPriceWithDiscount'],$this->currency->_priceConfig['salesPrice'][1])!= $product->prices['salesPrice']) {
echo $this->currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices);
}
echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);
if ($product->prices['discountedPriceWithoutTax'] != $product->prices['priceWithoutTax']) {
echo $this->currency->createPriceDiv ('discountedPriceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices);
} else {
echo $this->currency->createPriceDiv ('priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $product->prices);
}
echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);
echo $this->currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices);
$unitPriceDescription = JText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE', $product->product_unit);
echo $this->currency->createPriceDiv ('unitPrice', $unitPriceDescription, $product->prices);
} ?>

</div>

<p>
<?php // Product Details Button
echo JHTML::link ($product->link, JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name, 'class' => 'product-details'));
?>
</p>

</div>
<div class="clear"></div>
</div>
<!-- end of spacer -->
</div> <!-- end of product -->
<?php

// Do we need to close the current row now?
if ($iBrowseCol == $BrowseProducts_per_row || $iBrowseProduct == $BrowseTotalProducts) {
?>
<div class="clear"></div>
   </div> <!-- end of row -->
<?php
$iBrowseCol = 1;
} else {
$iBrowseCol++;
}

$iBrowseProduct++;
} // end of foreach ( $this->products as $product )
// Do we need a final closing row tag?
if ($iBrowseCol != 1) {
?>
<div class="clear"></div>

<?php
}
?>

<div class="vm-pagination"><?php echo $this->vmPagination->getPagesLinks (); ?><span style="float:right"><?php echo $this->vmPagination->getPagesCounter (); ?></span></div>

<?php
} elseif ($this->search !== NULL) {
echo JText::_ ('COM_VIRTUEMART_NO_RESULT'). ($this->keyword ? ' : (' . $this->keyword . ')' : '');
}
?>


</div><!-- end browse-view -->

*

zomby6888

  • ******
  • 1484
  • 167
Re: Неправильные title
« Ответ #5 : 14.01.2014, 20:54:38 »
Вот эту строчку
Код: php
<?php if (isset($_GET['virtuemart_manufacturer_id']))
$document->setTitle($this->manufacturer->mf_name); ?>
сразу за
Код: php
<?php echo $this->manufacturer->mf_desc ?>
интернет-блог: http://websiteprog.ru

*

youart

  • ***
  • 41
  • 3
Re: Неправильные title
« Ответ #6 : 14.01.2014, 22:21:23 »
Вот эту строчку
Код: php
<?php if (isset($_GET['virtuemart_manufacturer_id']))
$document->setTitle($this->manufacturer->mf_name); ?>
сразу за
Код: php
<?php echo $this->manufacturer->mf_desc ?>

Спасибо! работает как надо!

*

Serg25

  • *
  • 2
  • 0
Re: Неправильные title
« Ответ #7 : 12.02.2014, 17:42:20 »
у меня за вывод страницы с производителями отвечает файл \components\com_virtuemart\views\manufacturer\tmpl\details.php
добавляете туда строчки:
Код: php
$doc =& JFactory::getDocument();
$doc->setTitle($this->manufacturer->mf_name);
Ну и конечно лучше переопределить его в шаблоне.
А можно подробнее куда конкретно его вставлять, после какой строчки

*

zomby6888

  • ******
  • 1484
  • 167
Re: Неправильные title
« Ответ #8 : 13.02.2014, 00:24:43 »
можете сразу за строчкой где наличие системной константы проверяется:
Код: php
defined('_JEXEC') or die('Restricted access');

Можете и в конце где нибудь, главное чтобы между тэгами <?php ... ?> находился код
интернет-блог: http://websiteprog.ru

*

Serg25

  • *
  • 2
  • 0
Re: Неправильные title
« Ответ #9 : 28.02.2014, 17:22:26 »
пробовал, ничего не меняется, где еще может быть файл отвечающий за тайтл
(в шаблоне нет)

*

Stasweb

  • ******
  • 1058
  • 17
Re: Неправильные title
« Ответ #10 : 27.01.2017, 13:34:15 »
Подскажите что то подобное для пагинации можно сделать
Код: php-brief
$doc =& JFactory::getDocument();
$doc->setTitle($this->pages->pagescounter);