Поле «SEO-текст» для ICMS 2 - Обновление 1.8.0

+19
1.98K
Иллюстрация
Добавлена поддержка свойств, разбиение паттернов на логические блоки и другие новые возможности.


Что нового?

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
0
RSN RSN 2 года назад #
Спасибо поле помогло решить проблему не решаемую стандартными средствами системы по СЕО.
0
RSN RSN 2 года назад #
ЗЫ:
0
Александр Витальевич Александр Витальевич 2 года назад #
А как получить обновление? Или была рассылка?
+2
vikont vikont 2 года назад #
Смотрите в своем кабинете на сайте DWD
0
Pawell Pawell 2 года назад #
Здравствуйте. А есть ли возможность вывести ссылку на текущую страницу $_SERVER["REQUEST_URI"]. Как это можно прописать?
+3
dwd dwd 2 года назад #
Не смог придумать ни одного примера, где бы то могло понадобиться. С точки зрения оптимизации это вообще считается злом. Так что специального тега для этой цели нет, но вы можете попробовать собрать нужную ссылку самостоятельно используя другие теги. Тут все зависит от конкретной задачи, которая перед вами стоит. Например, если вы говорите о страницах записей, то
Код HTML:
  1. <a href="/{ctype-name}/{item-slug}.html">Ссылка</a>
0
Pawell Pawell 2 года назад #
Спасибо. То, что нужно.
0
Андрей В Андрей В 4 месяца назад #

Такая конструкция, например, в разделе — «Новости» выводит следующее:
/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

+2
dwd dwd 4 месяца назад #

Более простое решение есть — instantcms.ru/blogs/kladovka-kodera/pole-seo-tekst-dlja-icms-2.html
Цитирую:

Поддерживается автоматическое приведение значений к регистру. Знак *, добавленный к имени поля отвечает за то, будет ли первая буква являться заглавной. Например {category*} выведет «маркетинг», а {category} — «Маркетинг». Это позволяет использовать значения в любом контексте

Также для текстовых полей в версии 1.67 добавлен вывод неизменных значений. Используйте {title&} чтобы вывести текст в том виде, в котором его ввел пользователь. 

0
Pawell Pawell 2 года назад #
Пытаюсь вывести текстовое поле с содержимым:
Спойлер
в записи напрямую <?php echo html($item['имя поля']); ?> или <?php echo $item['имя поля']; ?>, но оно не отображается. В обычном режиме показывается во вновь созданных сообщениях.
+3
dwd dwd 2 года назад #
В установочном пакете есть замечательный файлик - readme.txt))
А еще в настройках поля есть галочка "Использовать кэш для показа на сайте".

В последних версиях системы результат рендеринга полей содержится не в массиве записи, а в $fieldset['fields'] и выводится вот таким образом:

Код PHP:
  1. <?php foreach ($fieldset['fields'] as $field) { ?>
  2. <div class="value"><?php echo $field['html']; ?></div>
  3. <?php } ?>
Поэтому либо используем кэширование и выводим как

Код PHP:
  1. <?php echo $fieldset['fields']['имя поля']; ?>
либо рендерим на лету

Код PHP:
  1. $fieldset['fields']['имя поля']['parser']->setItem($item)->parse(1);
0
Pawell Pawell 2 года назад #
Спасибо. Разобрался. Пришлось сделать запрос:
Код PHP:
  1. UPDATE `cms_con_articles` SET `название поля`=1;
чтобы поле появилось на всех ранее написанных страницах.
0
Сергей Сергей 8 месяцев назад #
Продолжаю свои обычные надоедалки. 1.8.0 - 1.8.7 надо инсталлировать или файлы достаточно закинуть?
+2
dwd dwd 8 месяцев назад #
Надоедайте, кто ж против?)
Применительно к данному случаю - без разницы. Поле не имеет собственных таблиц и прочих записей в БД.
Всегда и везде - достаточно закинуть файлы. Архитектуру таблиц я заранее привык продумывать так, чтобы ее не приходилось менять впоследствии. Если когда-нибудь при обновлении потребуются дополнительные действия, вы обязательно найдете эту информация в файле readme.txt установочного пакета. Если там ничего нет, значит ничего кроме замены файлов не требуется.
0
Сергей Сергей 8 месяцев назад #
Благодарю, буду смотреть readme.txt. Не лёгкая это теперь работа обновляется, когда дополнений туча на сайте laugh .
Поля, поля, у вас такие поля, функционал как у трёх компонентов. Не верится что это одно поле столько может, и нет у него никаких баз данных. scratch
0
iton iton 10 дней назад #

У меня есть поле список, там два варианта ответа «Да» и «Нет», пытаюсь сделать чтобы при выборе одного показывался текст но не получается может кто подскажет как правильно?

Поле: ddos

У типа контента id 8

В этом варианте у меня показывает, что поле не заполнено, хотя оно заполнено:

[if {ddos-8}==Да]DDoS[else]Нет[/if][empty=поле не заполнено]

При этом варианте, ничего не выводит на странице:

[if {ddos-8}==1]Выводим текст 1[else]Выводим текст 2[/if]

0
Сергей Сергей 8 дней назад #

Не совсем понял зачем (У типа контента id 8) поле итак находится в этом типе контента?.

Мыслю так, как поле заполнено так и выводим.

[if {ddos}==1]Да текст любой[else][/if]

[if {ddos}==2]Нет текста если он не нужен[else][/if]

правда давно настраивал могу и ошибаться

Еще от автора

Компонент «Продажа полей» для ICMS 2
Компонент для тотального управления продажей полей. Возможна оплата показа пользователями и самим автором. Масса типов продажи полей.
Компонент «Мотивация пользователей» для ICMS 2
Компонент предназначен для поощрения пользователей за систематическое посещение сайта.
Поле «Поддерживаю!» для ICMS 2
Поле «Поддерживаю!» предназначено для сбора голосов в решении какой-то задачи.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.