VirtueMart Forum

VirtueMart 2 + 3 + 4 => Virtuemart Development and bug reports => Topic started by: gba on October 11, 2017, 16:38:53 PM

Title: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: gba on October 11, 2017, 16:38:53 PM
Hi VM team!

VM seems to ignore the Joomla setting 'jform_sitename_pagetitles':
No matter whether I choose to show the site name before or after page title in Joomla config, no site title is rendered into page titles of VM pages.
What do you know about that?

Kind regards,
Gerald
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: jjk on October 11, 2017, 23:25:45 PM
Don't know much about it. 'jform_sitename_pagetitles' doesn't seem to be used in core Joomla and also not in VirtueMart. So I guess you are using a third party extension for pagetitles. VirtueMart has it's own 'custom page title' form field, which you can set in the product settings for each product.
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: gba on October 12, 2017, 08:33:38 AM
Hi!

Thank you for your reply.
Actually I am not sure, if I understood it ...

I am talking about the Joomla config setting 'Site Name in Page Titles'.
According to this setting the site name is added before, after or not at all to the current page title.
The issue is, that VM pages (i. e. category view, cart view, order view) do not add the site name to the page title - neither before nor after.
This happens with VM pages, only.

Kind regards,
Gerald
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: p.barg on October 12, 2017, 09:49:14 AM
Hello,

you can add the necessary code into your template override files. For e.g. category view, open your template override file <your-template>/html/com_virtuemart/category/default.php and include the following code:
$includeSiteName = (int) JFactory::getApplication()->getCfg('sitename_pagetitles');
if ($includeSiteName) {
    $document = JFactory::getDocument();
    $siteName = JFactory::getApplication()->getCfg('sitename');
    $docTitle = $document->getTitle();
    switch ($includeSiteName) {
        case 1;
            $document->setTitle($siteName . ' - ' . $docTitle);
            break;
        case 2;
            $document->setTitle($docTitle . ' - ' . $siteName);
            break;
    }
}


For the other VM pages you can do the same.

Hope that helps,

Petra
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: gba on October 12, 2017, 10:07:32 AM
Hi Petra!

Thank you for your help.
This is very good for my overrides.
But what about VM pages, I have no override for?
Shouldn't VM do exactly this natively on all VM pages?

Kind regards,
Gerald
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: p.barg on October 12, 2017, 10:22:50 AM
Hi Gerald,

just copy the original files as overrides and add the code snippet.
As far as I know VM doesn't make use of the Joomla! setting.

-- Petra
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: gba on October 12, 2017, 10:55:56 AM
Thank you for the workaround.
I will consider that.

@VM team:
To me this seems to be an issue, that should be considered in the next VM version.
Do you agree?

Kind regards,
Gerald
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: jjk on October 12, 2017, 23:43:06 PM
Quote from: gba on October 12, 2017, 08:33:38 AM
I am talking about the Joomla config setting 'Site Name in Page Titles'.
That one works only in VM if you have a Joomla menu item pointing to the VM page. The optional 'Custom Page Title', which is available in the VM category and product views are meant for individual (manually typed) overrides.

This one might also be of interest to you: https://forum.virtuemart.net/index.php?topic=108776.msg371876#msg371876 (The line has changed a bit meanwhile. But if you make a change there, you can't use a template override. (I always change it to include the manufacturer name).

Something to consider - if you add the sitename to all pages, you are limiting the number of characters in the Google serps for the rest. I think Google still cuts it off after approximately 70 characters.
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: Ventsi Genchev on October 13, 2017, 08:32:49 AM
On the basis of the topic, I want to ask why the title of the page for the product should be "Category name : Product name"?
For example, it looks like this: "Headphones & Headsets : Headphones Philips RS 3256 - Black". In addition, when a product is stopped by production, I move it to a "not produced" category. (in the URL I do not use the category name).
In my opinion, it would be better: "Product name - Site name".

My question is: Is this important for SEO or for another reason?
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: AH on October 13, 2017, 09:22:21 AM
You can do all of this using an override in the product template

//override the meta set in the view.html
$document = JFactory::getDocument ();
$document->setTitle(strip_tags(html_entity_decode($this->product->product_name . ' : ' . ($this->category->category_name ? (vmText::_($this->category->category_name)) : '') ,ENT_QUOTES)));


(You have to find the variable for site name and remove the category variable)

You can modify to fit your requirements and you can also modify other Joomla document settings as required
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: Ventsi Genchev on October 13, 2017, 09:45:55 AM
Yes, that's great. Thank you, AH.
Unfortunately, this situation loses the ability to have a custom page title for a specific product.
For example, in this option:
$document = JFactory::getDocument ();
if ($product->customtitle) {
$document->setTitle(strip_tags(html_entity_decode($product->customtitle,ENT_QUOTES)));
} else {
$document->setTitle(strip_tags(html_entity_decode($this->product->product_name . ' : ' . ($this->category->category_name ? (vmText::_($this->category->category_name)) : '') ,ENT_QUOTES)));
}
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: Ventsi Genchev on October 13, 2017, 10:02:00 AM
So if we want to be able to set up a custom page title for a specific product page in the administration, the following is required:
$document = JFactory::getDocument ();
$product = $this->get('product');
if ($product->customtitle) {
$document->setTitle(strip_tags(html_entity_decode($product->customtitle,ENT_QUOTES)));
} else {
$document->setTitle(strip_tags(html_entity_decode($this->product->product_name . ' : ' . ($this->category->category_name ? (vmText::_($this->category->category_name)) : '') ,ENT_QUOTES)));
}


But I do not know if all this will cause some delay when loading the page.
What do you think?
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: GJC Web Design on October 13, 2017, 10:39:05 AM
will not affect loading time in any measurable way
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: AH on October 13, 2017, 10:54:13 AM
Venci

As I said :-
QuoteYou can modify to fit your requirements

Thanks for the update and good to see you now have what you need  :)
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: Ventsi Genchev on October 13, 2017, 11:06:04 AM
Thank you, GJC and AH.

I apologize to gba for my intervention in his question.

And to unify everything from this topic if we want the product page name to look like this: Product Name : Category Name - Site Name
The code we need to add to the templates/template_name/html/com_virtuemart/productdetails/default.php looks like this:
<?php //override the meta set in the view.html - AH
$document JFactory::getDocument ();
$product $this->get('product');
if (
$product->customtitle) {
$document->setTitle(strip_tags(html_entity_decode($product->customtitle,ENT_QUOTES)));
} else {
$document->setTitle(strip_tags(html_entity_decode($this->product->product_name ' : ' . ($this->category->category_name ? (vmText::_($this->category->category_name)) : '') ,ENT_QUOTES)));
}
/* BEGIN Virtuemart Title Fix */
$includeSiteName = (int) JFactory::getApplication()->getCfg('sitename_pagetitles');
if (
$includeSiteName) {
    
$siteName JFactory::getApplication()->getCfg('sitename');
    
$docTitle $document->getTitle();
    switch (
$includeSiteName) {
        case 
1;
            
$document->setTitle($siteName ' - ' $docTitle);
            break;
        case 
2;
            
$document->setTitle($docTitle ' - ' $siteName);
            break;
    }
}
/* END Virtuemart Title Fix */ ?>


Thanks to jjk, p.barg, AH, GJC Web Design and dblaze (in the order of the comments).
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: AH on October 13, 2017, 11:23:40 AM
Venci

Thanks for posting your solution
Title: Re: VM seems to ignore the Joomla setting 'jform_sitename_pagetitles'
Post by: gba on October 17, 2017, 20:20:48 PM
Thank you all for your contributions.
Actually the original topic is still not solved:

Quote from: gba on October 12, 2017, 10:55:56 AM
@VM team:
To me this seems to be an issue, that should be considered in the next VM version.
Do you agree?

Kind regards,
Gerald