
iDrevniy
Еще раз убедился, что система оч крутая, вопросы решаются проще, чем казалось сначала.
@SmartControl, в $item['parent_catalog_id'] может быть несколько записей.
А какие? Но все работает чудесно! Откорректировал ваш код под свои name'ы типа контента и без проблем!
По сути у меня все упиралось в эту строчку
$news = cmsCore::getModel('content')->getContentItem('catalog', $item['parent_catalog_id']);
Не уверен, что понял как именно вы хотите сделать.Комрады! Может еще кто носом ткнет куда посмотреть, где покопать? Прям хочется сделать нормальный глубиномер.
Попробуйте так, добавьте в файл /templates/default/controllers/content/item_view.tpl.php строки
У меня пример можно посмотреть тут. Это объявление созданное внутри новости. И крошки получаются Новости -> Моя новость -> Мое объявление
if($item["ctype_name"] == 'details') { $this->addBreadcrumb("Каталог", href_to('catalog')); $news = cmsCore::getModel('content')->getContentItem('catalog', $item['parent_catalog_id']); $this->addBreadcrumb($news['title'], href_to('catalog', $news['slug'] . '.html')); } else { ................. тут старый код по формированию крошек ................. } $this->addBreadcrumb($item['title']); //эта строка остается
Закрываем тему. Вам огромное спасибо! Как отблагодарить?
if($childs){ foreach($childs['tabs'] as $relation_name => $relation){ $this->addBreadcrumb($relation['title'], href_to($relation_name)); } } foreach($childs['lists'] as $relation){ $this->addBreadcrumb($relation['title'], href_to($relation['ctype_name'])); } } }
Спасибо! Но не пашет. Думаю потому, что в вашем коде идет проверка на дочерние записи, а их как раз нет, поскольку запись сама дочерняя. Нам нужно найти родителя.
То есть
Как и
if($childs){ foreach($childs['tabs'] as $relation_name => $relation){ $this->addBreadcrumb($relation['title'], href_to($relation_name)); } } foreach($childs['lists'] as $relation){ $this->addBreadcrumb($relation['title'], href_to($relation['ctype_name'])); } } }
Спасибо! Но не пашет. Думаю потому, что в вашем коде идет проверка на дочерние записи, а их как раз нет, поскольку запись сама дочерняя. Нам нужно найти родителя.
Любо я туплю.
Вообще то это группы вроде.Нет? Переименуйте в Блог, выставьте права и все дела.)Под двойку нет компонента, позволяющего создавать блоги.
Я об этом не подумал… Спасибо за идею.
Но у меня еще есть связанные типы контента, в которых я бы хотел реализовать правильный глубиномер.
Пока не могу понять как правильно передать параметры в экшене.
Вы написали тоже самое.Ваш "Пост в блоге"это просто ссылка ведущая на страницу типа контента "Посты". И она ничего не знает о "Блогах". Попробуйте в этой ссылке гетом передать, что вам надо и потом уже на странице "Постов" обернуть глубиномер в условие(Если есть гет) и выводить как вам надо
Не на столько я силен в программировании. Опять таки, понимаю что нужно скорее всего прописать
$this->getParentItems($parent_ctype_name);
Думаю нужно этот запрос запихнуть в экшен item_view.php.
Вы были правы. Там нет ни строчки по родителей, только про дочерние записи.
Возможно я что то не так понял.) Итак
screenshots.firefox.com/lX099aX2vODALv9A/second
Далее
screenshots.firefox.com/2b58ZzubfTvyXXYj/second
Далее
screenshots.firefox.com/yWuyUZ0zl8pjLU3p/second
Теперь по ссылке "Поршень" вы переходите к типу контента "Детали" и никаких параметров ни пост ни гет там нет. Это просто ссылка на страницу контента. Или не то?
Нет, не так. Давайте немного изменим условия задачи.
Под двойку нет компонента, позволяющего создавать блоги. Но мы можем вполне успешно реализовать эту функцию через типы контента и связи. В итоге у нас получается следующая конструкция. Есть два типа контента: Блоги и Посты. Пользователь создает в Блогах запись (как бы создает блог), затем создает дочернюю (привязанную запись) пост.
Тип контента Блоги я в глубиномере вывел. Теперь нужно вывести родительскую запись (как бы категорию или как бы раздел) Блог юзера, к которой привязаны его посты (дочерние записи из типа контента Посты).
Да, еще момент. Отображение списка типа контента Посты выключено.
Есть вот такая конструкция
$this->addBreadcrumb($item['parent_title'], rel_to_href(str_replace('/content/'.$ctype['name'], '', $item['parent_url'])));
Вот так будет выглядеть ссылка на родительский тип контента:
if($item["ctype_name"] == 'details') { $this->addBreadcrumb("Каталог (или языковая константа)", href_to('catalog')); }
А что мешает создать подкатегорию "Детали" в "Моторе"? А так у вас навряд ли получится. У вас же по ссылке "Поршень" открывается другой тип контента. Соответственно и массив другой, в нём скорее всего нет нужных вам данных.
Думаю вы ошибаетесь. При создании связи у дочернего типа контента автоматически создается поле со ссылкой на запись родительского типа контента к которой привязана дочерняя запись. Соответственно в дочернюю запись обязательно должен передаваться как минимум id типа контента родителя (потому что name поля формируется из name родителя) и id записи привязки (а иначе как).
Закопался, не могу сообразить.
Идея такая: есть два типа контента (например: 1 — каталог, 2 — детали). Первый родительский, второй дочерний. Добавляем в каталог запись "Мотор", в детали "Поршень". Имеем следующие глубиномеры: /->Каталог->Мотор и /->Детали->Поршень. Понимаем, что не так это должно выглядеть, хочется получить Каталог->Мотор->Поршень.
Как я мыслю: отключаем отображение списка для ТК 2 Детали, тем самым получаем глубиномер /->Поршень.
Идем в файл /templates/default/controllers/content/item_view.tpl.php и пытаюсь написать следующее
if($item["ctype_name"] == 'details') { $this->addBreadcrumb( что писать тут? не могу сообразить! ); $this->addBreadcrumb( что писать тут? не могу сообразить! ); }
Спасибо!
Немного подробней. Я просто не могу сообразить. Как присвоить стиль конкретному свойству или полю. Например: имеем свойство стороны света, которое определяетмя простым списком. Если выбрано север, то надпись должна быть синей, юг — красной и т.д. Задать индивидуальный класс для свойства не проблема, а вот для значения свойства...
Логика идет по пути добавления чего-то в форму добавления свойства, но простой список перечисляется в текстовом поле. В базу он попадает просто под номером (id).
Вопрос для тех кто знает cms. Как? Или куда копать?
iDrevniy, отлично, спасибо за реакцию.
Велкам :)