Medik 6 Опубликовано: 25 марта 2010 Рассказать Опубликовано: 25 марта 2010 Сайт 21region.org Есть необходимость, что бы с эскизов, которые находятся в краткой версии, можно было кликом перейти в полную версию. Есть ли какой то способ, кроме как лопатить все новости или базу, и ставить ссылки? Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 26 марта 2010 Рассказать Опубликовано: 26 марта 2010 Автор Есть идея для этого модуля, или хака. В show.custom.php нужно запросить первую картинку с таблицы dle_images. Затем вывести её в виде ссылки. Есть ли специалисты которые могут сделать этот модуль? Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 26 марта 2010 Рассказать Опубликовано: 26 марта 2010 Опишите подробнее. Почему именно show.custom.php? Может проще просто через парсер или прямо в show.short.php производить замену? Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 26 марта 2010 Рассказать Опубликовано: 26 марта 2010 Автор Опишите подробнее. Почему именно 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 такая функция есть по умолчанию. Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 26 марта 2010 Рассказать Опубликовано: 26 марта 2010 Все равно не понял... Видимо уже поздно, почти сутки не спал, а уже 5 утра. Плохо соображаю... Давайте подробное ТЗ, на досуге напишу. Ссылки должны быть применены только к тумбам или ко всем картинкам? Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 26 марта 2010 Рассказать Опубликовано: 26 марта 2010 Автор Все равно не понял... Видимо уже поздно, почти сутки не спал, а уже 5 утра. Плохо соображаю... Наверное моя вина, не очень толково расписал мысль... Давайте подробное ТЗ, на досуге напишу. Ссылки должны быть применены только к тумбам или ко всем картинкам? Если по простому, то план такой: После установки этого модуля, всё картинки в краткой версии становятся ссылками, которые ведут в полную версию новости. Желательно что бы модуль не вносил изменение в базу данных, а выводил ссылки во время вывода новости, что бы была возможность просто выключить модуль. Спасибо. Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 27 марта 2010 Рассказать Опубликовано: 27 марта 2010 В файле 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'] ); } Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 27 марта 2010 Рассказать Опубликовано: 27 марта 2010 Автор В файле 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 (Лицензия имеется, активирована). Картинки по прежнему открываются в виде увеличенных изображений... Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 27 марта 2010 Рассказать Опубликовано: 27 марта 2010 Попробуйте так: 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'] ); } Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 27 марта 2010 Рассказать Опубликовано: 27 марта 2010 Автор Попробуйте так: 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 6 Опубликовано: 28 марта 2010 Рассказать Опубликовано: 28 марта 2010 Автор kangalexey, сейчас если в краткой версии просто картинка, а не эскиз, нету ссылки на полную новость. Вы не могли бы дописать и эту функцию? Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 28 марта 2010 Рассказать Опубликовано: 28 марта 2010 Просто у вас обычные изображения добавляются без комментариев типа <!--dle_image_begin Почему это происходит я не знаю, если дадите объяснение, то перепишу код. Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 28 марта 2010 Рассказать Опубликовано: 28 марта 2010 Автор Просто у вас обычные изображения добавляются без комментариев типа <!--dle_image_begin Почему это происходит я не знаю, если дадите объяснение, то перепишу код. Я проанализировал файлы DLE. Оказывается dle_image_begin появился в последней версии DLE 8.3 Все остальные версии не будут работать Я так понимаю сложность заключается в том, что в новости может быть картинка в виде ссылки, и если парсить её, то ссылка будет просто вложена одна в другую. Думаю что тут нужно либо обновлять парсер parse.class.php, что невозможно при не имении лицензии, или изменять парсер самому, и дописывать туда свой код. Ссылка на сообщение Поделиться на других сайтах
leksey 0 Опубликовано: 28 марта 2010 Рассказать Опубликовано: 28 марта 2010 Сайт 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] </td> <td>{short-story}</td> </tr> как это выглядит: http://www.clipso.name/stock/ Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 28 марта 2010 Рассказать Опубликовано: 28 марта 2010 Автор Сайт 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] </td> <td>{short-story}</td> </tr> как это выглядит: http://www.clipso.name/stock/ C таким же успехом можно руками вписывать ссылки после публикации новости. По трудозатратам примерно одно и то же. Ссылка на сообщение Поделиться на других сайтах
leksey 0 Опубликовано: 28 марта 2010 Рассказать Опубликовано: 28 марта 2010 Сайт 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] </td> <td>{short-story}</td> </tr> как это выглядит: http://www.clipso.name/stock/ C таким же успехом можно руками вписывать ссылки после публикации новости. По трудозатратам примерно одно и то же. для новых новостей почти никаких трудозатрат, на вашем сайте и так много доп полей при добавление новости, просто появится еще одно поле Так на основе этого попробовать написат хак, что б все это сделать, картинка к короткой новости уже загружена... Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 29 марта 2010 Рассказать Опубликовано: 29 марта 2010 Я проанализировал файлы DLE. Оказывается dle_image_begin появился в последней версии DLE 8.3 Все остальные версии не будут работать ОК, на досуге перепишу код под ваши нужды. Я так понимаю сложность заключается в том, что в новости может быть картинка в виде ссылки, и если парсить её, то ссылка будет просто вложена одна в другую. Думаю что тут нужно либо обновлять парсер parse.class.php, что невозможно при не имении лицензии, или изменять парсер самому, и дописывать туда свой код. А у вас что нет лицензии? Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 29 марта 2010 Рассказать Опубликовано: 29 марта 2010 Автор А у вас что нет лицензии? На одном из проектов у меня есть актуальная лицензия, можно обновить скрипты до актуальной версии. На другом проекте лицензия есть, но нет права обновлять скрипты, т.к. годовая лицензия закончилась. С точки зрения продавца скрипты выгодно сказать: "Обновляйтесь, и всё будет работать". С точки зрения универсального модуля, нужно либо доработать модуль, либо обновить parse.class.php. Взять кусок кода с parse.class.php будет считаться воровством. Поэтому, для старых версий, нужно либо постараться написать модуль универсально, допустим проверять что бы картинка не была ссылкой, и только тогда делать ссылку. Либо приписать свою разметку в parse.class.php, которую потом проверять в show.custom.php и делать ссылки на выходе. Но это плохой вариант, т.к. старые новости не будут работать. P.S.: В принципе, того что вы написали лично мне хватило. Спасибо за помощь. Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 29 марта 2010 Рассказать Опубликовано: 29 марта 2010 P.S.: В принципе, того что вы написали лично мне хватило. Спасибо за помощь. Я же написал: ОК, на досуге перепишу код под ваши нужды. Значит можно не писать? Ссылка на сообщение Поделиться на других сайтах
Medik 6 Опубликовано: 29 марта 2010 Рассказать Опубликовано: 29 марта 2010 Автор Значит можно не писать? Думаю если вы напишете универсальный модуль, вам скажут спасибо все пользователи DLE, и это будет полноценный хак для DLE. Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 29 марта 2010 Рассказать Опубликовано: 29 марта 2010 Думаю если вы напишете универсальный модуль, вам скажут спасибо все пользователи DLE, и это будет полноценный хак для DLE. Нет, универсальный я писать не буду. Тот что я написал он своего рода универсален, но только под версии, как вы заметили, выше 8.3 Его недочет состоит в том, что если картинка будет скрыта под ссылку средствами тегов примерно так: [code][url=link][img=img_link][/url] То на выходе получится что одна ссылка будет внутри другой. Но на работе это никак не скажется, так как, в любом случае, будет действовать та ссылка, которая будет ближе охватывать картинку. Такой приоритет HTML'а. Поэтому недочетом это назвать сложно. Плюс есть небольшая нагрузка на PHP, а если учитывать каждую версию, то эта нагрузка возрастет. Ссылка на сообщение Поделиться на других сайтах
leksey 0 Опубликовано: 16 сентября 2010 Рассказать Опубликовано: 16 сентября 2010 C таким же успехом можно руками вписывать ссылки после публикации новости. По трудозатратам примерно одно и то же. для новых новостей почти никаких трудозатрат, на вашем сайте и так много доп полей при добавление новости, просто появится еще одно поле Так на основе этого попробовать написат хак, что б все это сделать, картинка к короткой новости уже загружена... Нашел хак как можно сделать кликабельныю картинку описано здесь http://4dle.ru/hacks/1147158861-vyvod-kartinki-tegom.html Ссылка на сообщение Поделиться на других сайтах
Luci 0 Опубликовано: 30 сентября 2010 Рассказать Опубликовано: 30 сентября 2010 Попробуйте так: 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 Каким образом заставить его работать и с другими шаблонами, созданными для отображения короткой новости? Ссылка на сообщение Поделиться на других сайтах
zgr 72 Опубликовано: 6 октября 2010 Рассказать Опубликовано: 6 октября 2010 Не уверен - нужно проверять, - но вроде дело в регулярке. Что там выводится на сайте по умолчанию - не смотрел, поэтому вслепую... Эту строку: $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, вы в асе пропали, поэтому так попробуйте, если не заработает, то тогда не знаю где и что ковырять... нужно всё распечатывать и проверять новости, мне сейчас эксперементировать некогда. Ссылка на сообщение Поделиться на других сайтах
Luci 0 Опубликовано: 6 октября 2010 Рассказать Опубликовано: 6 октября 2010 Всё остаётся без измененийя так понимаю что проблема здесь не в шаблона и т.д. а в методе выбора из бд вот этой конструкцией {custom category="2,7" template="custom" aviable="global" from="0" limit="10" cache="yes"} выбор из бд происходит напрямую и не обрабатывается этим хаком Может кто подскажет решение? Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Архивировано
Эта тема находится в архиве и закрыта для публикации сообщений.