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

Добавить отображение тегов в news.view.show_block

  • 20 октября 2012 г. , редакция: 20 октября 2012 г.
  • Всем доброго дня. В общем такая проблема у меня возникла. Необходимо вывести теги в новостях, которые подключены к главной странице через show_block. Но я так понимаю что эти самые теги выводятся только в полной новости. Кто подскажет, как их вывести в файле show_block? А также вывести название категории со ссылкой на категорию где добавлена новость, аватарку, имя пользователя со ссылкой на личный кабинет. Спасибо откликнувшимся
    • 20 октября 2012 г.
    • В общем проблема оказалась намного глубже, чем я предполагал. Диафан как таковой очень хорош для магазинов, корпоративных сайтов, новостных сайтов, каталогов. Но как движок с системой пользователей, рейтинга пользователей, рейтинга материалов и т.д., он видимо не катит. Вернее катит, но нужно будет допиливать функционал. И я как не владеющий напильником php, впал в ступор. Поскольку половину сайт уже сверстал(( и теперь думаю, а что делать с пользователями, которые предполагаются на сайте.
      • 20 октября 2012 г.
      • Ну да - соц. часть очень скудная согласен.
        У меня тоже рук не хватает для расточки. А так хотелось бы побороть 1 региональный сайт, который порядком уже надоел многим пользователям. Было бы интересно найти единомышленников в разных регионах и совместными усилиями сделать мощьный проект, который бы выстреллил в каждом регионе. При небольшом вкладе на раскрутру на региональном уровне успех 95% гарантировано. Подобных сайтов у нас в регионе 6 3 из них относительно хорошо работают и вокруг сайтов уже неплохую инфраструктуру всяких сервисов открыли. Но беда всех их в том, что очень много недовольных. Организаторы забивают на конечных пользователей они нацелены только на максимальный выхлоп.
    • 20 октября 2012 г.
    • Ну можно в model'е додёргать нужную информацию в $this->result[], как можно посмотреть в той функции что отвечает за формирование $this->result[] для id и во view'хе соответственно довывести :)
      • 20 октября 2012 г.
      • А как додергать юзера, его аватарку, категорию и т.д. если они не выводятся там?
        • 20 октября 2012 г.
        • Только что (Chemist)'у объяснял. Схема следующая.
          Открываем файл news.model.php
          глядим нужную нам функцию
          Код
          public function show_block($count, $cat_id, $images, $site_id){...

          там в самом низу перед
          Код
          return $this->result;

          есть некоторое количество строк типа
          Код
          $this->result["name"] = $cat["name"];

          Это данные которые будут использоваться для формирования блока show_block
          смотрим чего нехватает и дописываем в SQL запросы необходимые поля и потом присваиваем аналогичным способом полученые данные элементам массива. (Это в идеале :) бывает что и приходится писать строк побольше, это уже зависит от целей). Пример того что нужно дописать посложнее можно посмотреть как это сделано в функции
          Код
          public function id(){
          того же файла.
          затем в файле news.view.show_block.php можно уже использовать добавленную информацию. Удачи.
          • 20 октября 2012 г.
          • Хорошо вам Денис) вы прекрасно орудуете php, а я прекрасно орудую только версткой и шопом)))
            • 20 октября 2012 г.
            • Да ещё немного совсем чуть-чуть разбираюсь в MySQL, ещё JS и что с ним связано (JSON, jQuery) ещё RegExp бывает полезен. Ну про HTML и CSS я молчу это фундамент. И для меня Diafan прекрасен .

              Вот вы говорите вёрсткой это наверное тоже HTML и CSS, а можете чего нибудь забацать при помощи <canvas> или WebGL какое нибудь супер мега пуперское меню, я пока ещё нет. Но как говорил великий Ленин - "Учиться учиться и ещё раз учиться".

              Я в вас верю. Вы знаете чего хотите, и у вас всё получится. (Без приколов.)
        • 20 октября 2012 г.
        • Почему то я на примере новостей показал - но суть дела не изменяется. Скилет модулей идентичен, то же самое можно и для пользователей сделать.
  • 21 октября 2012 г.
  • Азат, это даже для меня слишком просто
    1. Идем во вью, где теги выводятся, это отдельная новость modules/news/views/news.view.id.php, или список новостей modules/news/views/news.view.list.php и видим, что и там и там выводятся теги как
    Код
    echo $result["tags"];
    Это значит, что все это дело сидит в одной переменной. Совершенно очевидно, что приходит она из модели.
    2. Идем в модель modules/news/news.model.php и видим, что эта переменная формируется как
    Код
    $this->result["rows"][$i]["tags"] = $this->diafan->_tags->get($row["id"]);
    Это подключение, кстати, описано в документации, но я так понимаю, полезно это только опытным программистам, начинающие там нифига не поймут Поэтому действуйте методом тыка и соседних аналогий.
    3. Замечаем, что теги забираются там же, в районе тех же строк, где name, anons, date.
    4. Соответственно, идем в функцию show_block() и в 965 строке (для 5.1) рядом с аналогичными строками присобачиваем
    Код
    $this->result["rows"][$i]["tags"] = $this->diafan->_tags->get($row["id"]);

    5. Все, можно идти в modules/news/views/news.view.show_block.php и где нужно выводить
    Код
    echo $result["tags"];
    • 22 октября 2012 г. , редакция: 22 октября 2012 г.
    • Не поверите Виталий, я так и сделал, хоть и не шарю в php Мне выдало вот что
      Код
      Undefined index: tags
      #1 include(W:domainsgs.localmodules ewsviews ews.view.show_block.php) called at [W:domainsgs.localincludes emplate.php:64]
      #2 Template->get(show_block, news, Array(...)) called at [W:domainsgs.localmodules ews ews.php:86]
      #3 News->show_block(Array(...)) called at [W:domainsgs.localincludesparser_theme.php:195]
      #4 Parser_theme->start_element(Array(...)) called at [W:domainsgs.localincludesparser_theme.php:90]
      #5 Parser_theme->get_function_in_theme(<?php if(!defined("DIAFAN")){include "../includes/404.php";exit();} ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>.....................</html> ) called at [W:domainsgs.localincludesparser_theme.php:53]
      #6 Parser_theme->show_theme(Controller) called at [W:domainsgs.localincludesinit.php:342]
      #7 Init->start() called at [W:domainsgs.localindex.php:56]

      • 23 октября 2012 г.
      • Ну ошибки выводиться точно не должно... Где-то что-то напутали в коде, значит. Сейчас специально сделал у себя, все работает.
      • 24 октября 2012 г. , редакция: 24 октября 2012 г.
      • Для show_block надо еще необязательные параметры зайдействовать module_name и site_id. По умолчанию они определяются как текущий модуль и текущая страница. Поэтому надо так:
        Код
        $this->result["rows"][$i]["tags"] = $this->diafan->_tags->get($row["id"], 'news', $row["site_id"]);

        site_id нужно задать, если модуль "Новости" прикреплен к разным страницами и для одно странице теги подключены в настройках, для другой нет. Если такого нет, то site_id не обязательно.

Новости

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

Форум