ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » Mairus Newsmod 1.4b - News anpassen

Geschlossen
  1. #1
    User Pic
    DeadBirdy Mitglied
    Registriert seit
    24.11.2011
    Beiträge
    166
    Beitragswertungen
    9 Beitragspunkte
    Heyho

    Hab hier ein Prob mit der news.php von Mairus erwähntem Mod. Eigentlich funzt alles so wie es sollte, nur verwendet er in dem Mod die Ilch Standard-Newsansicht, welche mir halt nich gefällt bzw wir eine andere benutzen. Ist es möglich die beiden Files zusammenzubringen?
    Es geht hauptsächlich um die darin enthaltenen Möglichkeiten die dem BBCode ähneln. Hab hier mal meine news.php und zum Vergleich die von Mairus Mod.
    Habs natürlich selber mal versucht, aber letztendlich versauts immer etwas an der restlichen Page oder eben en Error.

    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    
    
    $title = $allgAr['title'].' :: News';
    $hmenu = 'News';
    $design = new design ( $title , $hmenu );
    $design->addheader('<link rel="alternate" type="application/atom+xml" title="News (Atom)" href="index.php?news-atom" />
    <link rel="alternate" type="application/rss+xml" title="News (RSS)" href="index.php?news-rss" />');
    
    function getGroupRights(){
    	$ret = 0;
    	foreach ($_SESSION['authgrp'] as $id => $bool){
    		$ret = $ret | pow(2, $id);
    	}
    	return $ret;
    }
    
    
    function news_find_kat ($kat) {
    
    		$katpfad = 'include/images/news/';
    		$katjpg = $katpfad.$kat.'.jpg';
    		$katgif = $katpfad.$kat.'.gif';
    		$katpng = $katpfad.$kat.'.png';
    
    		if ( file_exists( $katjpg ) ) {
    		  $pfadzumBild = $katjpg;
    		} elseif ( file_exists ( $katgif ) ) {
    		  $pfadzumBild = $katgif;
    		} elseif ( file_exists ( $katpng ) ) {
    		  $pfadzumBild = $katpng;
    		}
    
    		if ( !empty( $pfadzumBild ) ) {
    			$kategorie = '<img style="" src="'.$pfadzumBild.'" alt="'.$kat.'">';
    		} else {
    		  $kategorie = '<b>'.$kat.'</b><br /><br />';
    		}
    
    		return ( $kategorie );
    }
    
    
    
    if ( !is_numeric($menu->get(1)) )  {
      if($menu->get(1) == 'rss' || $menu->get(1) == 'atom')
      {
          #ob_clean();
          $feed_type = $menu->get(1);
    
        $abf = "SELECT MAX(news_time) AS last_update FROM prefix_news";
        $erg = db_query($abf);
        $row = db_fetch_assoc($erg);
        $last_update = str_replace(' ', 'T', $row['last_update']) . 'Z';
    
        $abf = "SELECT
          a.news_title as title,
          a.news_id as id,";
        $abf .= ($feed_type == 'atom') ? 'a.news_time as datum,' : "DATE_FORMAT(a.news_time,'%a, %e %b %y %H:%i:%s') as datum,";
        $abf .=
         "a.news_kat as kate,
          a.news_text as text,
          b.name as username
        FROM prefix_news as a
        LEFT JOIN prefix_user as b ON a.user_id = b.id
        WHERE a.news_recht = 0
        ORDER BY news_time DESC LIMIT 15";
        $erg = db_query($abf);
        $tpl = new tpl( 'news_'.$menu->get(1).'.htm' );
    
        header('Content-type: application/' . $menu->get(1)  . '+xml');
    
        $tpl->set_ar_out(array('FEEDTITLE' => $allgAr['title'],
                               'UPDATED' => $last_update,
                               'SITEURL' => 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF'])), 0);
        while ($row = db_fetch_assoc($erg))
        {
          if($feed_type == 'atom')
          {
    		$Z = (date('Z') > 0 ? '+' : '').date('H:i:s', date('Z') + 23 * 3600);
    		$row['datum'] = str_replace(' ', 'T', $row['datum']) . $Z;
          }
    
          $a = explode('[PREVIEWENDE]', $row['text']);
          $tpl->set_ar_out(array('TITLE' => $row['title'],
                                 'TXT' => bbcode($a[0]),
                                 'LINK' => 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']). '/index.php?news-' . $row['id'],
                                 'AUTHOR' => $row['username'],
                                 'DATE' => $row['datum']
                                 ), 1);
        }
        $tpl->out(2);
        exit;
      }
      else
      {
        $design->header();
        $limit = $allgAr['Nlimit'];
        $page = ( $menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
        $MPL = db_make_sites ($page , "WHERE news_recht >= ".$_SESSION['authright'] , $limit , '?news' , 'news' );
        $anfang = ($page - 1) * $limit;
    
        $tpl = new tpl ( 'news.htm' );
    
        $abf = "SELECT
          a.news_title as title,
          a.news_id as id,
          DATE_FORMAT(a.news_time,'%d. %m. %Y') as datum,
          DATE_FORMAT(a.news_time,'%W') as dayofweek,
          a.news_kat as kate,
          a.news_text as text,
          b.name as username
        FROM prefix_news as a
        LEFT JOIN prefix_user as b ON a.user_id = b.id
        WHERE ".$_SESSION['authright']." <= a.news_recht
           OR a.news_recht = 0
        ORDER BY news_time DESC
        LIMIT ".$anfang.",".$limit;
        #echo '<pre>'.$abf.'</pre>';
    
        $erg = db_query($abf);
        while ($row = db_fetch_assoc($erg)) {
    
          $k0m  = db_query("SELECT COUNT(ID) FROM `prefix_koms` WHERE uid = ".$row['id']." AND cat = 'NEWS'");
          $row['kom']  = db_result($k0m,0);
    
          $row['kate'] = news_find_kat($row['kate']);
          $row['datum'] = $lang[$row['dayofweek']].' '.$row['datum'];
          if ( strpos ( $row['text'] , '[PREVIEWENDE]' ) !== FALSE ) {
            $a = explode('[PREVIEWENDE]' , $row['text']);
            $row['text'] = $a[0];
            $row['readwholenews'] = '&raquo; <a href="index.php?news-'.$row['id'].'">'.$lang['readwholenews'].'</a>  &laquo;';
          } else {
            $row['readwholenews'] = '';
          }
          $row['text'] = bbcode($row['text']);
          $tpl->set_ar_out($row,0);
        }
        $tpl->set_out('SITELINK', $MPL,1);
        unset($tpl);
      }
    
    
    
    } else {
    
     $design->header();
     $nid = escape($menu->get(1), 'integer');
     $row = db_fetch_object(db_query("SELECT *, u.name as username FROM `prefix_news` AS n LEFT JOIN `prefix_user` AS u ON u.id = n.user_id WHERE n.news_id = '".$nid."'"));
     
      if ( has_right(array($row->news_recht)) ) {
        $komsOK = true;
    	  if ( $allgAr['Ngkoms'] == 0 ) {
          if ( loggedin() ) {
            $komsOK = true;
      		} else {
    	  	  $komsOK = false;
    		  }
        }
    	  if ( $allgAr['Nukoms'] == 0 ) {
    	    $komsOK = false;
    	  }
    
        # kommentar add
      	if ( (loggedin() OR chk_antispam ('newskom')) AND $komsOK AND !empty($_POST['name']) AND !empty($_POST['txt']) ) {
          $_POST['txt'] = escape($_POST['txt'],'string');
    		  $_POST['name'] = escape($_POST['name'],'string');
          db_query("INSERT INTO `prefix_koms` (`uid`,`cat`,`name`,`text`) VALUES (".$nid.",'NEWS','".$_POST['name']."','".$_POST['txt']."')");
    	  }
    	  # kommentar add
    
        # kommentar loeschen
        if ($menu->getA(2) == 'd' AND is_numeric($menu->getE(2)) AND has_right(-7, 'news')) {
          $kommentar_id = escape($menu->getE(2),'integer');
          db_query("DELETE FROM prefix_koms WHERE uid = ".$nid." AND cat = 'NEWS' AND id = ".$kommentar_id);
        }
        # kommentar loeschen
        $kategorie = news_find_kat($row->news_kat);
    
    		$textToShow = bbcode($row->news_text);
    		$textToShow = str_replace('[PREVIEWENDE]','',$textToShow);
    		if ( !empty($such) ) {
    		  $textToShow = markword($textToShow,$such);
    		}
    
    		$tpl = new tpl ( 'news.htm' );
    		$ar = array (
          'TEXT'  => $textToShow,
    			'KATE'  => $kategorie,
          'NID' => $nid,
    	  'username' => $row->username,
    	  'date' => date('d. m. Y', strtotime($row->news_time)),
          'uname' => $_SESSION['authname'],
    			'ANTISPAM' => (loggedin()?'':get_antispam ('newskom', 0)),
    			'NAME'  => $row->news_title
    		);
    		$tpl->set_ar_out($ar, 2 );
    
    		if ($komsOK) {
    		  $tpl->set_ar_out ( array ( 'NAME' => $row->news_title , 'NID' => $nid ), 3 );
    		}
        $erg1 = db_query("SELECT text, name, id FROM `prefix_koms` WHERE uid = ".$nid." AND cat = 'NEWS' ORDER BY id DESC");
    		$ergAnz1 = db_num_rows($erg1);
    		if ( $ergAnz1 == 0 ) {
    		  echo '<b>'.$lang['nocomments'].'</b>';
    		} else {
    		  $zahl = $ergAnz1;
    		  while ($row1 = db_fetch_assoc($erg1)) {
            $row1['text'] = bbcode(trim($row1['text']));
            if (has_right(-7, 'news')) {
              $row1['text'] .= '<a href="?news-'.$nid.'-d'.$row1['id'].'"><img src="include/images/icons/del.gif" alt="l&ouml;schen" border="0" title="l&ouml;schen" /></a>';
            }
            $tpl->set_ar_out( array('NAME' => $row1['name'], 'TEXT' => $row1['text'], 'ZAHL' => $zahl ) , 4 );
            $zahl--;
    		  }
        }
    	}
      $tpl->out(5, $row);
    }
    
    $design->footer();
    
    ?>


    und Mairus
    <?php
    
    defined ('main') or die ( 'no direct access' );
    
    function getGroupRights(){
    	$ret = 0;
    	foreach ($_SESSION['authgrp'] as $id => $bool){
    		$ret = $ret | pow(2, $id);
    	}
    	return $ret;
    }
    
    switch($menu->get(1)) {
      	default :            $userDatei = 'news';           break;
    	case 'archiv'      : $userDatei = 'archiv';         break;
    	case 'print'       : $userDatei = 'print';          break;
    	case 'send'        : $userDatei = 'send';	        break;
    	case 'add'         : $userDatei = 'add';	        break;
    }
    
     require_once('include/contents/news/'.$userDatei.'.php');
    
    ?>
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Also der Übersicht wegen, sind die einzelnen Unterfunktionen des Moduls in eigene Dateien gelandet, die alle im Unterordner news des contents Ordners sind, du findest die der contents/news.php entsprechende Datei also unter contents/news/news.php, dann sehen die Dateien auch sehr viel ähnlicher aus.

    Die Ansicht selbst hat ja aber eigentlich mehr mit dem Template zu tun (aber auch dort gibts jetzt einen Unterordner).
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    DeadBirdy Mitglied
    Registriert seit
    24.11.2011
    Beiträge
    166
    Beitragswertungen
    9 Beitragspunkte
    Genau, das dacht ich mir auch. Mich wunderts halt, dass sich doch alles ändert, wenn ich bloß die php ersetze lächeln

    Hast du denn nu en Tipp für mich für mich, wie ich ohne den Coder holen zu müssen an meine Ansicht und deine Funktionen kom? Grundlegende bzw einfacherere Geschichten krieg ich ja noch hin, aber das wars dann auch schon
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ich kenne ja deine Ansicht nicht, irgendwie musst du ja dazu gekommen sein, normal sind im Template eigentlich nur ein paar Variablen dazu gekommen, dazu halt mal die templates/news.htm und die neue templates/news/news.htm vergleichen, wobei für eine andere Ansicht ja die erste der beiden Dateien verändert sein muss, oder im Ordner des Designs eine Version für dein Design davon liegen muss.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    DeadBirdy Mitglied
    Registriert seit
    24.11.2011
    Beiträge
    166
    Beitragswertungen
    9 Beitragspunkte
    Ich blicks halt nich, wofür is denn die normale news.php von deinem Modul und die, die in dem news-ordner hockt??????????????
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Das Aussehen hat in erster Linie nicht mit der php zu tun. Und ohne einen Link zu deiner Seite kann man eh nur spekulieren, wie es denn bei dir aussschaut.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    DeadBirdy Mitglied
    Registriert seit
    24.11.2011
    Beiträge
    166
    Beitragswertungen
    9 Beitragspunkte
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Die Anpassungen sind nicht wirklich trivial, war das Template beim Design dabei?

    Ich glaube zwar nicht, dass du damit was anfangen kannst, aber in der templates/news.htm von dir steht folgendes.

    <div class="news-top">
      
      <div class="news-title">
    	  <a href="index.php?news-{id}">{title}</a>
      </div>
      
      <div class="news-user">
    	  Post by - {username}
      </div>
      
      <div class="news-date">
    	  {datum}
      </div>
    
      
      <div style="clear: left;"></div>
      
    </div>
    
    <div class="news-content-top"></div>
    <div class="news-content">
    	{text}
    	{readwholenews}
    </div>
    <div class="news-content-bottom">
      <div class="news-comments">
    	<a href="index.php?news-{id}" title="Number of Comments" class="news-comments-number">{kom} {_if_{kom}=='1'}{_lang_comment}{_else_}{_lang_comments}{/_endif}</a>
    	<a href="index.php?news-{id}" title="Post Comment" class="news-post-comment"></a>
      </div>
    </div>
    
    
    
    
    
    {EXPLODE}
    <br />
    <br /><center>{SITELINK}</center>
    
    {EXPLODE}
    
    
    <!-- News Kommentare und Mehr lesen -->
    <div class="news-top">
      
      <div class="news-title">
    
    	  <a href="index.php?news-{id}">{NAME}</a>
      </div>
      
      <div class="news-user">
    	  Post by - {username}
      </div>
      
      <div class="news-date">
      	{date}
      </div>
      
      <div style="clear: left;"></div>
    
      
    </div>
    
    <div class="news-content-top"></div>
    <div class="news-content">
    	{TEXT}
    </div>
    <div class="news-content-bottom"></div>
    
    <strong>{_lang_commentsfor} {NAME}</strong>
    <br /><br />
      
    {EXPLODE}
    
    	    <form action="index.php?news-{NID}" method="POST">
            <fieldset>
    
              <legend>{_lang_writecomment}</legend>
              <input type="text" name="name" value="{uname}" /> &nbsp; {ANTISPAM} &nbsp; <input type="submit" value="{_lang_enter}"><br />
              <textarea style="width: 98%" cols="50" rows="2" name="txt"></textarea><br />
            </fieldset>
          </form>
          <br />
    
          {EXPLODE}
    
          <span class="Cmite"># <b>{ZAHL}</b> von {NAME}</span>
          <br />{TEXT}<br /><br />
    
          {EXPLODE}
          <br />
          <a href="index.php?news"><b>&laquo;</b> {_lang_back}</a>
    
        </td>
      </tr>
    </table>
    
    {EXPLODE}
    
    <table width="100%" border="0" cellspacing="0" cellpadding="5" class="rand">
      <tr class="mite">
        <td width="65%"><b>{NAME}</b></td>
        <td width="15%">{FUER}</td>
    
        <td width="20%" align="right">{DATE}</td>
      </tr><tr class="norm">
        <td valign="top" colspan="2">{TEXT}{MEHR}</td>
        <td valign="top" rowspan="2" align="center">{KATE}</td>
      </tr><tr class="norm">
        <td valign="bottom" height="20" colspan="2" align="center">
          <b>{_lang_from} {UNAME}</b> &nbsp; &nbsp; &nbsp; [ {KOM} <a href="index.php?news-1&amp;nid={ID}">{_lang_comments}</a> ]
        </td>
    
      </tr>
    </table>


    Du könntest da jetzt in das div bei Zeile 26 die folgenden Links einfügen, musst aber jeden noch eine äquivalente Klasse wie den beiden vorhandenen Links anlegen (in der style.css vom Design) und angeben, dort muss der Wert right angepasst werden, damit die Symbole positioniert werden.
      <a href="index.php?user-details-{uid}" alt="Benutzerinfo: {username}" title="Benutzerinfo: {username}"><img src="include/images/icons/news/informant.gif" alt="Benutzerinfo: {username}" border="0">
            <a href="index.php?news-{id}" alt="Kommentare ({kom})" title="Kommentare ({kom})"><img src="include/images/icons/news/comments.gif" alt="Kommentare ({kom})" border="0"></a>
            <a href="index.php?news-send-{id}" alt="Diese News einen Freund senden" title="Diese News einen Freund senden"><img src="include/images/icons/news/send.gif" alt="Diese News einen Freund senden" border="0"></a>
            <a href="index.php?news-print-{id}" alt="Druckoptimierte Version" title="Druckoptimierte Version"><img src="include/images/icons/news/print.gif" alt="Druckoptimierte Version" border="0"></a>

    Weiter kannst du noch {edit} einfügen, um den Text anzuzeigen, falls die News editiert wurde, das alles muss dann aber als templates/news/news.htm gespeichert werden.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    DeadBirdy Mitglied
    Registriert seit
    24.11.2011
    Beiträge
    166
    Beitragswertungen
    9 Beitragspunkte
    Hm jo ich werd mich ma dran setzen, klingt ja nich grad so schwer.
    Das Design wurde separat angepasst, also kein ReadymadeDing.

    Ich werds später ma versuchen, ansonsten recht herzlichen Dank Mairu.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten