Добавлена поддержка свойств, разбиение паттернов на логические блоки и другие новые возможности.
Что нового?
1. Поддержка значений родительской категории. Теперь при составлении паттернов есть возможность использовать такие параметры как ID и title родительской категории.
2. Возможность использовать конструкции вида if-else. Это дает возможность выводить те или иные блоки в зависимости от значения той или иной переменной. Поддерживается стандарный набор условий — ==, !=, <, >, >=, <=.
[if {category-id} == 5]Выводим текст 1[else]Выводим текст 2[/if]
3. Возможность перечисления выбранных значений мультисписков в нужном вам контексте. Например перечислить выбранные элементы списка в виде ссылок на страницы фильтрации. Конструкция вида
{listfield}<a href="/{ctype-name}?listfield={listfield-id}">{listfield-value}{/listfield}
создаст список ссылок для фильтра с указанными в записи значениями.
4. Разбиение паттерна на логические фразы, при помощи разделителя ||. Например, паттерн
{title}|| площадью {prop-8}|| на {prop-9} этаже|| жилой площадью {prop-16}
выведет только те логические "кубики", для которых присутствуют значения указанных свойств(со значениями полей поле работает аналогично). В зависимости от заполненности тех или иных полей(свойств) записи получим разный результат:
— Продам квартиру в новостройке площадью 120 м2 на 5 этаже жилой площадью 100 м2
— Продам квартиру в новостройке на 5 этаже жилой площадью 100 м2;
— Продам квартиру в новостройке площадью 120 м2 жилой площадью 100 м2
— Продам квартиру в новостройке жилой площадью 100 м2
и т.д.
Это позволяет использовать единый паттерн для полей, которые существуют только в определенных категориях, необязательны к заполнению и т.д. А также при использовании свойств, которые как мы знаем изначально привязаны к определенным категориям, и в разных категориях мы имеем разный набор свойств.
5. Поддержка свойств типа контента. Теперь при составлении паттернов можно использовать не только поля записи, но и свойства
Поддерживаемые значения:
Типы контента: {ctype-id} — id текущего типа контента, {ctype-name} — имя текущего типа контента, {ctype-title} — название типа контента, {ctype-description} — описание типа контента, {ctype-labels-one}, {ctype-labels-two}, {ctype-labels-many}, {ctype-labels-create} — названия записей со склонениями(например новость, новости, новостей, новость). Также есть возможность обращаться к другим типам контента по имени и спользовать аналогичные параметры, например {ctypebyname-articles-title}, {ctypebyname-news-description} и т.д.
Категории: {category} — название категории; {category-id} — id, {category-slug} — slug, {category_url} — url.
Дочерние категории: {subcat-1} — название категории; {subcat-1-id} — id, {subcat-1-slug} — slug.
Родительская категория: {parentcat-title} — заголовок родительской категории, {parentcat-id} — id родительской категории.
Текстовые поля: {fieldname} — текст поля.
Значения из записи: {item-id} — id записи, {item-slug} — slug записи, {item-datepub} — дата публикации.
Свойства: {prop-ID свойства} выведет значение данного свойства. Например: {prop-6}, {prop-17}
Связанные списки: {fieldname-id-номер} — id списка, {fieldname-номер} — значение списка. Номер это уровень вложенности списка.
Списки: {fieldname-id} — текст по номеру, {fieldname-current} — текст текущего элемента, {fieldname_id} — id текущего элемента.
Города: {fieldname} — название, {fieldname_id} — id города.
InstantMaps: {places-city} — Название города, {places-city-id} — id города, {places-country} — страна, {places-region} — регион, {places-street} — улица, {places-house} — дом, {places-room} — квартира, {places-lat} — широта, {places-lng} — долгота, {places-phone} — телефон, {places-site} — сайт, {places-skype} — скайп, {places-email} — e-mail адрес
Автор публикации: {author-nickname} — никнейм автора публикации, {author-email} — e-mail автора публикации, {author-city} — город автора публикации, {author-city-id} — id города автора публикации, {author-url} — ссылка на профиль автора, {author-avatar} — ссылка на аватар автора, {author-avatar-src} — аватар автора, {author-поле} — значение из профиля пользователя, например {author-hobby} — текст из поля "О себе", {author-spr} — количество записей в типе контента spr, {author-spr-url} — ссылка на записи автора в типе контента spr, {author-comments} — количество комментариев автора, {author-comments-url} — ссылка на комментарии автора, {author-friends-10} — список друзей автора с аватарками (10 — количество, сколько выводить), {author-friend-add} — добавить автора в друзья, {author-friendslink} — все друзья автора(ссылка), {author-message} — написать автору личное сообщение
Пользователь: {user-nickname} — никнейм пользователя, {user-email} — e-mail пользователя, {user-city} — город пользователя, {user-city-id} — id города пользователя, {user-url} — ссылка на профиль пользователя, {user-avatar} — ссылка на аватар пользователя, {user-avatar-src} — аватар пользователя, {user-поле} — значение из профиля пользователя, например {user-hobby} — текст из поля "О себе", {user-spr} — количество записей пользователя в типе контента spr, {user-spr-url} — ссылка на записи пользователя в типе контента spr, {user-comments} — количество комментариев пользователя, {user-comments-url} — ссылка на комментарии пользователя, {user-friends-10} — список друзей поьзователя с аватарками (10 — количество, сколько выводить), {user-friend-add} — добавить пользователя в друзья, {user-friendslink} — все друзья пользователя(ссылка), {user-message} — написать пользователю личное сообщение
Поле Дата: — {fieldname} — значение поля в исходном формате, {fieldname*} — значение поля в формате 01.04.2018, {fieldname*time} — значение поля в формате 01.04.2018 06:40:00, {fieldname-literal} — дата прописью, {fieldname-literal-time} — дата прописью плюс время.
Видимость текста: [$=5,6,7]любой текст[/$] где 5,6,7 — это список групп, которые будут видеть этот фрагмент текста через запятую. [$=!5,6,7]любой текст[/$] напротив запретит показ указанным группам. Также вместо списка групп можно указывать параметры is_guest, is_logged, is_admin, !is_guest, !is_logged, !is_admin
Конструкции if-else: Конструкции [if {category-id}==5]выводим это[else]выводим то[/if][empty=поле не заполнено] позволяют выводить любые конструкции в зависимости от значения полей. В качестве аргументов сравнения можно задавать как любые доступные в поле переменные так и любые числовые и строковые значения ({field}==молоко, {category}!={rubric}, {ctype-id}>=10 и т.д.). Поддерживается полный набор арифметических операций — равно, не рабно, больше, меньше, больше или равно, меньще или равно.
Мультисписки — Конструкция вида {lb}любой окружающий текст {lb-id} и все что угодно {lb-value}{/lb} перечислит все выбранные пользователем пункты списка в нужном вам контексте. {lb} — имя поля, {lb-id} подставит ID выбранного значения, а {lb-value} — само выбранное значение. Аналогично поведения функции foreach.
— * перед закрывающей скобкой — с маленькой буквы, & — оригинал текста, пусто — с большой буквы
/blogs/kladovka-kodera/pole-seo-tekst-dlja-icms-2-obnovlenie-1-4-0.html
/blogs/kladovka-kodera/pole-seo-tekst-dlja-icms-2-obnovlenie-1-3-0.html
/blogs/kladovka-kodera/pole-seo-tekst-dlja-icms-2.html
Реклама #
RSN 5 лет назад #
RSN 5 лет назад #
Александр Витальевич 5 лет назад #
vikont 5 лет назад #
Pawell 5 лет назад #
dwd 5 лет назад #
Pawell 5 лет назад #
Андрей В 3 года назад #
Такая конструкция, например, в разделе — «Новости» выводит следующее:
/News/6-vse-bolshe-rossijan-pokupayut-nedvizhimost-za-granicei.html
News — выводится c заглавной, из-за чего попадаем на страницу 404.
Замена — News|news почему-то не сработало.
Сработало склонение — News::news и паттерн: "/%~{ctype-name}~%2/{item-slug}.html".
Может есть какое-то более простое решение?
icms v2.14.2, шаблон — Modern
dwd 3 года назад #
Более простое решение есть — instantcms.ru/blogs/kladovka-kodera/pole-seo-tekst-dlja-icms-2.html
Цитирую:
Также для текстовых полей в версии 1.67 добавлен вывод неизменных значений. Используйте {title&} чтобы вывести текст в том виде, в котором его ввел пользователь.
Pawell 5 лет назад #
dwd 5 лет назад #
А еще в настройках поля есть галочка "Использовать кэш для показа на сайте".
В последних версиях системы результат рендеринга полей содержится не в массиве записи, а в $fieldset['fields'] и выводится вот таким образом:
Pawell 5 лет назад #
Сергей 3 года назад #
dwd 3 года назад #
Применительно к данному случаю - без разницы. Поле не имеет собственных таблиц и прочих записей в БД.
Всегда и везде - достаточно закинуть файлы. Архитектуру таблиц я заранее привык продумывать так, чтобы ее не приходилось менять впоследствии. Если когда-нибудь при обновлении потребуются дополнительные действия, вы обязательно найдете эту информация в файле readme.txt установочного пакета. Если там ничего нет, значит ничего кроме замены файлов не требуется.
Сергей 3 года назад #
Поля, поля, у вас такие поля, функционал как у трёх компонентов. Не верится что это одно поле столько может, и нет у него никаких баз данных.
iton 2 года назад #
У меня есть поле список, там два варианта ответа «Да» и «Нет», пытаюсь сделать чтобы при выборе одного показывался текст но не получается может кто подскажет как правильно?
Поле: ddos
У типа контента id 8
В этом варианте у меня показывает, что поле не заполнено, хотя оно заполнено:
[if {ddos-8}==Да]DDoS[else]Нет[/if][empty=поле не заполнено]
При этом варианте, ничего не выводит на странице:
[if {ddos-8}==1]Выводим текст 1[else]Выводим текст 2[/if]
Сергей 2 года назад #
Не совсем понял зачем (У типа контента id 8) поле итак находится в этом типе контента?.
Мыслю так, как поле заполнено так и выводим.
[if {ddos}==1]Да текст любой[else][/if]
[if {ddos}==2]Нет текста если он не нужен[else][/if]
правда давно настраивал могу и ошибаться
iton 2 года назад #
Попробовал так сделать, поля остались пустыми, не появилось значение.
Сергей 2 года назад #
[if {category-id}==88]так у меня работает относительно категорий[else][/if]
Я же писал, что не совсем помню, вы в поле инструкцию посмотрели?
Там всё написано, добавить что либо трудно.
— Списки: {fieldname-id} — текст по номеру, {fieldname-current} — текст текущего элемента, {fieldname_id} — id текущего элемента.
Выбирайте и вставляйте, что вам подходит.
iton 9 месяцев назад #
я опять вернулся к этому вопросу ) только вопрос чуть в другом
Мне надо чтобы выводился текст с полем {test} если поле заполнено, поле «Конструктор списков» от dwd.
Пример:
Есть предложение «Пятница субботу воскресенье среда {test} вторник» и мне надо выводить все предложение если заполнено поле {test}, если поле не заполнено, то предложение не выводится.
не получается у меня написать в if что то, чтобы работало
[if ]Пятница субботу воскресенье среда {test} вторник[else][/if]
Сергей 9 месяцев назад #
[if {test-id}== номер строки поля «Конструктор списков» ]«выведет то что здесь вставите» [else][/if] Но толком я даже вопрос ваш не понял.
iton 9 месяцев назад #
) Реализовать, что я задумал не получилось, но спасибо за помощь!
Может кто еще, что подскажет, кто пользуется полем.
Ostrova 8 месяцев назад #
Попробуйте в паттерне поля поставить так:
||
Пятница субботу воскресенье среда {test} вторник
И в настройках поля включить галочку «вырезать связанные фразы»
iton 2 месяца назад #
Спасибо, такой вариант работает.
Но у меня несколько полей указаны в Паттерн и получается если одного нет, вся запись пропадает, что не совсем подходит.
Ostrova 2 месяца назад #
Надо ставить || перед каждым полем и тогда будут отображаться те, что заполнены
iton 2 месяца назад #
Спасибо, теперь все работает как надо. 👍
Гарри 1 год назад #
С последней версией InstantCMS 2.15.2 будет работать?
&$!#% 1 год назад #
У меня работает. И inseo тоже.
Гарри 1 год назад #
Спасибо.
Голдман Сакс 9 месяцев назад #
Работает на последней версии. Автор просто гений!
Всех благ ему.