Хак "Вечное объявление" для 1.10.х

+26
2.36K

Данный хак позволяет создать «вечное» объявление.

Постановка задачи

Столкнулся с тем, что стандартный движок не позволяет создать объявлений на достаточно длительный срок. Максимум, на что можно рассчитывать — это пятьдесят дней.

Реализация

Я добавил еще несколько возможностей:
* Три месяца. Точнее, 92 дня.
* Год. 366 дней.
* Вечное объявление. 2147483647 дней или 5 883 517 лет. Думаю, почти шести миллионов лет вполне достаточно, чтобы объявление можно было называть вечным )))

Это число 2147483647 — максимально возможное целое положительное число, которое может хранится в поле pubdays таблицы cms_board_items. Для этого поля установлен тип int(11), поэтому это поле может хранить целое число от -2147483647 до +2147483647. Все просто.

Измененные файлы

components/board/model.php
templates/_default_/components/com_board_edit.tpl

Если Вы используете шаблон, отличный от дефолтного, файл com_board_edit.tpl следует перебросить в свой шаблон.

Версии движка

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

Как ставить хак на движок

1. Распаковать архив в любое место.
2. Смержить упомянутые выше файлы. Для версии 1.10.4 можно залить содержимое архива в корень сайта, но только в том случае, если Вы уверены, что в этих файлах нет других хаков.

Как скачать

Скачать можно тут, бесплатно, то есть даром.

Куда говорить спасибо

Плюсик в карму поставьте :)

Благодарности

Я благодарен тем, кто подсказал мне эту идею.

0
RIf RIf 9 лет назад #
Вы, как всегда, на высоте странности.
+1
Странник Странник 9 лет назад #
Спасибо))
+3
letsgo letsgo 9 лет назад #
В объявлениях ставить " Ничего не делать" и объявление стоит хоть 100500 лет итак. А вот сделать "Просрочено", было бы весьма нужнее.
0
Странник Странник 9 лет назад #
Дорогой друг, или я что-то не понимаю, или вы говорите о другом движке.

В стандартном движке Первой ветки нет регулировки "Ничего не делать". Регулировка "не делать" относится к vip-объявлению и на срок показа объявления не влияет. В коде модели доски объявлений, в методе getAdverts() где и вычисляется число непросроченных объявлений (эти записи и передаются в файл com_board_items.tpl) значение поля vipdate вообще никак не влияет на вычисление числа непросроченных объявлений.

Смысл моего хака в том и заключается, чтобы сделать вечное объявление, у которого срок публикации достаточно велик и у которого никогда не выводится пометка "Просрочено".

Я не знаю, что Вы имели ввиду, когда написали "А вот сделать "Просрочено", было бы весьма нужнее." Будьте добры - излагайте свои мысли яснее. Эта функция и так реализована в стандартном движке, когда объявление просматривает пользователь от модератора и выше. Простой пользователь просроченных объявлений не увидит. Конечно, можно сделать, чтобы он их видел, с пометкой "Просрочено" - достаточно вызвать метод getAdverts() с первым параметром, равным true. Только вот нафига пользователю видеть просроченные объявления - я никак понять не с состоянии.

Хотя если кому-то понадобится поизвращаться - напишите мне в личку, я напишу ему такой хак. За деньги.
0
Странник Странник 9 лет назад #
То, что Вы предлагаете - это настройка компонента целиком. А объявления могут быть разные. Я как раз и написал хак, позволяющий не делать ВСЕ объявления чохом вечными, а наряду с вечными объявлениями создавать обычные, срочные. Компрене ву?
0
Странник Странник 9 лет назад #
Дорогие друзья, просьба всем, кто забрал у меня этот хак, скачать его заново. Я сейчас нашел в коде хака небольшую неточность (на функционал никак не влияющую), но тем не менее, неприятную, и в этой версии устраненную.

В основной записи ссылка на скачивания тоже исправлена.

Спасибо.
0
letsgo letsgo 9 лет назад #
Странник гляньте настройки доски объявлений, прежде чем утверждать.

0
Странник Странник 9 лет назад #
Думаете, я их не видел, перед тем, как писать хак? Эта настройка делает все до одного объявления вечными. Передо мной стояла задача - наряду с обычными, срочными объявлениями сделать объявления с большими сроками (на год) и вечными.
-1
letsgo letsgo 9 лет назад #
Если так, а потом вот так и вот тут сюда - можно применить ваше решение.

Но как правило вообще нельзя допускать прыгания страниц с ошибкой 404 - отсюда правильно будет всем поставить "Ничего не делать". То есть ваш вариант предполагает, что будут удаляться объявления - а это весьма плохо в отношениях с поисковиком. Отсюда и мой пессимизм к доработке.

Сделали да и бог с ним. Просто задача не решается. Для объявлений ведь что нужно:

- Похожие объявления (плагин Марата)
- Возможность удалять в админке пачками
- Указание неактуальности объявления для пользователя
- Нормальный поиск в админке по объявлениям
- Модуль "релеватные объявления" из того же раздела

Ну это так, вдруг надумаете что то "странное сделать".
+2
Странник Странник 9 лет назад #
Ой, ой, вы забыли про замену урлов написать еще. Как же без замены то?

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

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

Вы пишете "задача не решается", когда я задачу, которую сам перед собой сформулировал, решил. А решив, выложил для всеобщего пользования. Получается, вам все равно что писать, лишь бы написать в пику?

Пишите дальше, улыбает.
0
VopisUVD VopisUVD 9 лет назад #
Странник, я думаю что letsgo хотел сказать об общих проблемах компонента, а вы восприняли как критику к вашей разработке... Все знают что letsgo иногда сложно понять, но то о чем он сейчас говорит нужно делать! Просто надо четко сформулировать задачи...
Нужно конструктивное обсуждение проблем доски объявлений с выявлением всех проблем и возможных решений.
0
Raiden Raiden 9 лет назад #
Что он хотел сказать - он сказал. И человека надо понимать без переводчика, коль на одном языке говорим
+3
Странник Странник 9 лет назад #
Я уверен, что ту задачу, которую перед собой ставил, я выполнил.
Выполнив, поделился со всеми, бесплатно. Так еще и недовольны.
Если кому то нужен платный вариант доски объявлений, пусть готовит деньги и предоставляет подробное ТЗ. Тогда и критикует, по исполнении.
+2
stealthdebuger stealthdebuger 9 лет назад #
Верно сказано, молодца!
0
Keep Keep 7 лет назад #
На 1.10.6 у меня не хочет работать, ставлю 90 или 180 дней, а при редактировании объявления всё равно пишет - Срок публикации: 50 дней, начиная с сегодня в 21:00.
0
Странник Странник 7 лет назад #
Признаюсь, этот хак делался для сайта на 1.10.3, который до сих пор работает.
Для более поздних версий хак не тестировался.

Только что просмотрел код в 1.10.6 и сравнил с кодом хака. В модели надо заменить две строчки, в шаблоне добавить строчки в двух местах. Не понимаю, что там можно сделать не так. Если сами не справитесь, пишите в личку.
0
Keep Keep 7 лет назад #
В 1.10.6 немного не так, в model править ничего ненужно, а сделать правки в frontend, 50 заменить на своё число, ну и так же сделать правки в шаблоне, тогда всё заработает.
Спасибо.
0
Странник Странник 7 лет назад #
Неважно, в каком файле сделан хак, в модели или фронтэнде. Просто хак есть хак, то есть неизбежное зло)
Рад, что все заработало. Главное, идея кому-то пригодилась.

Еще от автора

Адаптация компонента "Закладки" от 19 января 2011 к коробочной версии 1.10.7
На форуме появилась тема с пожеланиями адаптировать довольно старый компонент "Instant Bookmarks" Fuze к современным реалиям.
Утилита "Садовод" для версии InstantCMS 1.10.7.008
В этой краткой заметке описывается утилита "Садовод" для ремонта деревьев версии InstantCMS 1.10.7.008.
Изменение компонента "Баннеры" для будущей  версии 1.10.7.008
Данная статья рассказывает всем ждущим новую версию 008, что нового ожидается в будущем релизе версии 1.10.7.008.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.