Slug в виде даты

InstantCMS 2.X
#1 17 января 2017 в 12:42
Здравствуйте
Как можно задать slug для контента в таком формате /yyyy-mm-dd/?
#2 17 января 2017 в 15:33
Вот так вот :
без проблем.
Но чтобы еще и "в формате" — надо переделывать системные файлы.
#3 17 января 2017 в 17:18


Вот так вот :
без проблем.
Но чтобы еще и "в формате" — надо переделывать системные файлы.

Ris

спасибо, я так уже пробовал
мне нужно именно в том формате, как я указал, чтобы сначала год шел, а потом месяц и дата
я так понимаю стандартно сделать не получится и нужно какой-то костыль делать?
#4 17 января 2017 в 19:26
Timmy,
Правильно понимаете.
Но есть такая мысль, что костыль можно сделать никелированным и продвинутым.
То есть хук, который при добавлении нужного типа контента будет апдейтить слаг сгенерированным нужным значением.
#5 18 января 2017 в 20:19


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

Ris
Вот вам как вариант:

1. создаем болванку нового компонента
2. создаем в нем хук content_after_add
3. в него вставляем

  1. $item['slug'] = date('now');
  2. $this->model->update('con_'.$item['ctype_name'], $item['id'], $item);
slug меняется на нужный вам при создании/редактировании материала.
#6 18 января 2017 в 20:46

1. создаем болванку нового компонента
2. создаем в нем хук content_after_add

dwd

Во! Я как раз с этими хуками никак не могу разобраться. Читал документацию… мне китайцы с алиэкспресса похожим языком пишут.

Итак. Мы хотим создать хук, который сработает по content_after_add.
В каком-нибудь имеющемся компоненте или в том же контенте этот хук нельзя создать? Обязательно новый забор компонент городить?
Потом в документации написано, что в манифесте надо этот хук прописать.

А так — всё верно. Остается только оформить дату и задать условие. Вдруг топикстартер не во всех типах контента хочет урл в виде даты?

  1. if ($ctype['name'] == 'что_надо'){ // Не забыть тип контента передать в хук
  2. $item['slug'] = date("Y-m-d");
  3. $this->model->update('con_'.$item['ctype_name'], $item['id'], $item);
  4. }
#7 18 января 2017 в 20:59

Потом в документации написано, что в манифесте надо этот хук прописать.

Ris
Да, в манифесте выбранного компонента

В каком-нибудь имеющемся компоненте или в том же контенте этот хук нельзя создать? Обязательно новый забор компонент городить?

Ris
Можно в имеющемся, но в этом случае при обновлении есть некий процент что файл манифеста перезапишется и накроется работа хука

Вдруг топикстартер не во всех типах контента хочет урл в виде даты?

Ris
для этого есть другой хук
content_названиетипаконтента_after_add
#8 18 января 2017 в 22:12
Loadырь,
Спасибо за информацию!
А что делать, если надо добавить в контроллере, где уже есть хук по этому событию, еще одно действие?
Просто дописать действие существующий хук? Так потрется же при обновлении.
#9 19 января 2017 в 05:51

А что делать, если надо добавить в контроллере, где уже есть хук по этому событию, еще одно действие?

Ris
Тогда выбирать меньшее из зол.
#11 19 января 2017 в 17:16

На всякий случай

Ris
Спасибо
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.