xen
27.Август.2015 00:00:00
1
Сейчас в модуле seo есть такие шаблоны для url:
/category-name/[subcategory-name/]product-name
/category-name/[subcategory-name/]product-name.html
Подскажите, как можно сделать url вида:
/category-name/product-name , т.е. удалить из url подкатегории. category-name - это главная категория товара
1 лайк
К сожалению, несколькими строчками кода тут не обойтись
xen
28.Август.2015 00:00:00
3
Это понятно, подскажите тогда ка лучше поступить: Изменить модуль seo (В настройку Формат SEO URL товаров добавить новый пункт с нужным форматом url и написать код в этом модуле для новых url) или написать отдельный аддон?
Хотя вот накидал пример, вроде работает.
Правим app\addons\seo\func.php
в функции fn_seo_validate_parents после строки
$parent_ids = is_array($id_path) ? $id_path : explode('/', $id_path);
добавляем
if (!empty($parent_ids) && $vars['parent_type'] == 'c') {
$parent_ids = array(array_shift($parent_ids));
}
в функции fn_seo_get_parent_items_path после строки
$path_ids = explode('/', $id_path);
добавляем
if ($object_type == 'p' && !empty($path_ids)) {
$path_ids = array(array_shift($path_ids));
}
xen
28.Август.2015 00:00:00
5
Спасибо за решение. Но мне бы хотелось не заменять функционал, а расширить существующее. Если заменить функционал - то проще сделать так:
В файле /app/addons/seo/schemas/settings/objects.php
$path = db_get_hash_single_array(
"SELECT c.id_path, p.link_type FROM ?:categories as c LEFT JOIN ?:products_categories as p ON p.category_id = c.category_id WHERE p.product_id = ?i ?p",
array('link_type', 'id_path'),
$object_id,
fn_get_seo_company_condition('c.company_id', '', $company_id)
);
Вот тут SELECT c.id_path, заменить на SELECT c.category_id as id_path
Если хотите изменить схему этого файла, сипользуйте модуль Мои изменения и создайте следующий файл
app\addons\my_changes\schemas\seo\objects.post.php
с содержимым:
<?php
<манипуляции с массивом $schema>
return $schema;
Не забудьте очистить кэш после изменений
xen
31.Август.2015 00:00:00
7
Спасибо, это будет лучшим решением
xgrey
17.Сентябрь.2015 00:00:00
8
как можно поменять в модуле СЕО автоматическое формирование названия title страницы?
сейчас это так Категория :: Подкатегория :: Название товара
нужно:
[название товара] [код] купить за [цена] в интернет магазине таком-то
сейчас все это делаю вручную
как можно поменять в модуле СЕО автоматическое формирование названия title страницы?
сейчас это так Категория :: Подкатегория :: Название товара
нужно:
[название товара] [код] купить за [цена] в интернет магазине таком-то
сейчас все это делаю вручную
Сейчас тайтл формируется из хлебных крошек в файле design\themes\ВАША_ТЕМА\templates\index.tpl
Попробуйте заменить:
{if $page_title}
{$page_title}
{else}
{foreach from=$breadcrumbs item=i name="bkt"}
{if !$smarty.foreach.bkt.first}{$i.title|strip_tags}{if !$smarty.foreach.bkt.last} :: {/if}{/if}
{/foreach}
{if !$skip_page_title && $location_data.title}{if $breadcrumbs|count > 1} - {/if}{$location_data.title}{/if}
{/if}
на
{if $page_title}
{$page_title}
{elseif $runtime.controller == 'products' && $runtime.mode == 'view'}
{$product.product} {$product.product_code} купить за {$product.price} в интернет магазине таком-то
{else}
{foreach from=$breadcrumbs item=i name="bkt"}
{if !$smarty.foreach.bkt.first}{$i.title|strip_tags}{if !$smarty.foreach.bkt.last} :: {/if}{/if}
{/foreach}
{if !$skip_page_title && $location_data.title}{if $breadcrumbs|count > 1} - {/if}{$location_data.title}{/if}
{/if}
Не зубудьте почистить кэш
Если знакомы с хуками, то используйте index:title
(!) Не тестировано
xgrey
17.Сентябрь.2015 00:00:00
10
Работает, спасибо!
Цена только показывается с копейками, типа 10.000000
Работает, спасибо!
Цена только показывается с копейками, типа 10.000000
Попробуйте
{if $page_title}
{$page_title}
{elseif $runtime.controller == 'products' && $runtime.mode == 'view'}
{$product.product} {$product.product_code} купить за {$product.price|fn_format_price} в интернет магазине таком-то
{else}
{foreach from=$breadcrumbs item=i name="bkt"}
{if !$smarty.foreach.bkt.first}{$i.title|strip_tags}{if !$smarty.foreach.bkt.last} :: {/if}{/if}
{/foreach}
{if !$skip_page_title && $location_data.title}{if $breadcrumbs|count > 1} - {/if}{$location_data.title}{/if}
{/if}
xgrey
17.Сентябрь.2015 00:00:00
12
Спасибо, теперь все просто идеально!
Я так понимаю, что мне нужно это сделать модулем чтобы ваша обработка заработала после обновления?
Спасибо, теперь все просто идеально!
Я так понимаю, что мне нужно это сделать модулем чтобы ваша обработка заработала после обновления?
Да, желательно. Благо, что хук позволяет
regga5
04.Апрель.2016 00:00:00
14
А как сделать:
Product_name текст Category_name цена, текст, Vendor_Name
Можно ли еще подтянуть город Вендора в TITLE Товара?
А как сделать:
Product_name текст Category_name цена, текст, Vendor_Name
Можно ли еще подтянуть город Вендора в TITLE Товара?
Попробуйте
{if $page_title}
{$page_title}
{elseif $runtime.controller == 'products' && $runtime.mode == 'view'}
{$product.product} текст {$product.main_category|fn_get_category_name} {$product.price|fn_format_price}, текст, {$product.company_id|fn_get_company_name}
{else}
{foreach from=$breadcrumbs item=i name="bkt"}
{if !$smarty.foreach.bkt.first}{$i.title|strip_tags}{if !$smarty.foreach.bkt.last} :: {/if}{/if}
{/foreach}
{if !$skip_page_title && $location_data.title}{if $breadcrumbs|count > 1} - {/if}{$location_data.title}{/if}
{/if}
Не тестировали, для города нужны более серьезные изменения
regga5
19.Апрель.2016 00:00:00
17
А как для категорий сделать? Название категории - текст - Родительская категория - тект
А как для категорий сделать?
Название категории - текст - Родительская категория - тект
Попробуйте
{if $page_title}
{$page_title}
{elseif $runtime.controller == 'products' && $runtime.mode == 'view'}
{$product.product} текст {$product.main_category|fn_get_category_name} {$product.price|fn_format_price}, текст, {$product.company_id|fn_get_company_name}
{elseif $runtime.controller == 'categories' && $runtime.mode == 'view'}
{$category_data.category} текст {if $category_data.parent_id}{$category_data.parent_id|fn_get_category_name}{/if} текст
{else}
{foreach from=$breadcrumbs item=i name="bkt"}
{if !$smarty.foreach.bkt.first}{$i.title|strip_tags}{if !$smarty.foreach.bkt.last} :: {/if}{/if}
{/foreach}
{if !$skip_page_title && $location_data.title}{if $breadcrumbs|count > 1} - {/if}{$location_data.title}{/if}
{/if}
если да то что то не работает - ничего не изменилось
Нужно чтобы Title имел вид Купить [название товара] в интернет магазине таком-то
В Редактирование товара - SEO - SEO / Мета-данные - Название страницы (информация автоматически пропишется или там будет пусто а Title будет изменен?)
Если у товара уже задан тайтл вручную, то не поменяется. Код сработает только для тех товаров, у кого не задан тайтл. Мета данные наш код не меняет