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

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

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

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

Реализация

Я добавил еще несколько возможностей:
* Три месяца. Точнее, 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 можно залить содержимое архива в корень сайта, но только в том случае, если Вы уверены, что в этих файлах нет других хаков.

Как скачать

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

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

wmr 342960323367
яд 410011913797936
карточка сбербанка 67619600 0308703785

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

Я благодарен тем, кто подсказал мне эту идею.
Модуль ротации иконки сайта favicon.ico | Модуль для Первой ветки "Новогодняя гирлянда"
Комментарии (18)
RIf 12 декабря 2014 в 09:08 0
small user social cms
Вы, как всегда, на высоте странности.
Кирилл Эдуардович (Странник) 12 декабря 2014 в 10:02 +1
small user social cms
Спасибо))
letsgo 12 декабря 2014 в 12:31 +4
small user social cms
В объявлениях ставить " Ничего не делать" и объявление стоит хоть 100500 лет итак. А вот сделать "Просрочено", было бы весьма нужнее.
Кирилл Эдуардович (Странник) 13 декабря 2014 в 08:57 0
small user social cms
Дорогой друг, или я что-то не понимаю, или вы говорите о другом движке.

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

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

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

Хотя если кому-то понадобится поизвращаться - напишите мне в личку, я напишу ему такой хак. За деньги.
Кирилл Эдуардович (Странник) 13 декабря 2014 в 09:31 0
small user social cms
То, что Вы предлагаете - это настройка компонента целиком. А объявления могут быть разные. Я как раз и написал хак, позволяющий не делать ВСЕ объявления чохом вечными, а наряду с вечными объявлениями создавать обычные, срочные. Компрене ву?
Кирилл Эдуардович (Странник) 13 декабря 2014 в 09:14 0
small user social cms
Дорогие друзья, просьба всем, кто забрал у меня этот хак, скачать его заново. Я сейчас нашел в коде хака небольшую неточность (на функционал никак не влияющую), но тем не менее, неприятную, и в этой версии устраненную.

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

Спасибо.
letsgo 13 декабря 2014 в 11:31 +1
small user social cms
Странник гляньте настройки доски объявлений, прежде чем утверждать.

Кирилл Эдуардович (Странник) 13 декабря 2014 в 11:42 0
small user social cms
Думаете, я их не видел, перед тем, как писать хак? Эта настройка делает все до одного объявления вечными. Передо мной стояла задача - наряду с обычными, срочными объявлениями сделать объявления с большими сроками (на год) и вечными.
letsgo 13 декабря 2014 в 18:11 0
small user social cms
Если так, а потом вот так и вот тут сюда - можно применить ваше решение.

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

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

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

Ну это так, вдруг надумаете что то "странное сделать".
Кирилл Эдуардович (Странник) 14 декабря 2014 в 08:51 +2
small user social cms
Ой, ой, вы забыли про замену урлов написать еще. Как же без замены то?

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

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

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

Пишите дальше, улыбает.
VopisUVD 14 декабря 2014 в 14:58 0
small user social cms
Странник, я думаю что letsgo хотел сказать об общих проблемах компонента, а вы восприняли как критику к вашей разработке... Все знают что letsgo иногда сложно понять, но то о чем он сейчас говорит нужно делать! Просто надо четко сформулировать задачи...
Нужно конструктивное обсуждение проблем доски объявлений с выявлением всех проблем и возможных решений.
Raiden 14 декабря 2014 в 16:15 0
small user social cms
Что он хотел сказать - он сказал. И человека надо понимать без переводчика, коль на одном языке говорим
Кирилл Эдуардович (Странник) 14 декабря 2014 в 16:21 +3
small user social cms
Я уверен, что ту задачу, которую перед собой ставил, я выполнил.
Выполнив, поделился со всеми, бесплатно. Так еще и недовольны.
Если кому то нужен платный вариант доски объявлений, пусть готовит деньги и предоставляет подробное ТЗ. Тогда и критикует, по исполнении.
stealthdebuger 14 декабря 2014 в 19:53 +2
small user social cms
Верно сказано, молодца!
Keep 1 июля 2016 в 21:38 0
small user social cms
На 1.10.6 у меня не хочет работать, ставлю 90 или 180 дней, а при редактировании объявления всё равно пишет - Срок публикации: 50 дней, начиная с сегодня в 21:00.
Кирилл Эдуардович (Странник) 2 июля 2016 в 17:00 0
small user social cms
Признаюсь, этот хак делался для сайта на 1.10.3, который до сих пор работает.
Для более поздних версий хак не тестировался.

Только что просмотрел код в 1.10.6 и сравнил с кодом хака. В модели надо заменить две строчки, в шаблоне добавить строчки в двух местах. Не понимаю, что там можно сделать не так. Если сами не справитесь, пишите в личку.
Keep 3 июля 2016 в 01:27 0
small user social cms
В 1.10.6 немного не так, в model править ничего ненужно, а сделать правки в frontend, 50 заменить на своё число, ну и так же сделать правки в шаблоне, тогда всё заработает.
Спасибо.
Кирилл Эдуардович (Странник) 3 июля 2016 в 03:05 0
small user social cms
Неважно, в каком файле сделан хак, в модели или фронтэнде. Просто хак есть хак, то есть неизбежное зло)
Рад, что все заработало. Главное, идея кому-то пригодилась.