iDrevniy

iDrevniy

+1 в карму :) Спасибо!
+38
Репутация
38
Рейтинг
#1 Как изменить глубиномер 2 октября 2017 в 13:45
Да, конструкция получилась крутая. Еще раз спасибо вам @SmartControl и вам Loadырь.

Еще раз убедился, что система оч крутая, вопросы решаются проще, чем казалось сначала.
#2 Как изменить глубиномер 2 октября 2017 в 13:38


@SmartControl, в $item['parent_catalog_id'] может быть несколько записей.

Loadырь

А какие? Но все работает чудесно! Откорректировал ваш код под свои name'ы типа контента и без проблем!

По сути у меня все упиралось в эту строчку
  1. $news = cmsCore::getModel('content')->getContentItem('catalog', $item['parent_catalog_id']);
Ее я не мог придумать.
#3 Как изменить глубиномер 2 октября 2017 в 13:33


Комрады! Может еще кто носом ткнет куда посмотреть, где покопать? Прям хочется сделать нормальный глубиномер.

iDrevniy
Не уверен, что понял как именно вы хотите сделать.

Попробуйте так, добавьте в файл /templates/default/controllers/content/item_view.tpl.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.  
У меня пример можно посмотреть тут. Это объявление созданное внутри новости. И крошки получаются Новости -> Моя новость -> Мое объявление

@SmartControl

Закрываем тему. Вам огромное спасибо! Как отблагодарить?
#4 Как изменить глубиномер 2 октября 2017 в 13:23


  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.  

Loadырь

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

То есть
  1. !empty($childs['tabs']
вернет false, то есть отсутствие дочерних.
Как и
  1. !empty($childs['lists']
Любо я туплю.
#5 Как изменить глубиномер 2 октября 2017 в 13:19


  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.  

Loadырь

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

Любо я туплю.
#6 Как изменить глубиномер 2 октября 2017 в 13:01
Эту темку можно как пожелание для следующей версии учесть.
#7 Как изменить глубиномер 2 октября 2017 в 12:34
Комрады! Может еще кто носом ткнет куда посмотреть, где покопать? Прям хочется сделать нормальный глубиномер.
#8 Как изменить глубиномер 2 октября 2017 в 12:14


Под двойку нет компонента, позволяющего создавать блоги.

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

Lora

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

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

Пока не могу понять как правильно передать параметры в экшене.
#9 Как изменить глубиномер 2 октября 2017 в 11:43


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

Lora

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

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

Вы были правы. Там нет ни строчки по родителей, только про дочерние записи.
#10 Как изменить глубиномер 2 октября 2017 в 11:07


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

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

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

Lora

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

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



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

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

Есть вот такая конструкция
  1.  
  2. $this->addBreadcrumb($item['parent_title'], rel_to_href(str_replace('/content/'.$ctype['name'], '', $item['parent_url'])));
  3.  
Но она не хочет работать. Возможно вы правы, потому что не передается родительский массив. Но я сомневаюсь.
#11 Как изменить глубиномер 2 октября 2017 в 10:20
Первая часть проблемы решена.

Вот так будет выглядеть ссылка на родительский тип контента:
  1.  
  2. if($item["ctype_name"] == 'details') {
  3. $this->addBreadcrumb("Каталог (или языковая константа)", href_to('catalog'));
  4. }
  5.  
Остается вопрос со второй частью. Как прописать родительскую запись.
#12 Как изменить глубиномер 2 октября 2017 в 09:31


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

Lora

Думаю вы ошибаетесь. При создании связи у дочернего типа контента автоматически создается поле со ссылкой на запись родительского типа контента к которой привязана дочерняя запись. Соответственно в дочернюю запись обязательно должен передаваться как минимум id типа контента родителя (потому что name поля формируется из name родителя) и id записи привязки (а иначе как).
#1 Как изменить глубиномер 2 октября 2017 в 00:39
Всем добра!

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

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

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

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

Спасибо!
#1 CSS для свойств и полей 31 августа 2017 в 23:03
Возникла необходимость оформить таблицу свойств и заодно поля. Как?

Немного подробней. Я просто не могу сообразить. Как присвоить стиль конкретному свойству или полю. Например: имеем свойство стороны света, которое определяетмя простым списком. Если выбрано север, то надпись должна быть синей, юг — красной и т.д. Задать индивидуальный класс для свойства не проблема, а вот для значения свойства...

Логика идет по пути добавления чего-то в форму добавления свойства, но простой список перечисляется в текстовом поле. В базу он попадает просто под номером (id).

Вопрос для тех кто знает cms. Как? Или куда копать?
#13 Тур по сайту 25 мая 2017 в 23:26


iDrevniy, отлично, спасибо за реакцию.

@liner

Велкам :)
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.