Вход • Регистрация

Помощь с визуальным редактором

  • 28 февраля 2012 г. , редакция: 28 февраля 2012 г.
  • Всем привет. В общем такая проблема. Необходимо вставить следующий код в шаблон
    Код

    <div id="featured">
    <img src="image1.jpg" />
    <img src="image2.jpg" />
    <img src="image3.jpg" />
    <img src="image4.jpg" />
    </div>

    Вставил следующим образом
    Код

    <div id="featured">
    <insert name="show_block" id="1">
    </div>

    Теперь при заливке фото из визуального редактора, он сначала их обертывает в тег
    Код
    <p><img src=""></p>

    Из-за этого рушится вся система прокрутки слайдов. Кто подскажет как избавиться от назойливого тега, не прибегая к выключению визуального редактора.
    • 28 февраля 2012 г.
    • Такой уж он, этот визуальный редактор. Все должно быть в контейнерах, как минимум в <p>...
      Поэтому контролируйте этот процесс сами. Оберните все картинки в пустой div, вот так:
      Код
      <div>
      <img src="image1.jpg" />
      <img src="image2.jpg" />
      <img src="image3.jpg" />
      <img src="image4.jpg" />
      </div>

      т.е. на выходе будет
      Код
      <div id="featured">
      <div>
      <img src="image1.jpg" />
      <img src="image2.jpg" />
      <img src="image3.jpg" />
      <img src="image4.jpg" />
      </div>
      </div>

      если что, стилями отступы уберете и все.
      • 28 февраля 2012 г.
      • В общем не получилось так, совсем слайдер пропал. Я просто взял и прям визуальном редакторе все прописал. Так оказалось проще))
        • 28 февраля 2012 г.
        • Этот вариант я боялся предлагать, как самый очевидный
          • 29 февраля 2012 г.
          • Ну я было подумал, что мы не ищем легких путей
  • 28 февраля 2012 г. , редакция: 28 февраля 2012 г.
  • А еще лучше делать это с помощью фотогалереи, назначив один раздел отдельно для слайдера со своими настройками

    а в photo.veiw.php прописать свой шаблон вывода блока (или изменить стандартный если нигде больше не используется)

    и потом вызывать его стандартным например
    Код
    <insert name="show_block" module="photo" template="slider" cat_id="1" site_id="4" sort="rand" count="10">


    тогда все проблемы с <p> и боязнью что заказчик потом поломает слайдер, поковырявшись шаловливыми ручонками в визуальном редакторе, пропадут

    более того, используя еще и поля "анонс" и "описание" можно поверх картинок и всякие тексты выводить
    • 29 февраля 2012 г.
    • Очень интересное решение, сейчас попробую. Почему-то не подумал про фотогалерею вообще. Спасибо за идею.
  • 29 февраля 2012 г. , редакция: 29 февраля 2012 г.
  • Код

    public function show_block_slider($result)
    {
    if (empty($result["rows"]))
    {
    return FALSE;
    }
    echo '<div id="featured">';
    foreach ($result["rows"] as $row)
    {
    if (! empty($row["img"]))
    {
    echo '<img src="'.$row["img"]["src"].'" width="'.$row["img"]["width"].'" height="'.$row["img"]["height"].'" alt="'.$row["img"]["alt"].'" title="'.$row["img"]["title"].'" />';
    }
    }
    echo '</div>';
    return TRUE;
    }

    В общем я не кодер если честно, но у меня по такой схеме все ок, но... почему то подгружаются картинки из папки medium, т.е. уменьшенные изображения. как сделать так, чтобы подгружались нормального размера.
    • 29 февраля 2012 г.
    • Надо смотреть выше откуда $result поступает очевидно что данные попавшие в эту функцию содержать пути к миди картинкам.
      • 29 февраля 2012 г. , редакция: 29 февраля 2012 г.
      • очевидно что в настройках прописать для миниатюр тоже большие значения, те которые нужны.

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

            Получение фотографий, их адресов и параметров происходит в файле /modules/images/images.inc.php функцией get для маленьких фотографий и get_big для больший. Вызовы этих функций как раз и происходят в разных модулях.

            В частности, по Вашему вопросу: вызов маленьких фотографий идет в /modules/photo/photo.model.php в функции get_elements()

            в строке 635
            Код
            $images = $this->diafan->_images->get(...


            Нужно добавить ниже запрос больших фотографий

            Код
            $images1 = $this->diafan->_images->get_big($row["id"], $row["name"], 'photo', 0);


            затем ниже, где идете передача параметров, добавить временную переменную для хранения большой картинки

            Код
            $row["img"] = $images[0];
            $row["img1"] = $images1[0];


            и уже после этого в /modules/photo/photo.view.php можете использовать адрес больших фотографий как $row["img1"]["src"]
            • 29 февраля 2012 г.
            • согласен, но тогда трогаем "системные" файлы, в случае же изменения настроек, ничего менять не надо : )) затраты - 5 секунд
            • 01 марта 2012 г.
            • Действительно)) Чет я думал может как-то попроще будет прям в файле photo.view.php. Но раз такое дело, в любом случае ответ пригодиться мне. Ну и последний вопрос по этой теме. Если мне нужно обернуть картинки в слайдере со ссылкой на какую либо страницу на сайте, как мне это правильно сделать?
              • 01 марта 2012 г.
              • Цитата
                более того, используя еще и поля "анонс" и "описание" можно поверх картинок и всякие тексты выводить


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

                но тогда надо будет оборачивать картинку в div с относительным позиционированием, а уже саму ссылку позиционировать абсолютно

                Код
                display: block;
                width: ***;
                height: ***;
                position: absolute;
                top: 0;
                left: 0;
                z-index: 10; /*для верного*/



                ну и слайдер заставить крутить уже не картинки а собственно дивы.




                p.s. есть еще "решение", но требует выключения визуального редактора : ))

                1. в анонсе пишем только НАЧАЛО ссылки
                Код
                <a href="#">

                2. в photo.view.php в нужном шаблоне ставим вывод анонса ПЕРЕД выводом картинки, оставив ТОЛЬКО непосредственно сам анонс, убрав оборачивающий див
                Код
                //краткое описание фотографии
                if (! empty($row["anons"])) {echo $row["anons"];}

                3. после вывода картинки дописать ЗАКРЫТИЕ ссылки
                Код
                echo '</a>';


                вуаля.
                есть нюансы.
                надо или во все картинки ОБЯЗАТЕЛЬНО прописывать ссылки, или добавить в вывод анонса условие, что если анонса нет, то вывести пустую ссылку, например
                Код

                //краткое описание фотографии
                if (! empty($row["anons"])) {
                echo $row["anons"];
                }
                else {
                echo '<a href="#">';
                }


                p.s. визуальный редактор в этом случае выключается для того чтобы исключить "умного" автоматического дополнения незакрытой ссылки и оборачивания ее пресловутыми <p>


                p.s.p.s. я делал по первому варианту. Но я использую слайдерокрутилку, которая изначально крутит дивы и внутрь этих дивов можно пихать все что угодно.
              • 01 марта 2012 г.
              • Делать все через модуль фотогалерея, для фотографии сделать дополнительное поле ссылка. Как делаются дополнительные поля на форуме обсуждалось и не раз.
  • 02 марта 2012 г.
  • Ребят, всем спасибо. Заказчик сказал ненадо в ссылки оборачивать =) И так все прекрасно крутится. В общем все работает благодаря форуму. Еще раз спасибо.
  • 31 мая 2012 г. , редакция: 31 мая 2012 г.
  • Привет всем. Решил поднять старую тему. В общем есть слайдер, нужно прикрутить анонс. Анонс у слайдера работает следующим образом. Он берет тайтл у картинки <img src="" title="#anons"> и вставляет в <div id="anons">. Как правильно сделать так, чтобы из тайтла название переносилось автоматом в див. Пробовал так:
    Код
    foreach ($result["rows"] as $row)
    {

    if (! empty($row["img"]))
    {
    echo '<img src="'.$row["img"]["src"].'" alt="'.$row["img"]["alt"].'" title="#'.$row["img"]["title"].'">'.'</a>';
    }

    if (! empty($row["anons"]))
    {
    echo '<div id="'.$row["img"]["title"].'">'.$row["anons"].'</div>';
    }
    }


    В общем разобрался, оказывается сработало. Видимо что-то не так сделал в первый раз))

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум