Как изменить глубиномер 2.X

Добавить или удалить пункты

 
Посетитель
small user social cms
Сообщений: 89
Всем добра!

Закопался, не могу сообразить.

Идея такая: есть два типа контента (например: 1 - каталог, 2 - детали). Первый родительский, второй дочерний. Добавляем в каталог запись "Мотор", в детали "Поршень". Имеем следующие глубиномеры: /->Каталог->Мотор и /->Детали->Поршень. Понимаем, что не так это должно выглядеть, хочется получить Каталог->Мотор->Поршень.

Как я мыслю: отключаем отображение списка для ТК 2 Детали, тем самым получаем глубиномер /->Поршень.

Идем в файл /templates/default/controllers/content/item_view.tpl.php и пытаюсь написать следующее
Код PHP:
  1.  
  2. if($item["ctype_name"] == 'details') {
  3. $this->addBreadcrumb( что писать тут? не могу сообразить! );
  4. $this->addBreadcrumb( что писать тут? не могу сообразить! );
  5. }
  6.  
То есть, понимаю, что в первой строчке должна быть прописана ссылка на ТК 1 Каталог, во второй строчке на родительскую запись по связи. Но запутался.

Спасибо!
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1522
А что мешает создать подкатегорию "Детали" в "Моторе" ? А так у вас навряд ли получится. У вас же по ссылке "Поршень" открывается другой тип контента. Соответственно и массив другой, в нём скорее всего нет нужных вам данных.
Реклама
cms
Посетитель
small user social cms
Сообщений: 89
Lora:

А что мешает создать подкатегорию "Детали" в "Моторе" ? А так у вас навряд ли получится. У вас же по ссылке "Поршень" открывается другой тип контента. Соответственно и массив другой, в нём скорее всего нет нужных вам данных.

Думаю вы ошибаетесь. При создании связи у дочернего типа контента автоматически создается поле со ссылкой на запись родительского типа контента к которой привязана дочерняя запись. Соответственно в дочернюю запись обязательно должен передаваться как минимум id типа контента родителя (потому что name поля формируется из name родителя) и id записи привязки (а иначе как).
Посетитель
small user social cms
Сообщений: 89
Первая часть проблемы решена.

Вот так будет выглядеть ссылка на родительский тип контента:
Код PHP:
  1.  
  2. if($item["ctype_name"] == 'details') {
  3. $this->addBreadcrumb("Каталог (или языковая константа)", href_to('catalog'));
  4. }
  5.  
Остается вопрос со второй частью. Как прописать родительскую запись.
Редактировалось: 2 раз (Последний: 2 октября 2017 в 10:23)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1522
Возможно я что то не так понял.) Итак
https://screenshots.firefox.com/lX099aX2vODALv9A/second

Далее
https://screenshots.firefox.com/2b58ZzubfTvyXXYj/second
Далее
https://screenshots.firefox.com/yWuyUZ0zl8pjLU3p/second

Теперь по ссылке "Поршень" вы переходите к типу контента "Детали" и никаких параметров ни пост ни гет там нет. Это просто ссылка на страницу контента. Или не то?
Редактировалось: 2 раз (Последний: 2 октября 2017 в 10:40)
Посетитель
small user social cms
Сообщений: 89
Lora:

Возможно я что то не так понял.) Итак
https://screenshots.firefox.com/lX099aX2vODALv9A/second

Далее
https://screenshots.firefox.com/2b58ZzubfTvyXXYj/second
Далее
https://screenshots.firefox.com/yWuyUZ0zl8pjLU3p/second

Теперь по ссылке "Поршень" вы переходите к типу контента "Детали" и никаких параметров ни пост ни гет там нет. Это просто ссылка на страницу контента. Или не то?

Нет, не так. Давайте немного изменим условия задачи.

Под двойку нет компонента, позволяющего создавать блоги. Но мы можем вполне успешно реализовать эту функцию через типы контента и связи. В итоге у нас получается следующая конструкция. Есть два типа контента: Блоги и Посты. Пользователь создает в Блогах запись (как бы создает блог), затем создает дочернюю (привязанную запись) пост.

Как изменить глубиномер


Тип контента Блоги я в глубиномере вывел. Теперь нужно вывести родительскую запись (как бы категорию или как бы раздел) Блог юзера, к которой привязаны его посты (дочерние записи из типа контента Посты).

Да, еще момент. Отображение списка типа контента Посты выключено.

Есть вот такая конструкция
Код PHP:
  1.  
  2. $this->addBreadcrumb($item['parent_title'], rel_to_href(str_replace('/content/'.$ctype['name'], '', $item['parent_url'])));
  3.  
Но она не хочет работать. Возможно вы правы, потому что не передается родительский массив. Но я сомневаюсь.
Редактировалось: 4 раз (Последний: 2 октября 2017 в 11:14)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1522
Вы написали тоже самое.Ваш "Пост в блоге"это просто ссылка ведущая на страницу типа контента "Посты". И она ничего не знает о "Блогах". Попробуйте в этой ссылке гетом передать, что вам надо и потом уже на странице "Постов" обернуть глубиномер в условие(Если есть гет) и выводить как вам надо
Посетитель
small user social cms
Сообщений: 89
Lora:

Вы написали тоже самое.Ваш "Пост в блоге"это просто ссылка ведущая на страницу типа контента "Посты". И она ничего не знает о "Блогах". Попробуйте в этой ссылке гетом передать, что вам надо и потом уже на странице "Постов" обернуть глубиномер в условие(Если есть гет) и выводить как вам надо

Не на столько я силен в программировании. Опять таки, понимаю что нужно скорее всего прописать
Код PHP:
  1.  
  2. $this->getParentItems($parent_ctype_name);
  3.  
но вот куда. В item_view.tpl.php эта конструкция просто так не работает.

Думаю нужно этот запрос запихнуть в экшен item_view.php.

Вы были правы. Там нет ни строчки по родителей, только про дочерние записи.
Редактировалось: 1 раз (Последний: 2 октября 2017 в 11:46)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1522
iDrevniy:
Под двойку нет компонента, позволяющего создавать блоги.
Вообще то это группы вроде.Нет? Переименуйте в Блог, выставьте права и все дела.)
Посетитель
small user social cms
Сообщений: 89
Lora:

iDrevniy:
Под двойку нет компонента, позволяющего создавать блоги.
Вообще то это группы вроде.Нет? Переименуйте в Блог, выставьте права и все дела.)

Я об этом не подумал... Спасибо за идею.

Но у меня еще есть связанные типы контента, в которых я бы хотел реализовать правильный глубиномер.

Пока не могу понять как правильно передать параметры в экшене.
Редактировалось: 1 раз (Последний: 2 октября 2017 в 12:21)
Посетитель
small user social cms
Сообщений: 89
Комрады! Может еще кто носом ткнет куда посмотреть, где покопать? Прям хочется сделать нормальный глубиномер.
Посетитель
small user social cms
Сообщений: 89
Эту темку можно как пожелание для следующей версии учесть.
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2850
Код PHP:
  1.  
  2. if($childs){
  3. if (!empty($childs['tabs'])){
  4. foreach($childs['tabs'] as $relation_name => $relation){
  5. $this->addBreadcrumb($relation['title'], href_to($relation_name));
  6. }
  7. }
  8. if (!empty($childs['lists'])){
  9. foreach($childs['lists'] as $relation){
  10. $this->addBreadcrumb($relation['title'], href_to($relation['ctype_name']));
  11. }
  12. }
  13. }
  14.  
Посетитель
small user social cms
Сообщений: 89
Loadырь:

Код PHP:
  1.  
  2. if($childs){
  3. if (!empty($childs['tabs'])){
  4. foreach($childs['tabs'] as $relation_name => $relation){
  5. $this->addBreadcrumb($relation['title'], href_to($relation_name));
  6. }
  7. }
  8. if (!empty($childs['lists'])){
  9. foreach($childs['lists'] as $relation){
  10. $this->addBreadcrumb($relation['title'], href_to($relation['ctype_name']));
  11. }
  12. }
  13. }
  14.  

Спасибо! Но не пашет. Думаю потому, что в вашем коде идет проверка на дочерние записи, а их как раз нет, поскольку запись сама дочерняя. Нам нужно найти родителя.

Любо я туплю.
Редактировалось: 1 раз (Последний: 2 октября 2017 в 13:19)
Посетитель
small user social cms
Медаль
Сообщений: 357
iDrevniy:
Комрады! Может еще кто носом ткнет куда посмотреть, где покопать? Прям хочется сделать нормальный глубиномер.
Не уверен, что понял как именно вы хотите сделать.

Попробуйте так, добавьте в файл /templates/default/controllers/content/item_view.tpl.php строки
Код PHP:
  1.  
  2. if($item["ctype_name"] == 'details') {
  3. $this->addBreadcrumb("Каталог", href_to('catalog'));
  4. $news = cmsCore::getModel('content')->getContentItem('catalog', $item['parent_catalog_id']);
  5. $this->addBreadcrumb($news['title'], href_to('catalog', $news['slug'] . '.html'));
  6. } else {
  7. .................
  8. тут старый код по формированию крошек
  9. .................
  10.  
  11. }
  12. $this->addBreadcrumb($item['title']); //эта строка остается
  13.  
У меня пример можно посмотреть тут. Это объявление созданное внутри новости. И крошки получаются Новости -> Моя новость -> Мое объявление
Редактировалось: 1 раз (Последний: 2 октября 2017 в 13:23)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.