Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по вёрстке » Как сделать значение дополнительного поля гиперссылкой если оно не было задано?

Как сделать значение дополнительного поля гиперссылкой если оно не было задано?


     09.12.2020    дополнительные поля, гиперссылка    Общие вопросы по вёрстке, Шаблоны (TPL), Общие вопросы по PHP    1797

вопрос
Dle 10.0

Есть дополнительное поле ХХХ, в зависимости от того заполнено оно или нет, выводится текст 111 или 222.

[xfgiven_ХХХ]111[/xfgiven_ХХХ]
[xfnotgiven_ХХХ]222[/xfnotgiven_ХХХ]

111 и 222 отображаются просто как текст. как сделать его гиперссылкой?

Ответа пока нет


25 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 9 декабря 2020 13:14 -

[xfgiven_ХХХ]<a href="#">111</a>[/xfgiven_ХХХ]
[xfnotgiven_ХХХ]<a href="#">222</a>[/xfnotgiven_ХХХ]

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

chelovek42
Юзер

chelovek42 - 9 декабря 2020 13:21 -

Спасибо, но в этом случае при нажатии просто перекидывает вверх страницы.

dj-avtosh
PHP-developer

dj-avtosh - 9 декабря 2020 13:22 -

так Вы вместо решетки вставьте нужную Вам ссылку

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

chelovek42
Юзер

chelovek42 - 9 декабря 2020 13:37 -

Как показывает опыт, если мне отвечают что то не то, значит я не правильно спрашиваю. Вы мне прислали код на просто ссылку. Попробую расписать подробнее. ДОПУСТИМ есть 100 новостей, в каждой есть только одно доп поле ХХХ, в 30 новостях оно заполнено, в 70 нет. Что и куда нужно прописать, не редактируя вручную ВСЕ эти новости, чтобы их разделить для пользователей сайта.

Методом описаным выше я пытался разделить их с помощью гиперссылок в функции доп полей, но dle так не работает.

dj-avtosh
PHP-developer

dj-avtosh - 9 декабря 2020 15:58 -

Если кто-то реально поймет, что Вы имеете ввиду - тому я скину 100 рублей на баланс телефона.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

chelovek42
Юзер

chelovek42 - 9 декабря 2020 17:47 -

Ок))) Попробуем так, "если бы в дле работали хештеги". Есть 4 новости, у них у всех есть только одно заполненное, либо не заполненное, доп поле ХХХ. Если бы работали хештеги, то можно было бы прописать так:

[xfgiven_ХХХ]#111[/xfgiven_ХХХ]
[xfnotgiven_ХХХ]#222[/xfnotgiven_ХХХ]

А затем на сайте сделать 2 ссылки, <a href="#111">там где поле заполнено </a> , <a href="#111">там где поле не заполнено </a>, чтобы при переходе по #111 открывались все новости где поле ХХХ заполнено, а при переходе по #222 все где не заполнено.

Спасибо за терпение)

LazyDev
PHP-developer

LazyDev - 9 декабря 2020 19:01 -

[xfgiven_ХХХ]<a href="/xfsearch/[xfvalue_XXXX]/">111</a>[/xfgiven_ХХХ]
[xfnotgiven_ХХХ]<a href="/xfsearch/222/">222</a>[/xfnotgiven_ХХХ]

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

New-dev.ru
Эксперт

New-dev.ru - 9 декабря 2020 19:44 -

Вы можете создать ссылку для новостей, где заполнено поле XXX, но для тех новостей, где оно не заполнено - недостаточно лишь создать какую-то ссылку. В DLE просто нет возможности отобрать новости по такому принципу, это конечно надо порядочно дописывать, например, в engine.php

chelovek42
Юзер

chelovek42 - 9 декабря 2020 22:19 -

Похоже это правильный ответ, спасибо!

dj-avtosh
PHP-developer

dj-avtosh - 10 декабря 2020 10:42 -

Вы сразу не туда написали, надо было писать в стол. Вряд ли ответ New-dev.ru решил Вашу задачу.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

TeraMoune
Эксперт

TeraMoune - 10 декабря 2020 13:09 -

А использовать значение по умолчанию полю если оно не заполнено не вариант ? А выводить просто тегом xfvalue и тег выведет ссылку либо установленного значения либо присвоенного названия определяющее не назначенное поле.

Тестовый репозиторий установки плагинов: teramoune

dj-avtosh
PHP-developer

dj-avtosh - 10 декабря 2020 18:09 -

согласен тут

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

chelovek42
Юзер

chelovek42 - 10 декабря 2020 18:29 -

Использовать значение по умолчанию полю если оно не заполнено, вариант, согласен, хоть и есть уже 35000 новостей с этим полем, как его дописать разберусь, это решение. Но вот если оно уже заполнено, то в моем случае не поможет, так как содержимое всегда разное и имеет формат, допустим:

https://dle-faq.ru/faq/layoutquest/27749-kak-sdelat-znachenie-dopolnitelnogo-polya-giperssylkoy-esli-ono-ne-bylo-zadano

или

https://dle-faq.ru/user/TeraMoune/

в этом то и вопрос.

web102
Юзер

web102 - 11 декабря 2020 11:30 -

так надо значением по умолчанию заполнить только в тех новостях, где поле не заполнено, нет?

chelovek42
Юзер

chelovek42 - 11 декабря 2020 11:34 -

Таким образом мы получим ссылку на новости где поле не заполнено, это уже поняли. А как получить ссылку на новости где поле уже заполнено, если его содержимое всегда разное?

web102
Юзер

web102 - 11 декабря 2020 11:41 -

тогда иной подход: создать еще одно допполе, в котором прописать "да" или "нет" в зависимости от заполненности предыдущего поля, и вот это поле уже выводить ссылкой

chelovek42
Юзер

chelovek42 - 11 декабря 2020 16:55 -

Похоже вы единственный кто меня понял. В том то и вопрос. Как это сделать не в ручную?

Если

[xfgiven_ХХХ]111[/xfgiven_ХХХ]
[xfnotgiven_ХХХ]222[/xfnotgiven_ХХХ]

То 111 и 222 не являются гиперссылками.

web102
Юзер

web102 - 13 декабря 2020 10:18 -

создайте допполе, в котором будет "да" или "нет". Сделайте перестроение публикаций. Затем с помощью автозамены надо будет заменить
 "field_2|||field_1|" на "field_2|да||field_1|" заполняем ВСЕ поля field_2 (новое поле с да или нет) значением "да"

затем
"field_2|да||field_1|||" на "field_2|нет||field_1|||" заменяем значение "да" на "нет" в тех полях, где field_1 (имеющееся поле) не заполнено


Проще и правильнее, неверное, было-бы сделать это запросом, но... И да, не факт, что сработает моя версия. Но посыл, думаю, вам понятен.

PS: новое поле надо расположить ПЕРЕД старым (позиционирование в списке допполей).

dj-avtosh
PHP-developer

dj-avtosh - 11 декабря 2020 11:51 -

ТС пока сам не знает чего хочет.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

TeraMoune
Эксперт

TeraMoune - 11 декабря 2020 14:17 -

А как получить ссылку на новости где поле уже заполнено, если его содержимое всегда разное?

О перестроении публикаций слышали ?

Да и в принципе суть перекрёстных ссылок в выборке новостей по одинаковым значениям. А раз они всегда разные то какой смысл это делать ? Ну сделаете ссылки, а они будут всегда показывать 1 новость, ведь содержимое всегда разное. Это бред полный...

Тестовый репозиторий установки плагинов: teramoune

chelovek42
Юзер

chelovek42 - 11 декабря 2020 16:57 -

Почему же бред? Это поле изначально не планировалось как поле с гиперссылками.

TeraMoune
Эксперт

TeraMoune - 11 декабря 2020 18:33 -

Я про уникальность ссылок, что по ссылке будет выводить одну новость и смысла в перекрёстных ссылках никакого нету.

Тестовый репозиторий установки плагинов: teramoune

chelovek42
Юзер

chelovek42 - 11 декабря 2020 19:12 -

Как это НЕ РАБОТАЕТ понятно. Грубо говоря, есть 4 новости, где доп поле ХХХ заполнено следующим образом:

1. Новость: ХХХ = 111
2. Новость: ХХХ = 222
3. Новость: ХХХ = 333
4. Новость: ХХХ = (не заполнено)

Допустим, там где поле заполнено это контент на арабском языке, я там где не заполнено на немецком. Как их отсеять таким образом, чтобы пользователь мог выбрать какой язык ему нужен? Только учесть, что новостей на самом деле не 4, а 33000.

Может есть способ указать, если доп поле ХХХ заполнено, то доп поле YYY=777, если не заполнено, то YYY=888?
Естественно, чтобы значения поля YYY использовались как перекрестные гиперссылки.

Вот вроде бы все легко, только что то никак не придумывается...

TeraMoune
Эксперт

TeraMoune - 11 декабря 2020 23:19 -

Легко на словах но на словах легко и на луну отправится.

Может есть способ указать, если доп поле ХХХ заполнено, то доп поле YYY=777, если не заполнено, то YYY=888?
Естественно, чтобы значения поля YYY использовались как перекрестные гиперссылки.

Увы нету, перекрёстные ссылки появляются лишь когда добавляются\изменяются новости либо производится перестроение публикаций (При наличии поля и включённых перекрёстных ссылок). Никаких подобных условий стандартно не сделать.

Вам платно нужно искать человека, чтобы сделал скрипт обработки новостей и в цикле каждой новости присвоил новому полю определённые значения и чтобы хак написали который будет автоматом после обработки новостей уже поддерживать наличие нужного поля чтобы оно было заполнено, если лень самостоятельно назначать.

Тестовый репозиторий установки плагинов: teramoune

chelovek42
Юзер

chelovek42 - 12 декабря 2020 00:15 -

Согласен. Спасибо!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх