Переключатель шаблонов короткой новости для DLE

Переключатель шаблонов короткой новости

Переключатель шаблонов короткой новости

Легкое переключение шаблона короткой новости: блоки, список, плитка и т.п.
Данный метод является своего рода продолжением предыдущей статьи.
Принцип его работы почти такой же, переключение выполняется чисто на JS без использования PHP.
Плюсы:
[+] Простота установки
[+] Гибкость и масштабируемость (можно создать любое количество вариантов шаблона)

Минусы:
[-] Работает на JS, поэтому пока не будет полностью загружена страница - будет отображаться стандартный шаблон.
[-] Сложность в настройке шаблона (сложно для рядового пользователя, не для верстальщика).

Скриншоты
Переключатель шаблонов короткой новости

Переключатель шаблонов короткой новости

Переключатель шаблонов короткой новости


 CSS







Принцип действия устроен на простом добавлении класса к заданному селектору.
К примеру есть шаблон shortstory.tpl
<div class="showshort">
тут содержимое
</div>

Используем вызов функции
	templateSwitcherBySander('.showshort');

При переключения на "Список" к заданному селектору будет добавлен класс tpl_list, в итоге код в шаблоне получится
<div class="showshort tpl_list">
тут содержимое
</div>

Думаю нет необходимости описывать как настраивать шаблон с классом
.showshort.tpl_list {}



Версия DLE: любая

Демо: auto.sandev.pro


С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (11)
  1. foto
    Гость 13 февраля 2019 14:58 #
    Какой фильтр стоит на демо сайте?
    0
    1. foto
      Администратор 13 февраля 2019 15:17 #
      У него нет названия и он не закончен.
      0
  2. foto
    Посетитель 15 февраля 2019 20:46 #
    Не очень оно когда видно переключение при обновлении страницы, это повезёт тем у кого скрипт на прелодер. Но вот у вас пока не загрузятся все файлы и страница то переключение не произойдёт.

    Да и содержание шаблонов может быть разным и надо действительно шаблоны в чём и задумка, а вы уже просто сделали Переключатель шаблоновклассов короткой новости.

    Уж лучше бы свой первый вариант доделали.
    +1
    1. foto
      Администратор 16 февраля 2019 12:41 #
      Уж лучше бы свой первый вариант доделали.

      Первый вариант был реализован по схожему принципу, только немного хуже. Там сразу выводились 3 отдельных шаблона и стилями отображался нужны блок. Т.е. было излишнее дублирование контента.

      Вариант на php тоже вполне можно реализовать, ничего сложного. Но пока не охота. Делать лишь бы как не хочу, а на более тщательную проработку нет времени.
      0
      1. foto
        Посетитель 17 февраля 2019 07:22 #
        Первый вариант был реализован по схожему принципу, только немного хуже.


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

        Вы хоть смотрели его ?)

        Проблема с кэшем была устранена через 15-20 минут после того как я ответил человеку который установил мой вариант обновы вашего первого. Сейчас он работает как надо.

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

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

        Наверное ваше `Высочество' не позволяет вам смотреть и воспринимать работы более мелких кодеров или хоть как-то считаться с ними. Я вот даже не помню, чтобы вы прокомментировали мои изменения.

        Вы реально на столько высокого о себе мнения ?
        0
        1. foto
          Администратор 17 февраля 2019 10:01 #
          Я вот даже не помню, чтобы вы прокомментировали мои изменения.

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

          Ну установил я значение /../main.tpl в cookies, получаю следующее Template not found: /templates/smartphone/main.tpl.tpl

          При написании комментария я ошибся и на автопилоте дописал .tpl, без него уже без всяких ошибок будет подключен родной main.tpl Так же в cookies можно прописать /../main.tpl?query_string В результате, все что после вопросительного знака - будет отброшено.

          А Вы заметили строчку где написано, что значение cookies это префикс для shortstory.tpl, любое значение будет ссылаться на shortstory_cookies.tpl и является лишь префиксом для шаблона.

          Предложением выше, вы сами не заметили, что префикса shortstory_ там нет: Template not found: /templates/smartphone/main.tpl.tpl

          Я конечно послушаю

          А останетесь при своем мнении. ок.

          smile Но я не вижу ничего слишком опасного

          Именно тут, ничего не будет. Максимум - полный слив точной копии шаблона (не Rip).
          Да и то, только благодаря фильтрации входящих данных в шаблонизаторе DLE. Но, блин, шаблонизатор не должен заниматься фильтрацией входящих данных, то что это сделано в DLE, не значит, что это правильно и будет сделано где-то еще.

          По коду есть небольшие замечания (не ошибки, именно замечания):
          1. Излишность, но это незначительно и простительно.
          2. Нет проверки на существование файла file_exists().
          3. Нет поддержки персонального шаблона категории.
          	if( $category_id and $cat_info[$category_id]['short_tpl'] != '' ) $tpl->load_template( $cat_info[$category_id]['short_tpl'] . '.tpl' );
          	else $tpl->load_template( $user_tpl );
          Если у категории будет задан свой шаблон короткой новости, то будет отображаться только он.

          Вы реально на столько высокого о себе мнения ?

          Если у вас уже сложилось такое мнение, чтож, я не буду пытаться доказывать обратное. Все равно вы останетесь при своем мнении.
          0
          1. foto
            Посетитель 18 февраля 2019 03:28 #
            Для начала извиняюсь, но не совсем я считаю вас таковым. Это некоторые люди не хорошего о вас мнения. Плюс я довольно давно за вами наблюдаю и собираю отзывы, с 2013 года если быть точным. И я бы не сказал, что вы душка. До панпана вам конечно долеко, он бы давно забанил уже меня, как это сделал на сайте dle-faq.

            Ну вот, уже прогресс. И это всё исправимо за 30 минут.
            Но это лучше чем менять классы. Или вы не согласны ? Просто, как-то не очень для вас прибегать к полумерам.

            А останетесь при своем мнении. ок.

            Ну почему же, вы упомянули фильтрацию и указали на трим. Я вас послушал, и добавил totranslit. Видите, я вас слушаю. Но вы не всегда и правы.

            При написании комментария я ошибся и на автопилоте дописал .tpl, без него уже без всяких ошибок будет подключен родной main.tpl Так же в cookies можно прописать /../main.tpl?query_string В результате, все что после вопросительного знака - будет отброшено.

            Думаете я не пробовал и без tpl, пробовал голяк, и вот новый /../main.tpl?query_string в первом варианте быть может был касяк но как только вы указали на это я видимо после и поправил.

            Именно тут, ничего не будет. Максимум - полный слив точной копии шаблона (не Rip).

            Современный дизайн сейчас состоит почти из 75>% чистого css. Беспокойство о сливе это меньшее из проблем. Да и какая разница рип это или оригинал, если рип можно сделать и без сливать и он будет абсолютно точен. А стиль кода не слишком и играет роль.

            Но да я не хакер и пока не верю этому, понимаю как бы вы смогли получить доступ к целому каталогу только от одной переменной в куках который уже фильтруется до подключения шаблонов плюс проходит проверку на соответствие с массивом существующего списка шаблонов. Так как проверяются файлы расширения при загрузке. И если всё отлично указать в переменной значение для load_template. В противном случае будет оригинал который забит прям там и подменить его никак не выйдет. Это фактически эквивалент глухому $tpl->load_template( 'shortstory.tpl' )

            По коду есть небольшие замечания (не ошибки, именно замечания):
            1. Излишность, но это незначительно и простительно.
            2. Нет проверки на существование файла file_exists().
            3. Нет поддержки персонального шаблона категории.

            1. В смысле ? Если не поясните ладно незначительно и простительно
            2. А зачем ? Она есть в функции load_template, зачем нам проверять мы хотим при отсутствии грузить стандарт или всё же разумней сообщить о том, что шаблона не существует через функцию подключения. (В принципе тут дело каждого и быть кто-то как раз так и предпочёл бы) Но если так будет то об проблеме может быть не известно месяцами.
            3. В смысле персональный ? Расскажите, будет.

            Если у категории будет задан свой шаблон короткой новости, то будет отображаться только он.

            Эм, ну разве задумка не заключается в этом ?) Я подумал не надо перечить настройкам категории. Я не упустил это, я просто других взглядов. (Но и это поправимо, Будет)

            Я придерживаюсь мнения, что "иногда лучше промолчать".

            Именно это зачастую становиться одним из факторов, что человека считают высокомерным. Вам пишут одни, пишут другие, вы промолчали одному затем второму. Люди не довольны, чувствуют себя мелочными и незначительными, их игнорят их можно понять. По малу но это нарастает как ком. От и общественное мнение.

            P.S.
            После публикации того первого варианта прошло не мало времени и было много поправлено. Включая выше обсуждаемых замечаний.
            И с кэшем тоже в ладах.
            0
          2. foto
            Посетитель 18 февраля 2019 03:46 #
            И сейчас уже значение переменной куков является только для сравнивания. А имя шаблонов берётся из переменной $config из которой создаётся массив. Там подменяй ни поменяй, чего только не пишите в куки тут либо кука равна одному из шаблонов либо нет.

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

            Ох не я один иногда невнимателен. Вы ведь сами мне подсказали о totranslit но забыв говорите /../main.tpl?query_string но результат на выходе через функцию -.-main.tplquery_string Какой вопросительный знак ? Все мы бываем чуть-чуть невнимательны.
            0
            1. foto
              Администратор 19 февраля 2019 00:24 #
              Я прошу прощения, что был тогда с вами немного груб.

              Но это лучше чем менять классы. Или вы не согласны ? Просто, как-то не очень для вас прибегать к полумерам.

              Нельзя сказать, лучше или хуже. Это просто иной подход. Данные публикации предназначены несколько для иной задачи. Готовое универсальное и надежное решение я выкладываю преимущественно только в платном разделе. Тут - то что хочется или чем хочется поделиться. В этом хаке мне захотелось поделиться простым решением чисто средствами шаблона, может кому-то пригодится в таком виде, кто-то использует чуть иначе. Кого-то подтолкнет на написание своего варианта.

              По поводу фильтрации входящих данных.
              Пользователь никак не должен получить что-либо что не предусмотрено программистом. Это сугубо мое личное мнение.

              Вам пишут одни, пишут другие, вы промолчали одному затем второму

              Ситуаций бывает много, ситуации бывают разные, собственно как и люди. Проведу аналогии:
              - Ты художник? Красить умеешь?
              - Ну... да...
              - Покрась мне забор.
              - Не возьмусь.
              - Почему? Я же не за бесплатно!

              - Мне нужен аналог ВК на DLE, деньги не вопрос, есть 10 тыс. руб
              - Не возьмусь?
              - Почему? Вам что, деньги не нужны?

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

              Иногда я просто не хочу чем-то заниматься. Просто так, без объяснений. Вот не хочется и все тут.
              Так и с этим. Ну никак не хочется мне заниматься реализацией этого модуля/хака на PHP.
              +1
              1. foto
                Посетитель 21 февраля 2019 05:19 #
                Да всё нормально, я не обижаюсь. Я даже и не подумал, что Вы были грубы )

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

                Пользователь никак не должен получить что-либо что не предусмотрено программистом.

                Ну вот это как раз и получилось в конце концов. При помощи переменной где указан префикс шаблона ничего не получить, как и при помощи куков для смены скина. И я рад )

                Ситуаций бывает много

                Ну это да с забором и вк и такое бывает. ) Сам я толком не понимал из за чего кипишь у людей. Получалось просто фактом показывали, что есть конфликт человека с человеком.

                Так и с этим. Ну никак не хочется мне заниматься реализацией этого модуля/хака на PHP

                Это да, модуль простой и мелочный. Вот первый вариант как раз вдохновил его изменить. )
                0
  3. foto
    Клиент 23 сентября 2019 20:19 #
    тема. благодарю!
    0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2019.
При копировании, ссылка на источник обязательна.