Перейти к публикации

Ссылка на полную версию с картинки в краткой версии


Рекомендованные сообщения

Сайт 21region.org

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

Есть ли какой то способ, кроме как лопатить все новости или базу, и ставить ссылки?

Ссылка на сообщение
Поделиться на других сайтах

Есть идея для этого модуля, или хака.

В show.custom.php нужно запросить первую картинку с таблицы dle_images. Затем вывести её в виде ссылки.

Есть ли специалисты которые могут сделать этот модуль?

Ссылка на сообщение
Поделиться на других сайтах

Опишите подробнее. Почему именно show.custom.php?

Может проще просто через парсер или прямо в show.short.php производить замену?

Ссылка на сообщение
Поделиться на других сайтах

Опишите подробнее. Почему именно show.custom.php?

Может проще просто через парсер или прямо в show.short.php производить замену?

Извиняюсь, перепутал имя файла, когда копировал через Total.

Действительно, думаю что нужно запрашивать в show.short.php

Именно мне было бы удобнее замена в show.short.php т.к. у меня уже есть база на 400 новостей, в которой уже в dle_post - short_story вставлены

<div align=\"center\"><!--TBegin--><a href=\"http://********/uploads/posts/2010-01/1263404702_image3.png\" onclick=\"return hs.expand(this)\" ><img style=\"border: none; margin: 5px;\" src=\"http://*********/uploads/posts/2010-01/thumbs/1263404702_image3.png\" alt=\'***\' title=\'***\'  /></a><!--TEnd--></div>

т.е. уже забиты тумбы.

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

Однако мне не сложно удалить тумбы. Удалять легче чем вписывать ссылки вообще вручную.

Был бы признателен, если бы кто то помог в разработке этого модуля. Он расширил бы возможности DLE.

Думаю что не мне одному это понадобится. Допустим в WordPress такая функция есть по умолчанию.

Ссылка на сообщение
Поделиться на других сайтах

Все равно не понял...

Видимо уже поздно, почти сутки не спал, а уже 5 утра. Плохо соображаю... :(

Давайте подробное ТЗ, на досуге напишу.

Ссылки должны быть применены только к тумбам или ко всем картинкам?

Ссылка на сообщение
Поделиться на других сайтах

Все равно не понял...

Видимо уже поздно, почти сутки не спал, а уже 5 утра. Плохо соображаю... :(

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

Давайте подробное ТЗ, на досуге напишу.

Ссылки должны быть применены только к тумбам или ко всем картинкам?

Если по простому, то план такой:

После установки этого модуля, всё картинки в краткой версии становятся ссылками, которые ведут в полную версию новости.

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

Спасибо.

Изменено пользователем Medik
Ссылка на сообщение
Поделиться на других сайтах

В файле show.short.php

найти:

if( $view_template == "rss" ) {
Перед этим добавить:
		if(preg_match("#<img src=(.+?)>#ie", $row['short_story'])) {


			$fulllinkfrom = array("<!--dle_image_begin:", "<!--dle_image_end-->", "<!--TBegin-->", "<!--TEnd-->");

			$fulllinkto = array("<a href=\"$full_link\" ><!--dle_image_begin:", "<!--dle_image_end--></a>", "<a href=\"$full_link\" ><!--TBegin-->", "<!--TEnd--></a>");


			$row['short_story'] = str_replace($fulllinkfrom, $fulllinkto, $row['short_story']);


			$row['short_story'] = preg_replace( "#<!--TBegin-->.+?<img(.+?)>.+?<!--TEnd-->#", "<!--TBegin--><img\\1><!--TEnd-->", $row['short_story'] );

		}

Ссылка на сообщение
Поделиться на других сайтах

В файле show.short.php

найти:

if( $view_template == "rss" ) {
Перед этим добавить:
		if(preg_match("#<img src=(.+?)>#ie", $row['short_story'])) {


			$fulllinkfrom = array("<!--dle_image_begin:", "<!--dle_image_end-->", "<!--TBegin-->", "<!--TEnd-->");

			$fulllinkto = array("<a href=\"$full_link\" ><!--dle_image_begin:", "<!--dle_image_end--></a>", "<a href=\"$full_link\" ><!--TBegin-->", "<!--TEnd--></a>");


			$row['short_story'] = str_replace($fulllinkfrom, $fulllinkto, $row['short_story']);


			$row['short_story'] = preg_replace( "#<!--TBegin-->.+?<img(.+?)>.+?<!--TEnd-->#", "<!--TBegin--><img\\1><!--TEnd-->", $row['short_story'] );

		}

Попробовал на http://tvorite.ru (Лицензия имеется, активирована).

Картинки по прежнему открываются в виде увеличенных изображений...

Ссылка на сообщение
Поделиться на других сайтах

Попробуйте так:

                if(preg_match("#<img(.+?)>#ie", $row['short_story'])) {


                        $fulllinkfrom = array("<!--dle_image_begin:", "<!--dle_image_end-->", "<!--TBegin-->", "<!--TEnd-->");

                        $fulllinkto = array("<a href=\"$full_link\" ><!--dle_image_begin:", "<!--dle_image_end--></a>", "<a href=\"$full_link\" ><!--TBegin-->", "<!--TEnd--></a>");


                        $row['short_story'] = str_replace($fulllinkfrom, $fulllinkto, $row['short_story']);


                        $row['short_story'] = preg_replace( "#<!--TBegin-->.+?<img(.+?)>.+?<!--TEnd-->#", "<!--TBegin--><img\\1><!--TEnd-->", $row['short_story'] );

                }

Ссылка на сообщение
Поделиться на других сайтах

Попробуйте так:

                if(preg_match("#<img(.+?)>#ie", $row['short_story'])) {


                        $fulllinkfrom = array("<!--dle_image_begin:", "<!--dle_image_end-->", "<!--TBegin-->", "<!--TEnd-->");

                        $fulllinkto = array("<a href=\"$full_link\" ><!--dle_image_begin:", "<!--dle_image_end--></a>", "<a href=\"$full_link\" ><!--TBegin-->", "<!--TEnd--></a>");


                        $row['short_story'] = str_replace($fulllinkfrom, $fulllinkto, $row['short_story']);


                        $row['short_story'] = preg_replace( "#<!--TBegin-->.+?<img(.+?)>.+?<!--TEnd-->#", "<!--TBegin--><img\\1><!--TEnd-->", $row['short_story'] );

                }

Супер. Работает!

Огромное спасибо.

P.S.: Думаю что было бы логично добавить эту функцию в настройки в админ-центре, т.е. дать пользователям возможность включать или выключать функцию через админку...

Изменено пользователем Medik
Ссылка на сообщение
Поделиться на других сайтах

kangalexey, сейчас если в краткой версии просто картинка, а не эскиз, нету ссылки на полную новость.

Вы не могли бы дописать и эту функцию?

Изменено пользователем Medik
Ссылка на сообщение
Поделиться на других сайтах

Просто у вас обычные изображения добавляются без комментариев типа

<!--dle_image_begin

Почему это происходит я не знаю, если дадите объяснение, то перепишу код.

Ссылка на сообщение
Поделиться на других сайтах

Просто у вас обычные изображения добавляются без комментариев типа

<!--dle_image_begin

Почему это происходит я не знаю, если дадите объяснение, то перепишу код.

Я проанализировал файлы DLE.

Оказывается dle_image_begin появился в последней версии DLE 8.3

Все остальные версии не будут работать :(

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

Думаю что тут нужно либо обновлять парсер parse.class.php, что невозможно при не имении лицензии, или изменять парсер самому, и дописывать туда свой код.

Изменено пользователем Medik
Ссылка на сообщение
Поделиться на других сайтах

Сайт 21region.org

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

Есть ли какой то способ, кроме как лопатить все новости или базу, и ставить ссылки?

На новые новости можно сделать очень просто используя стандартные средства движка через дополнительные поля новостей

В админ панели добавить в Дополнительные поля новостей

Название поле- picture

Тип поля - Одна строка

Значение по умолчанию - http:// {указываю путь к картинки при добавление новости, которую загружаю через upload}

В shortstory.tpl изменить:

<tr>

<td style="width: 225px;">[xfgiven_picture][full-link]<img src="[xfvalue_picture]" width="200" height="150" border="0" align="left" alt="" />[/full-link][/xfgiven_picture]&nbsp;</td>

<td>{short-story}</td>

</tr>

как это выглядит:

http://www.clipso.name/stock/

Изменено пользователем leksey
Ссылка на сообщение
Поделиться на других сайтах

Сайт 21region.org

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

Есть ли какой то способ, кроме как лопатить все новости или базу, и ставить ссылки?

На новые новости можно сделать очень просто используя стандартные средства движка через дополнительные поля новостей

В админ панели добавить в Дополнительные поля новостей

Название поле- picture

Тип поля - Одна строка

Значение по умолчанию - http:// {указываю путь к картинки при добавление новости, которую загружаю через upload}

В shortstory.tpl изменить:

<tr>

<td style="width: 225px;">[xfgiven_picture][full-link]<img src="[xfvalue_picture]" width="200" height="150" border="0" align="left" alt="" />[/full-link][/xfgiven_picture]&nbsp;</td>

<td>{short-story}</td>

</tr>

как это выглядит:

http://www.clipso.name/stock/

C таким же успехом можно руками вписывать ссылки после публикации новости. По трудозатратам примерно одно и то же.

Ссылка на сообщение
Поделиться на других сайтах

Сайт 21region.org

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

Есть ли какой то способ, кроме как лопатить все новости или базу, и ставить ссылки?

На новые новости можно сделать очень просто используя стандартные средства движка через дополнительные поля новостей

В админ панели добавить в Дополнительные поля новостей

Название поле- picture

Тип поля - Одна строка

Значение по умолчанию - http:// {указываю путь к картинки при добавление новости, которую загружаю через upload}

В shortstory.tpl изменить:

<tr>

<td style="width: 225px;">[xfgiven_picture][full-link]<img src="[xfvalue_picture]" width="200" height="150" border="0" align="left" alt="" />[/full-link][/xfgiven_picture]&nbsp;</td>

<td>{short-story}</td>

</tr>

как это выглядит:

http://www.clipso.name/stock/

C таким же успехом можно руками вписывать ссылки после публикации новости. По трудозатратам примерно одно и то же.

для новых новостей почти никаких трудозатрат, на вашем сайте и так много доп полей при добавление новости, просто появится еще одно поле

Так на основе этого попробовать написат хак, что б все это сделать, картинка к короткой новости уже загружена...

Изменено пользователем leksey
Ссылка на сообщение
Поделиться на других сайтах

Я проанализировал файлы DLE.

Оказывается dle_image_begin появился в последней версии DLE 8.3

Все остальные версии не будут работать

ОК, на досуге перепишу код под ваши нужды.

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

Думаю что тут нужно либо обновлять парсер parse.class.php, что невозможно при не имении лицензии, или изменять парсер самому, и дописывать туда свой код.

А у вас что нет лицензии?

Ссылка на сообщение
Поделиться на других сайтах

А у вас что нет лицензии?

На одном из проектов у меня есть актуальная лицензия, можно обновить скрипты до актуальной версии.

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

С точки зрения продавца скрипты выгодно сказать: "Обновляйтесь, и всё будет работать".

С точки зрения универсального модуля, нужно либо доработать модуль, либо обновить parse.class.php.

Взять кусок кода с parse.class.php будет считаться воровством.

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

Либо приписать свою разметку в parse.class.php, которую потом проверять в show.custom.php и делать ссылки на выходе. Но это плохой вариант, т.к. старые новости не будут работать.

P.S.: В принципе, того что вы написали лично мне хватило. Спасибо за помощь.

Изменено пользователем Medik
Ссылка на сообщение
Поделиться на других сайтах

P.S.: В принципе, того что вы написали лично мне хватило. Спасибо за помощь.

Я же написал:

ОК, на досуге перепишу код под ваши нужды.

Значит можно не писать?

Ссылка на сообщение
Поделиться на других сайтах

Значит можно не писать?

Думаю если вы напишете универсальный модуль, вам скажут спасибо все пользователи DLE, и это будет полноценный хак для DLE.

Ссылка на сообщение
Поделиться на других сайтах

Думаю если вы напишете универсальный модуль, вам скажут спасибо все пользователи DLE, и это будет полноценный хак для DLE.

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

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

примерно так:

[code][url=link][img=img_link][/url]

То на выходе получится что одна ссылка будет внутри другой.

Но на работе это никак не скажется, так как, в любом случае, будет действовать та ссылка, которая будет ближе охватывать картинку. Такой приоритет HTML'а.

Поэтому недочетом это назвать сложно.

Плюс есть небольшая нагрузка на PHP, а если учитывать каждую версию, то эта нагрузка возрастет.

Ссылка на сообщение
Поделиться на других сайтах
  • 5 месяцев спустя...

C таким же успехом можно руками вписывать ссылки после публикации новости. По трудозатратам примерно одно и то же.

для новых новостей почти никаких трудозатрат, на вашем сайте и так много доп полей при добавление новости, просто появится еще одно поле

Так на основе этого попробовать написат хак, что б все это сделать, картинка к короткой новости уже загружена...

Нашел хак как можно сделать кликабельныю картинку описано здесь http://4dle.ru/hacks/1147158861-vyvod-kartinki-tegom.html

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Попробуйте так:

                if(preg_match("#<img(.+?)>#ie", $row['short_story'])) {


                        $fulllinkfrom = array("<!--dle_image_begin:", "<!--dle_image_end-->", "<!--TBegin-->", "<!--TEnd-->");

                        $fulllinkto = array("<a href=\"$full_link\" ><!--dle_image_begin:", "<!--dle_image_end--></a>", "<a href=\"$full_link\" ><!--TBegin-->", "<!--TEnd--></a>");


                        $row['short_story'] = str_replace($fulllinkfrom, $fulllinkto, $row['short_story']);


                        $row['short_story'] = preg_replace( "#<!--TBegin-->.+?<img(.+?)>.+?<!--TEnd-->#", "<!--TBegin--><img\\1><!--TEnd-->", $row['short_story'] );

                }

Супер. Работает!

Огромное спасибо.

P.S.: Думаю что было бы логично добавить эту функцию в настройки в админ-центре, т.е. дать пользователям возможность включать или выключать функцию через админку...

Хак работает только для шаблона shortstory.tpl

Каким образом заставить его работать и с другими шаблонами, созданными для отображения короткой новости?

Ссылка на сообщение
Поделиться на других сайтах

Не уверен - нужно проверять, - но вроде дело в регулярке. Что там выводится на сайте по умолчанию - не смотрел, поэтому вслепую...

Эту строку:

$row['short_story'] = preg_replace( "#<!--TBegin-->.+?<img(.+?)>.+?<!--TEnd-->#", "<!--TBegin--><img\\1><!--TEnd-->", $row['short_story'] );
Заменить на:
$row['short_story'] = preg_replace( "#<!--TBegin-->.*?<img([^>]*)>.*?<!--TEnd-->#", "<!--TBegin--><img\\1><!--TEnd-->", $row['short_story'] );
Но скорее всего так (кажись, промежуточная ссыль мешает):
$row['short_story'] = preg_replace( "#<!--TBegin-->(?:<[^>]*>)?<img([^>]*)>(?:<[^>]*>)?<!--TEnd-->#", "<!--TBegin--><img\\1><!--TEnd-->", $row['short_story'] );

Учёт необязательных скобок не помню - нужен или нет в регулярке? - в общем получится либо <img\\1>, либо <img\\2>.

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

Ссылка на сообщение
Поделиться на других сайтах

Всё остаётся без изменений

я так понимаю что проблема здесь не в шаблона и т.д.

а в методе выбора из бд

вот этой конструкцией {custom category="2,7" template="custom" aviable="global" from="0" limit="10" cache="yes"} выбор из бд происходит напрямую и не обрабатывается этим хаком

Может кто подскажет решение?

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...