Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Как поправить цепочку пути(navtrail)

Добрый день, как исправить в цепочке пути(navtrail, breadcrumb и как только ее не называют) следующий момент: она везде выводит первым значение "Каталог" хотя мы можем находится даже не в каталоге а на какой-либо другой информационной странице. Где это править? Не нашел ни файла, ни шаблона отвечающего за вывод данной цепочки.


Еще попутный вопрос по этой теме, как сделать, чтоб navtrail не выводилась на стартовой странице, а показывалась на всех остальных страницах?


to TPEHEP Скорее всего нужно убрать строчку {$navtrail} из index.html шаблона и прописывать ее отдельно в шаблоне выводимого модуля, например в шаблоне вывода новостей content.html и т.д. а как с выводом значения "Каталог" то быть кто-нить знает?


GansICH я пробовал вставлять {$navtrail} в product_listing_columns.html например - не выводится эта строка.
Может Евгений подскажет, как сделать?


to ТРЕНЕР так то решение моей проблемы - есть автоматическое решение твоей проблемы так как на Главной странице navtreil выводит только слово "Каталог" Ждем помощи Евгения тогда!


вот класс для работы с хлебными крошками))

\includes\classes\breadcrumb.php

в файле includes\top.php

$breadcrumb->add(HEADER_TITLE_CATALOG, HTTP_SERVER . DIR_WS_CATALOG);


добавляется самая первая крошка. каталог

убираем эти строчки - пропадает первая ссылка

в файле includes\header.php

$osTemplate->assign('navtrail',$breadcrumb->trail(' » '));


создается метка {$navtrail} для шаблона


можно вызвать $breadcrumb->reset(); для сброса крошек

а дальше с помощью

$breadcrumb->add('название ссылки', 'адрес ссылки');

собрать свою последовательность ссылок :)



Еще попутный вопрос по этой теме, как сделать, чтоб navtrail не выводилась на стартовой странице, а показывалась на всех остальных страницах?


в файле includes\header.php

заменить


  $osTemplate->assign('navtrail',$breadcrumb->trail(' » '));


на

if (substr(basename($PHP_SELF), 0,5) != 'index')
{
  $osTemplate->assign('navtrail',$breadcrumb->trail(' » '));
}



to TPEHEP Скорее всего нужно убрать строчку {$navtrail} из index.html шаблона и прописывать ее отдельно в шаблоне выводимого модуля, например в шаблоне вывода новостей content.html и т.д. а как с выводом значения "Каталог" то быть кто-нить знает?


нет. проще строчку одну в header.php исправить


спасибо Евгений за оперативную помощь!


В каком месте в хлебных крошках поправить знак ">>" между ссылками?


\includes\header.php

$osTemplate->assign('navtrail', $breadcrumb->trail(' » '));


заменить файл includes\classes\breadcrumb.php на прикрепленный

скопировать прикрепленный файл navtrail.php

в папку modules\plugins\

Админка - Дополнения - Плагины - navtrail - Установить

в коде плагина

<?php
  add_filter('breadcrumb_trail', 'breadcrumb_trail_filter');
 
  function breadcrumb_trail_filter($array)
  {
      $array['separator'] = ' >> ';
 
  return $array;
  }
?>

можно поправить разделитель.



GansICH я пробовал вставлять {$navtrail} в product_listing_columns.html например - не выводится эта строка.
Может Евгений подскажет, как сделать?


сори. с этим проблемы пока.


Это все, конечно, хорошо, но писать плагин ради одного значка в navtrail - который сам по себе простой до предела - это ж расточительство какое...
Не лучше ли оформить  navtrail  отдельным боксом?


в плагине можно будет сделать возможность выбора чем разделять. а по сути он и так как бокс.
а плагин только фильтр применяет. иначе код движка где-то нужно было бы править.



в плагине можно будет сделать возможность выбора чем разделять. а по сути он и так как бокс.


Он совсем не бокс. Бокс свой в каждом шаблоне, а navtrail зачем-то сделан ЕДИНЫМ.  Потому и приходится что-то выдумывать, создавая трудности на пустом месте. И еще важное отличие:  бокс обычно использует шаблоны, для которых смена значка куда проще делалась бы.
Плагин тут - как из пушки по воробьям.


а плагин только фильтр применяет. иначе код движка где-то нужно было бы править.


А основной код движка  править и так приходится.  Не зря приложены измененные файлы.

Плагин хорош там, где он делает небольшую правку, чтобы не делать большую правку в основном коде.  И обычно плагин служит для изменения ФУНКЦИОНАЛЬНОСТИ.  В данном случае вопрос в ДИЗАЙНЕ, и это принято решать ШАБЛОНОМ.

Navtrail  сам по себе довольно простой, и лучше бы его переписать целиком как бокс, чтобы использовать шаблон.

Сделать это совсем не сложно,  а пользователям проще  было бы.


с шаблоном удобнее конечно было бы.


А основной код движка  править и так приходится.  Не зря приложены измененные файлы.


при обновлении - правка не слетит. ради этого все и делается


Ради одного символа плагин создавать - как-то расточительно...


ну можно создать стандартный плагин для шаблона

например function.php

и туда пользователь сможет добавлять какие либо мелкие правочки, как эта.

Ради одного символа плагин создавать - как-то расточительно...


во всех шаблонах подобавлять бокс navtrail - больше работы.

тем более что за все время - раза 2 спрашивали как это сделать.


было бы лучше как в wordpress, чтобы шаблон можно было настраивать из админки. можно через плагин сделать управление, но нужно чтобы какой-то файл PHP был подключен к шаблону.



А основной код движка  править и так приходится.  Не зря приложены измененные файлы.


при обновлении - правка не слетит. ради этого все и делается


Интересно, а как вообще достигается такое, что правка не слетит?
Если в дистрибутиве есть файл file.php, и конечный пользователь его поменял, а в новой версии разработчик его тоже поменял по своему, то при перезаписи обязательно слетит.


Всем доброго времени суток! Как сделать, чтоб breadcrumb (хлебные крошки) не отображались на главной?


в index.html заменить {$navtrail} на

)){ {/php}{$navtrail}{php}}{/php}

Вообще так как ссылки сами на себя на страницах бессмыслены
внес еще кучу исправлений в файл \includes\top.php
Начиная что безликое Каталог (HEADER_TITLE_CATALOG) поменял на название магазина (STORE_NAME)

Убираем последнюю ссылку в каталогах
конструкцию
if (os_db_num_rows($categories_query,true) > 0) {
$categories = os_db_fetch_array($categories_query,true);
$breadcrumb->add($categories['categories_name'], os_href_link(FILENAME_DEFAULT, os_category_link($cPath_array, $categories['categories_name'])));
меняем на
if (os_db_num_rows($categories_query,true) > 0) {
$categories = os_db_fetch_array($categories_query,true);
if ($i == $n-1 && !$product->isProduct()){
$breadcrumb->add($categories['categories_name']);
} else {
$breadcrumb->add($categories['categories_name'], os_href_link(FILENAME_DEFAULT, os_category_link($cPath_array, $categories['categories_name'])));
}
Для товаров удаляем из $breadcrumb->add($product->getBreadcrumbName(), os_href_link(FILENAME_PRODUCT_INFO, os_product_link($product->data['products_id'], $product->data['products_name'])));все что выделено красным

Для новостей
меняем
if (strstr($PHP_SELF, FILENAME_NEWS)) { 
      $breadcrumb->add(NAVBAR_TITLE_NEWS, os_href_link(FILENAME_NEWS));

на
)) { 
      $breadcrumb->add(NAVBAR_TITLE_NEWS);

добавляем красное if (isset($_GET['news_id'])) {
$breadcrumb->add(NAVBAR_TITLE_NEWS, os_href_link(FILENAME_NEWS));
в следующих строчках наоборот удаляем карсное
$breadcrumb->add($news['headline'], os_href_link(FILENAME_NEWS, 'news_id='.$news['news_id'] . $SEF_parameter, 'NONSSL'));

еще бы для информационных страниц так сделать ....


Чтоб не было ссылки в крошках саму на себя, можно в includes/classes/breadcrumb.php
найти

if (isset($this->_trail['link']) && os_not_null($this->_trail['link'])) {

заменить на

if (isset($this->_trail['link']) && os_not_null($this->_trail['link']) && $i != $n-1) {


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


Источник



Copyright ShopOS