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

MoRRoZ

  • Захожу иногда
  • 86
  • 43 / 0
Итак, была задача (поскольку поле кейвордс почти ни на что уже не влияет - мучаем его...):
- для материалов: если заполнено поле кейвордс - выводить его в тайтл (для того чтоб тайтл отличать, при необходимости, от заголовка материала)
- то же для секций и категорий
- вывод тайтлов в виде: дополнительное название (материал, категория, товар) потом название сайта (на главной - название сайта первым полюбому - не нужно поисковику слово "Главная")
- в виртумарте: название товара/категории - в тайтл + в кейворд; краткое описание - в дескрипшен
Вот так легко и просто теперь можем управлять метами (Joomla! 1.0.11.1RE)
ЗЫ понимая, что уже обсуждалось, выложил собственное лекарство в одном флаконе. Без претензий на истину в последней инстанции (не флеймите)!!!

Код
--------------------------------
components/com_content/content.php
function showItem()

примерно 1510 стр.

 $mainframe->setPageTitle( $row->title );
  на
 $mainframe->setPageTitle( $row->title, $params, $row );

----------------------------------------------
includes/joomla.php

    function setPageTitle( $title=null , $pageparams=null, $page = null ) {
    global $option;
    if (@$GLOBALS['mosConfig_pagetitles']) {
    $title = trim( htmlspecialchars( $title ) );
    $title = stripslashes( $title );
    $pageownname = null;
     
      if($page->metakey)
      $this->_head['title'] = $page->metakey .' - '.$GLOBALS['mosConfig_sitename'];
      else
      $this->_head['title'] = $title ? $title.' - '.$GLOBALS['mosConfig_sitename'] : $GLOBALS['mosConfig_sitename'];

        if($option == 'com_frontpage'){
        $this->_head['title'] = $title ? $GLOBALS['mosConfig_sitename'].' - '.$title : $GLOBALS['mosConfig_sitename'];
       }
    }
    }       

------------------------------------------------
includes/frontend.php

В функции mosShowHead()
вместо   
$mainframe->appendMetaTag( 'description', $mosConfig_MetaDesc );
$mainframe->appendMetaTag( 'keywords', $mosConfig_MetaKeys );

добавляем

   $de = -1;
   $ke = -1;
   $n = count( $mainframe->_head['meta'] );
      for ($i = 0; $i < $n; $i++) {
        if ($mainframe->_head['meta'][$i][0] == "description")
         $de = $i;
        if ($mainframe->_head['meta'][$i][0] == "keywords")
         $ke = $i;
      }
 if(!$mainframe->_head['meta'][$de][1] || $mainframe->_head['meta'][$de][1]=="" || $de < 0)
  $mainframe->appendMetaTag( 'description', $mosConfig_MetaDesc );
if(!$mainframe->_head['meta'][$ke][1] || $mainframe->_head['meta'][$ke][1]=="" || $ke < 0)
  $mainframe->appendMetaTag( 'keywords', $mosConfig_MetaKeys );
 
$mainframe->addMetaTag( 'Generator', $_VERSION->PRODUCT . ' - ' . $_VERSION->COPYRIGHT);
$mainframe->addMetaTag( 'robots', 'index, follow' );
 
----------------------------------------------administrator/components/com_virtuemart/html/shop.browse.php

$temp = explode (chr(10), strip_tags($desc));
$temp2 ="";
for ($i=0; $i<count($temp); $i++)
 $temp2 .= trim($temp[$i]);
 $mainframe->addMetaTag( "description", $temp2);
 $mainframe->addMetaTag( "keywords", strip_tags($ps_product_category->get_name($category_id,1)));

--------------------------------------------------administrator/components/com_virtuemart/html/shop.product_details.php

$mainframe->addMetaTag( "description", strip_tags( $db_product->f("product_s_desc")));
$mainframe->addMetaTag( "keywords", strip_tags( $db_product->f("product_name")));

--------------------------------------------------

а также прилагаю всё вышеизложенное для скачивания


[вложение удалено Администратором]
« Последнее редактирование: 16.03.2008, 19:27:47 от MoRRoZ »
Еще вопросы? А ты читал часто задаваемые вопросы по Joomla?
*

mocking_mexican

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
- в виртумарте: название товара/категории - в тайтл + в кейворд

Идея очень здравая, только вот просто название товара в кейворд - это мало, есть же ещё и ключевые слова в самом описании товара. Так что нужно ещё делать и просто отдельное поле для ручного принудительного указания.

краткое описание - в дескрипшен
ИМХО, не совсем оптимальное решение.

Для примера:
Название: Стул-какой-то-там
Краткое описание:
- материал сидения: кожа
- материал ножек: металл
- система крепления: винтовая.

А теперь что видит робот:
Тайтл: Стулья / Стул-какой-то-там
Дескрипшн: тех. характеристики, но без указания какому товару они принадлежат. Я бы сделал так: тайтл - дескрипшн.

З.Ы. И, если позволите, несколько глупый вопрос: все функции, кроме тех, что обозначены "заменить это на это" просто следует просто добавлять в указанные файлы?
« Последнее редактирование: 30.11.2006, 14:20:01 от mocking_mexican »
*

MoRRoZ

  • Захожу иногда
  • 86
  • 43 / 0
мы готовили контент по типу - 1 фраза = 1 страница, поэтому достаточно логично, и для наших решений вполне, материалы в стульях наверное лучще в свойства, дополнительными полями задавать, а краткое описание - это "стул для прихожей"

в общем я предложил просто решение, а использовать его или нет - каждый решает сам
Еще вопросы? А ты читал часто задаваемые вопросы по Joomla?
*

mocking_mexican

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
в общем я предложил просто решение, а использовать его или нет - каждый решает сам
Нет, за решение большое спасибо, тут даже не разговор. Я не критикую, скорее просто высказал свои мысли вслух.

пробовал все это на JOOMLA версии 1.0.12
и вирт-марте 1.0.10

тег дескрипшана теперь выводится дважды (там краткое описание товара) :)

в тайтле - только название товара

в ключ-словах - только названия товара.
что я сделал не так? :)
*

Kriks

  • Захожу иногда
  • 82
  • 0 / 0
Подскажите поподробней для чайника: как использовать вышеописанное лекарство?
Или на данный момент уже придумали что-то лучше?
Мне нужно, чтобы в VM мета-теги сами генерировались.
Может модуль какой?
*

MoRRoZ

  • Захожу иногда
  • 86
  • 43 / 0
готово :) правда, с приходом джустины всё менее актуально :)
Еще вопросы? А ты читал часто задаваемые вопросы по Joomla?
*

Kriks

  • Захожу иногда
  • 82
  • 0 / 0
Все сделал как написано выше, но + не поставлю, ибо работает не как обещено (да и 20 сообщений у меня еще нет) ;)
В виртуемарте:
description из краткого описания и keywords из title добавляются только на страницах конкретного товара, а на страницах категории1, категории2 и категории3 в кейвордс пишется "категория3".
Как это исправить?
И еще: как сделать, чтоб название всех родительских категорий добавлялось и тайтл и в кейвордс и в дискрипшн(?)???
Это вполне так, мне кажется, нормально будет, ибо пасвэй отображается также на каждой странице по названию категорий (в общем - чтоб путь "категория1-кат2-кат-3-товар", отображающийся на странице товара так же писался в кейворд)...
*

Kriks

  • Захожу иногда
  • 82
  • 0 / 0
Ну просто все перерыл.
Никак не получается сделать как хочется.
Автоматом мета-тэги ставятся только на страницу конкретного товара.
Как сделать, чтоб конкретные категории виртумарта тоже поддовались генерации?
Где что править?
может в строке: $mainframe->addMetaTag( "keywords", strip_tags($ps_product_category->get_name($category_id,1)));
вместо $category_id,1 что-нить другое надо прописать? Как это выяснить?

 ^-^ Как сделать что бы было так : <title>Наименование товара+Артикултовара+Назва ние сайта из Жумлы</title>

product_name  - Наименование товара
product_sku - Артикул товара

Вот именно  product_sku и нужно добавить в Титлы.
« Последнее редактирование: 27.05.2008, 18:59:26 от avantis »
*

apirat

  • Захожу иногда
  • 122
  • 5 / 0
  • ...опачки!
Что-то у меня не получилось до конца правильно сделать методом prependMetaTag. Почему то у меня теперь два дескрипшона одинаковых...  что я не так сделал!? это касается просмотра товара подробно...

А в категориях
<meta name="description" content=" Интернет магазин детских товаров, большой выбор детских колясок, детской мебели и автокресел." />
описание задано по умолчанию в глобальной конфигурации, если добавить описание категории то отображается все отлично.

<meta name="keywords" content="Geoby" />
а вот кейворды барахлят... отображается только одно слово которое непонятно от куда берется... этот пример для страницы категории бренда "MIBB" а не "Geoby" ( вот путь "Детская мебель - Дуэты (кровать + Комод) - MIBB")

помогите разобраться плиз! !!!???!!!
*

Cergunya

  • Захожу иногда
  • 101
  • 16 / 0
не совсем по теме вопрос, но всё же...
может кто подскажет,а есть ли данное решение для Joomla 1.5.7 + VM 1.1.2?
« Последнее редактирование: 04.11.2008, 00:02:07 от Cergunya »
*

pitzoom

  • Осваиваюсь на форуме
  • 17
  • 4 / 0
кто делал этот хак для VM 1.2 и  Joomla! 1.0.15 Stable пытался настроить не получается

Да кто нить делал что это для VM ?
*

rudon

  • Осваиваюсь на форуме
  • 27
  • 17 / 0
для  для Joomla 1.5.14 + VM 1.1.3 сделал так (взято отсюда http://forum.virtuemart.net/index.php?topic=21476.msg190940#msg190940)

в shop.product_details.php находим код

Код
// Prepend Product Short Description Meta Tag "description"
if( vmIsJoomla('1.5')) {
$document = JFactory::getDocument();
$document->setDescription(strip_tags( $db_product->f("product_s_desc")));
} else {
$mainframe->prependMetaTag( "description", strip_tags( $db_product->f("product_s_desc")) );
}

вместо него ставим
Код
// Prepend Product Short Description Meta Tag "description"
if( vmIsJoomla('1.5')) {
$document = JFactory::getDocument();
$document->setDescription(strip_tags( $db_product->f("product_s_desc")));

// Chris Walsh | July 2009 | INSERT HERE
// Ref: http://docs.joomla.org/JDocument
  $rsKeywords = $mosConfig_MetaKeys.", "; // Keywords metatag is built from: (1) product name split out (2 Each Category in Pathway (includes product name);
$rsKeywords .= implode(', ',explode(' ', $product_name));
foreach( $pathway as $item ) {
$rsKeywords .= ', ' . $item->name;
}
$document->setMetaData( 'keywords', $rsKeywords );
$document->setMetaData( 'title', $product_name );
// INSERT END
} else {
$mainframe->prependMetaTag( "description", strip_tags( $db_product->f("product_s_desc")) );
}

в результате в keywords появляется - ключевые слова сайта (можно исключить написав вместо $mosConfig_MetaKeys.", " вот это ""), категория товара, название товара

в title - название товара
в description - краткое описание
*

zealot_e

  • Новичок
  • 3
  • 0 / 0
Спасибо, rudon!
Информация очень помогла. Возник следующий вопрос: Как в тайтл, помимо названия товара, запихнуть ещё все категории к которым этот товар относиться?
*

zealot_e

  • Новичок
  • 3
  • 0 / 0
кажется сам разобрался, кому нужно чтобы в тайтле таблицы фигурировала категория товара, то в файле shop.product_details.php заменяем код
Код
// Set Dynamic Page Title
$vm_mainframe->setPageTitle( html_entity_decode( $category_name.' - '.substr($product_name, 0, 60 ), ENT_QUOTES ));

на

Код
// Set Dynamic Page Title
$category_name = '';
//Получаем имя вышестоящей директории, если есть такая
$q = 'SELECT `category_parent_id` FROM `jos_vm_category_xref` WHERE `category_child_id`='.$category_id;
$db->setQuery( $q );
$category_parent_id = $db->loadResult();
if ($category_parent_id) {
   $q = 'SELECT `category_name` FROM `jos_vm_category` WHERE `category_id`='.$category_parent_id ;
   $db->setQuery( $q );
   $category_name = $db->loadResult()." - ";
}

//Получаем имя самой директории
$q = 'SELECT `category_name` FROM `jos_vm_category` WHERE `category_id`='.$category_id;
$db->setQuery( $q );
$category_name = $category_name.($db->loadResult());

$vm_mainframe->setPageTitle( html_entity_decode( $category_name.' - '.substr($product_name, 0, 60 ), ENT_QUOTES ));

В итоге, если товар расположен в Категория 1 - Категория 1.1 - Товар 1, то в тайтле имеем Категория 1 - Категория 1.1 - Товар 1

 ! Как мне сделать, чтоб в теге description перед описанием товара выводилось название товара (title)?
Пожалуйстааа, очень надо. Затык уже месячный  :(
« Последнее редактирование: 04.12.2009, 14:08:39 от pirate296 »
*

text

  • Захожу иногда
  • 93
  • 0 / 0
кажется сам разобрался, кому нужно чтобы в тайтле таблицы фигурировала категория товара, то в файле shop.product_details.php заменяем код
Код
// Set Dynamic Page Title
$vm_mainframe->setPageTitle( html_entity_decode( $category_name.' - '.substr($product_name, 0, 60 ), ENT_QUOTES ));

на

Код
// Set Dynamic Page Title
$category_name = '';
//Получаем имя вышестоящей директории, если есть такая
$q = 'SELECT `category_parent_id` FROM `jos_vm_category_xref` WHERE `category_child_id`='.$category_id;
$db->setQuery( $q );
$category_parent_id = $db->loadResult();
if ($category_parent_id) {
   $q = 'SELECT `category_name` FROM `jos_vm_category` WHERE `category_id`='.$category_parent_id ;
   $db->setQuery( $q );
   $category_name = $db->loadResult()." - ";
}

//Получаем имя самой директории
$q = 'SELECT `category_name` FROM `jos_vm_category` WHERE `category_id`='.$category_id;
$db->setQuery( $q );
$category_name = $category_name.($db->loadResult());

$vm_mainframe->setPageTitle( html_entity_decode( $category_name.' - '.substr($product_name, 0, 60 ), ENT_QUOTES ));

В итоге, если товар расположен в Категория 1 - Категория 1.1 - Товар 1, то в тайтле имеем Категория 1 - Категория 1.1 - Товар 1

у меня в shop.product_details.php в строках 155-156
Код
/* Set Dynamic Page Title */
    $mainframe->setPageTitle( html_entity_decode( substr($product_name, 0, 60 ) ));

Из FAQ по Joomla1.0.х нашел такое решение для title: товар - название сайта.
Вопрос: где изменить код, чтобы было в title было так:" товар-подкатегория (если есть)-категория-краткое описание товара - название сайта"?
*

text

  • Захожу иногда
  • 93
  • 0 / 0
Может кто знает? Или подскажет направление - в каком файле править?
*

terr

  • Давно я тут
  • 824
  • 14 / 6
  • Ученик html-я
Цитировать
В итоге, если товар расположен в Категория 1 - Категория 1.1 - Товар 1, то в тайтле имеем Категория 1 - Категория 1.1 - Товар 1

Код
Fatal error: Call to a member function setPageTitle() on a non-object in /home/...../www/administrator/components/com_virtuemart/html/shop.product_details.php on line 180
*

evgenyakut

  • Новичок
  • 6
  • 0 / 0
наткнулся вот на этот хак http://forum.virtuemart.net/index.php?topic=65697 работает vm1.1.5 пробовал лично, мне впринципе понравился, он немного сложнее того что описан выше но работает помоему лучше - есть возможность руками дописать нужное в теги
*

daniley

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
наткнулся вот на этот хак http://forum.virtuemart.net/index.php?topic=65697 работает vm1.1.5 пробовал лично, мне впринципе понравился, он немного сложнее того что описан выше но работает помоему лучше - есть возможность руками дописать нужное в теги
я тож поставил его себе, по началу радовался, а потом геморой... аназад выдирать весь тот код.. трудно и долго
*

vtx

  • Захожу иногда
  • 221
  • 19 / 0
титл сделал так (1.1.4)
Код
//Получаем имя самой директории
$q = 'SELECT `category_name` FROM `#__{vm}_category` WHERE `category_id`='.$category_id;
$db->setQuery( $q );
     $category_name = $category_name.($db->loadResult());
$manufacturer_name = $ps_product->get_mf_name($product_id);
$vm_mainframe->setPageTitle( html_entity_decode( $category_name.' '.$manufacturer_name.' '.substr($product_name, 0, 60 ).' Купить в Киеве', ENT_QUOTES ));
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Актуальны ли сейчас мета-теги?

Автор SmYk

Ответов: 6
Просмотров: 950
Последний ответ 10.12.2017, 21:16:43
от Fess_N
Заполнил мета-тег, мета-описание, мета-кейвордс. Загрузка сайта увеличился

Автор Zhanadil1509

Ответов: 2
Просмотров: 655
Последний ответ 05.11.2017, 23:53:50
от si@m
Как лучше сделать при заполнении тегов? (SEO оптимизация)

Автор Zhanadil1509

Ответов: 9
Просмотров: 707
Последний ответ 22.08.2017, 07:40:20
от Zhanadil1509
[Решение] Управление заголовками (title) материалов и категорий J2.5!

Автор Lovenokia

Ответов: 43
Просмотров: 27814
Последний ответ 17.05.2017, 17:07:34
от Kasatka2
Оптимизация интернет-магазина + отзывчивость сайта

Автор Strikerus

Ответов: 0
Просмотров: 586
Последний ответ 09.12.2016, 12:44:28
от Strikerus