1 1 1 1 1 1 1 1 1 1 Рейтинг: 4.17 - 6 отзывов

Вам знакома эта проблема, если у вас есть много товаров в одной категории и тогда каждая страница этой категории содержит одно и то же описание, мета тайтл и мета дескрипшн.

Как сделать все страницы магазина оригинальными по мета тегам и содержимому

Нравится ли это поисковикам? Конечно нет.

Как сделать все страницы магазина оригинальными по мета тегам и содержимому

Итак как с этим надо бороться.

1. Описание категории товаров на первой странице. Точно так же этим кодом делается и краткое описание лишь на первой странице категории.

 

2. Прописать всем страницам разные тайтлы и дескрипшн. Тут надо учитывать, что "количество материалов в Joomla" следует заменить на количество выводимых на странице товаров.

Вот такой код позволяет писать не только до номера страницы, но и после него:

$titletext =' страница '.$numpage .прекрасна';

 

3. Я дописываю в шаблон стандартный текст "название-категория купить и т.д". Так вот Название и категория всегда пишутся с большой буквы, что не красиво. 

Тогда я использую следующую конструкцию:

<em style="text-transform: lowercase">категория</em>

Вместо <em> можно использовать любой код, например <b>.

 

4. Избавляемся от ?limitstart=0.

Ищем файл libraries/cms/pagination/pagination.php.

 

$data->start->link = JRoute::_($params . '&' . $this->prefix . 'limitstart=0');

меняем
$data->start->link = JRoute::_($params . '&' . $this->prefix);

 

$data->previous->link = JRoute::_($params . '&' . $this->prefix . 'limitstart=' . $page);

на
if ($page == 0) {
$data->previous->link = JRoute::_($params . '&' . $this->prefix);
} else {
$data->previous->link = JRoute::_($params . '&' . $this->prefix . 'limitstart=' . $page);
}


$data->pages[$i]->link = JRoute::_($params . '&' . $this->prefix . 'limitstart=' . $offset);

на
if ($offset == 0) {
$data->pages[$i]->link = JRoute::_($params . '&' . $this->prefix);
} else {
$data->pages[$i]->link = JRoute::_($params . '&' . $this->prefix . 'limitstart=' . $offset)
}

Можно просто скопировать файл pagintion. Так же прибавятся <link rel="next" и <link rel="prev".

<?php
/**
 * J!Blank Template for Joomla by JBlank.pro (JBZoo.com)
 *
 * @package    JBlank
 * @author     SmetDenis <admin@jbzoo.com>
 * @copyright  Copyright (c) JBlank.pro
 * @license    http://www.gnu.org/licenses/gpl.html GNU/GPL
 * @link       http://jblank.pro/ JBlank project page
 */

defined('_JEXEC') or die;


/**
 * Renders the pagination footer
 * @param  array $list Array containing pagination footer
 * @return string
 */
function pagination_list_footer($list)
{
    $html = array();

    $html[] = '<div class="list-footer">';
    $html[] = '<div class="limit">' . JText::_('JGLOBAL_DISPLAY_NUM') . $list['limitfield'] . '</div>';
    $html[] = $list['pageslinks'];
    $html[] = '<div class="counter">' . $list['pagescounter'] . '</div>';
    $html[] = '<input type="hidden" name="' . $list['prefix'] . 'limitstart" value="' . $list['limitstart'] . '" />';
    $html[] = '</div>';

    return implode("\n ", $html);
}

function pagination_list_render($list)
{

	$doc = JFactory::getDocument();

	// Calculate to display range of pages
	$currentPage = 1;
	$range = 1;
	$step = 5;
	foreach ($list['pages'] as $k => $page)
	{
		if (!$page['active'])
		{
			$currentPage = $k;
		}
	}
	if ($currentPage >= $step)
	{
		if ($currentPage % $step == 0)
		{
			$range = ceil($currentPage / $step) + 1;
		}
		else
		{
			$range = ceil($currentPage / $step);
		}
	}

	$html .= '<ul>';
    $html .= '<li class="pagination-start">' . str_replace('?limitstart=0', '', $list['start']['data']) . '</li>';
    $html .= '<li class="pagination-prev">' . str_replace('?limitstart=0', '', $list['previous']['data']) . '</li>';

	$prev_href = null;

	preg_match('#(href=").*?(")#', $list['previous']['data'], $prev_a);

	if (count($prev_a) > 0) {
		$prev_href = str_replace(array('href="/','"'), "", $prev_a[0]);
	}
	//var_dump(JURI::base().$prev_href);


	if(isset($prev_href)) {
		$doc->addCustomTag('<link rel="prev" href="'.JURI::base().$prev_href.'">');
	}

	foreach ($list['pages'] as $k => $page)
	{
		if (in_array($k, range($range * $step - ($step + 1), $range * $step)))
		{
			if (($k % $step == 0 || $k == $range * $step - ($step + 1)) && $k != $currentPage && $k != $range * $step - $step)
			{
				$page['data'] = preg_replace('#(<a.*?>).*?(</a>)#', '$1...$2', $page['data']);
			}
		}
		
		$html .= '<li class="number">' . str_replace('?limitstart=0', '', $page['data']) . '</li>';
		
	}

	$html .= '<li class="pagination-next">' . $list['next']['data'] . '</li>';

	$next_href = null;

	preg_match('#(href=").*?(")#', $list['next']['data'], $next_a);

	if (count($next_a) > 0) {
		$next_href = str_replace(array('href="/','"'), "", $next_a[0]);
	}
	//var_dump(JURI::base().$prev_href);


	if(isset($next_href)) {
		$doc->addCustomTag('<link rel="next" href="'.JURI::base().$next_href.'">');
	}

    $html .= '<li class="pagination-end">' . $list['end']['data'] . '</li>';
    $html .= '</ul>';
	return $html;
}

/**
 * Renders an active item in the pagination block
 * @param  JPaginationObject $item The current pagination object
 * @return string
 */
function pagination_item_active(JPaginationObject $item)
{
    return '<a title="' . $item->text . '" href="' . $item->link . '" class="pagenav">' . $item->text . '</a>';
}

/**
 * Renders an inactive item in the pagination block
 * @param  JPaginationObject $item The current pagination object
 * @return string
 */
function pagination_item_inactive(JPaginationObject $item)
{
    return '<span class="pagenav">' . $item->text . '</span>';
}

 

Очень удобно для массового добавления тайтлов, ключей и дескрипшенов, использовать импорт-экспорт для категорий и производителей, импорт-экспорт для товаров и плагин BIO. Каждый из этих аддонов позволяет прописать только в своей части и нет такого аддона, чтобы работал во всех частях. Поэтому я использую все три.

 

Добавить комментарий

Защитный код
Обновить