|
Убираем «Подробнее», если нет расширенного текста новости (Slaed 2.1 Lite)
Цитата | Vovich90
Я предлагаю написать урок, чтобы в модуле Новостей, если не имеется расширенного текста, не было кнопки подробнее. |
Что же, давайте разработаем хак под это дело, заодно поучимся искать нужное место в коде.
Итак, у нас есть слово Подробнее.
Можно, конечно, сразу пойти в модуль News и начать его искать там, но иногда бывает, что искомое слово зарезервировано в константах для всей системы сразу или может всплыть в служебных функциях, а так же в шаблонах (темах оформления), поэтому начнем искать от корня сайта.
1. Запускаем полнотекстовый поиск по всем файлам и ищем Подробнее, причем в опциях поиска поставим Учитывать регистр.
Результат поиска таков:
…/admin/language/lang-russian.php
…/modules/News/language/lang-russian.php
Ну в админке сайта нам делать нечего, а вот второй файл - это про нас.
2. Файл modules/News/language/lang-russian.php опять ищем Подробнее с учетом регистра.
Это строка define("_READMORE","Подробнее");
Небольшое лирическое отступление: define - определяет именованную константу, в данном случае используется для перевода служебных слов на сайте на различные языки посредством языковых файлов-помошников.
3. Админка модуля нам сейчас не интересна, поэтому сразу открываем modules/News/index.php и ищем там _READMORE.
Имеем два вхождения: function news и function cat. Первая у нас работает, когда мы находимся на главной модуля, вторая - когда смотрим новости, принадлежащие какой либо категории (по ссылке вида index.php?name=News&op=cat&catid=1).
Примечание: если посмотреть на код внимательно, то видно, что данные набираются в $morelink, а потом уходят в themeindex. Закомментируйте строку $morelink = … , что бы понять за что отвечает эта переменная.
4. Нашли, теперь вопрос: что с ней делать. Предлагаю использовать метод "Длинных единиц", т.е. окружим нашу переменную как показано ниже, так будет более понятно, что нам скрывать, если нет расширенного описания к новости.
Итак было
<td align=\"left\">$story_link<b>"._READMORE."</b></a> | "._PDATE.":
сделаем так
<td align=\"left\">1111 $story_link 22222222 <b> 3333333 "._READMORE." 4444444 </b> 5555555 </a> 66666666 | 7777777777 "._PDATE.":
Обновив главную модуля теперь хорошо видно, что всё "лишнее" находится между единичками и семерками.
Для начала просто разобьем набор переменной $morelink на 3 части: первая - начало таблицы, вторая - ссылка Подробнее, третье, всё, что идет после Подробнее.
Итак было
Код | 1
| $morelink = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"left\">$story_link<b>"._READMORE."</b></a> | "._PDATE.": $datetime | "._POSTEDBY.": $posted | "._READS.": $counter $m_com <td align=\"right\"><a href=\"index.php?name=News&op=printpage&sid=$s_sid\"><img src=\"images/blocks/Print.gif\" border=\"0\" alt=\""._PRINTER."\" title=\""._PRINTER."\" align=\"center\"></a> <a href=\"index.php?name=News&op=friendsend&sid=$s_sid\"><img src=\"images/blocks/Contact.gif\" border=\"0\" alt=\""._FRIEND."\" title=\""._FRIEND."\" align=\"center\"></a></td></tr></table>"; |
сделаем так
Код | 1 2 3
| $morelink = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"left\">";
$morelink .= "$story_link<b>"._READMORE."</b></a> | ";
$morelink .= ""._PDATE.": $datetime | "._POSTEDBY.": $posted | "._READS.": $counter $m_com <td align=\"right\"><a href=\"index.php?name=News&op=printpage&sid=$s_sid\"><img src=\"images/blocks/Print.gif\" border=\"0\" alt=\""._PRINTER."\" title=\""._PRINTER."\" align=\"center\"></a> <a href=\"index.php?name=News&op=friendsend&sid=$s_sid\"><img src=\"images/blocks/Contact.gif\" border=\"0\" alt=\""._FRIEND."\" title=\""._FRIEND."\" align=\"center\"></a></td></tr></table>"; |
И теперь повесим условие на вторую часть нашего кода
if ($bodytext != "") {$morelink .= "$story_link<b>"._READMORE."</b></a> | ";}
Т.е. "если Расширенный текст не пуст, то добавить в $morelink ссылку Подробнее".
5. Окончательно код будет выглядеть так
Код | 1 2 3
| $morelink = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"left\">";
if ($bodytext != "") {$morelink .= "$story_link<b>"._READMORE."</b></a> | ";}
$morelink .= ""._PDATE.": $datetime | "._POSTEDBY.": $posted | "._READS.": $counter $m_com <td align=\"right\"><a href=\"index.php?name=News&op=printpage&sid=$s_sid\"><img src=\"images/blocks/Print.gif\" border=\"0\" alt=\""._PRINTER."\" title=\""._PRINTER."\" align=\"center\"></a> <a href=\"index.php?name=News&op=friendsend&sid=$s_sid\"><img src=\"images/blocks/Contact.gif\" border=\"0\" alt=\""._FRIEND."\" title=\""._FRIEND."\" align=\"center\"></a></td></tr></table>"; |
И в заключение, как узнать, что в условии надо проверять именно $bodytext. Создайте новость, запомните, что писали в заголовке, тексте и расширенном тексте, посмотрите в таблице через phpMyAdmin в какие поля что попало, вот вам и ориентир. Переменная в коде обычно совпадает с названием поля таблицы.
Дата публикации: 01.03.2007 Прочитано: 14842 раз |
|
Комментарии
Serg_pnz | | | | | Дата: 03.09.2007 | Комментарий: 19 |
| | keeper, будет работать и на 3.0 - смотри чуть ниже посты под ником ТЮРЯГА, и мой ответ ему в "комментарие №9" Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот | | keeper | | | Дата: 03.09.2007 | Комментарий: 18 |
| | В 2.4 Lite работает на ура.
Даже разбираться нет надобности.
Респект! | | keeper | | | Дата: 03.09.2007 | Комментарий: 17 |
| | Спасибо.
Как нибудь поиграюсь.
Пока нет на это времени, поэтому и спросил.
Не рабочие идеи я как правило откладываю на неопределённый срок.
А жаль хотелось уже подключить эту функцию. А у меня она не работает.
Ещё раз спасибо за помощь.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ отредактированно 03.09.2007г. | | Serg_pnz | | | | | Дата: 02.09.2007 | Комментарий: 16 |
| | keeper, по моему яснее не напишешь.
Тут важен сам принцип: расставляем 111111111 и смотрим где эти единички вылезли, если вообще вылезли. Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот | | keeper | | | Дата: 02.09.2007 | Комментарий: 15 |
| | Серж подскажите плиз
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ отредактированно 02.09.2007г. | | keeper | | | Дата: 02.09.2007 | Комментарий: 14 |
| | версия 3.0
Ничего не понял.
Так как в не подходит обучение под мою версию. | | Sнэйк | | Дата: 25.05.2007 | Комментарий: 13 |
| | Спасибо. Буду знать ))) | | Serg_pnz | | | | | Дата: 24.05.2007 | Комментарий: 12 |
| | Sнэйк, ну во-первых есть еще строка (слово) "комментарии". Хотя это во-вторых.
А во-первых голосование так же можно вывести на страницу общего предварительного просмотра, и т.д. и т.п. всё зависит от фантазии веб-мастера.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ отредактированно 24.05.2007г. Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот | | Sнэйк | | Дата: 24.05.2007 | Комментарий: 11 |
| | А зачем убирать подробнее, если в подробнее можно голосовать за новость/файл и т.д. ??? Или я чёго-то не понимаю ??? | | SeGAD | | Дата: 24.05.2007 | Комментарий: 10 |
| | Всё отлично работает!!!!!!!!! СПАСИБО!!! |
|
|
Всего 19 на 2 страницах по 10 на каждой странице [ 1 | 2 ] [>>] |
|
|
|