Zum Inhalt springen

tt_news suchformular mit kategoriewahl erweitern!?

Erstellt am 15. Februar 2007 · 9 Antworten · letzte Antwort am 2. April 2007

Tags: Kategorien, tt_news, Frage

NickD ·

hallo...,

mich würde es mal interessieren ob man das newsform durch z.b. eine select box, in der alle kategorien stehen, erweitern kann.
außerdem habe ich meine tt_news extension um ein paar felder erweitert - wie kann ich es realisieren, auch in diesen suchen zu können?

lg, nick

NickD ·

ok es geht also...
obwohtl ich schon 1000 posts hier getätigt hab, bin ich leider noch anfänger...
fragen wir mal so...wo wird in der ext. tt_news die suche behandelt bzw. das query abgegeben?

just2b ·
NickD schrieb

ok es geht also...
obwohtl ich schon 1000 posts hier getätigt hab, bin ich leider noch anfänger...

ich seh nur 289 😉

NickD schrieb

fragen wir mal so...wo wird in der ext. tt_news die suche behandelt bzw. das query abgegeben?

du weißt wo sich die pi/class.tx_ttnews.php befindet. So schwer darin nach "search" zu suchen? da kommt man dann drauf, dass es sowas gibt:

$this->conf['searchFieldList']

oder man schaut ins manual unter (was für eine überraschung): The Search

http://typo3.org/documentation/document-library/extension-manuals/tt_news/2.4.0/view/1/2/#id2865655

The Search

The tt_news search is a simple text-search that searches in a configurable list of fields (by default this fields will be searched: title, short (subheader), bodytext, author, keywords, links, and imagecaption). The default list of searchfields can be overwritten with the TS parameter “searchFieldList”.

Example:

# this will configure tt_news to search only in the fields “title” and “short”.

plugin.tt_news.searchFieldList = title,short

The fieldnames in “searchFieldList” will be validated before writing them to a database query.

The search can be configured to display its results on another page (see ->searchPid).

NickD ·

soweit hatte ich das auch schon nachgelesen.
mein problem ist nur jetzt, das sich die namen der vorhandenen kategorien in der tt_news_cat befinden und in der tt_news natürlich nur die id's gespeichert werden.
nun möchte ich ein select feld, bzw. die options mit den namen füllen.

z.b.

$selectConf['selectFields'] = "title";
$res = $this->cObj->exec_getQuery('tt_news_cat', $selectConf);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);

$markerArray['###NEWS_CATEGORIE_NAME###'] = $this->local_cObj->stdWrap($row['title'], $lConf['title_stdWrap.']);

$selectConf['selectFields'] = "title";
$res = $this->cObj->exec_getQuery('tt_news', $selectConf);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);

$markerArray['###NEWS_CATEGORIE_ID###'] = $this->local_cObj->stdWrap($row['uid'], $lConf['uid_stdWrap.']);

was mit einfach fehlt ist einfach der denkansatz. mir ist in vielen bereichen einfach nicht klar, wie die extensionen abgearbeitet werden - das ist einfach mein problem.

kannst du mir vielleicht ein ansatz geben?

just2b ·

Da brauchts dann eben eine Abrage über die tt_news_cat, und mittels der Abfrage füllst du dann irgendeine Dropdown-Box.
mehr kann ich auch nicht wirklich sagen, weil ich die tt_news nicht so genau kenne

georg

wwt ·

Hallo NickD!

Genau das selbe suche ich auch!
Hast Du schon eine Lösung??

Gruß, Joe.

NickD ·

leider habe ich noch keine lösung - ich denke das mir da noch etwas an erfahrung fehlt :/

um die news kategorie in eine selectbox zu bekommen, haben ich folgenden versuch gestartet:

<!-- ###TEMPLATE_SEARCH### begin
	Subpart for the search-form
-->
<table border="0" cellpadding="4" cellspacing="1">
<tr bgcolor="#FFFFFF">
	<td>
	<b>
				<font size="3">News</font></b>
    </td>
    </tr>
  <tr>
    <td><form method="POST" action="./index.php?id=88&no_cache=1">
	<input size="30" maxlength="100" type="text" name="tx_ttnews[swords]" value="###SWORDS###" />
	<select name="blub" value="###NEWS_CATEGORY###">###NEWS_CATEGORY###</select>
	<input type="submit" name="search" value="###SEARCH_BUTTON###" />
</form></td>
  </tr>
</table>
<!-- ###TEMPLATE_SEARCH### end -->

mir fehlt einmal der weg, um die kategorien aufzulisten (im template) und dann mit der auswahl weiter zu arbeiten. ich denke, das irgendwie in der class.tx_tt_news.php definiert wird, in welchem templatebereich, welche marker gefüllt werden. weil wenn alle gefüllt werden, müsste bei meinem test, wenigstens eine kategorie erscheinen!? ich habe meine tt_news extension um einige felder erweitert und möchte in der endfassung nach allen feldern getrennt suchen können (mit select-auswahl und evtl. mit und/nicht unterscheidung - das aber erst zum schluss).

@just2b: ich weiß das ich einer der schlimmsten und nervigsten forenposter bin, jedoch weiß ich mir nicht mehr zu helfen. ich denke, wenn ich diesen weg zwischen extension und template verstanden habe, hilft mir das ebenfalls in einigen anderen wegen in der typo3 welt. ich hoffe auf deine hilfe (andere wissende sind natürlich nicht ausgeschlossen 😉 )

NickD ·

ich habs mir nun so gedacht, das ich manuell die formulare in das template mit einbaue und dann per ts abfrage, welche postvars wie gesetzt sind.

also:

[globalVar = GPvar : searchfield = title]
plugin.tt_news.searchFieldList = title
[global]

hier ist aber das problem, das ich mehrere felder habe. muss ich dann für jede möglichkeit ne if schreiben? kann ich irgendwie eine liste übergeben? also das ich ein array per post übergebe und dieses per ty auslesen - ist das möglich und wenn ja wie? ich möchte gern folgende struktur erlangen:

$meinArray = array("searchfields" => ("title","autor"....));

dann möchte ich im ts aus dem array eine liste erstellen, mit welcher ich
plugin.tt_news.searchFieldList fülle. hat jemand eine idee zur umsetzung?
wie sieht das mit den neuen felder aus, die ich hinzugefügt habe? die platzhalter sind eingebunden und werden auch gefüllt. wie übergebe ich diese der liste? einfach den platzhalter namen nutzen? also:

plugin.tt_news.searchFieldList = title, meinNeuerPlatzhalter1, meinNeuerPlatzhalter2....

hat jemand eine lösung?

NickD ·

habe es nun gelöst....
ich habe mir in mein template eine checkbox-div-area erstellt, mit den spalten. wenn nichts angeklickt = suche in allen spalten, etwas angeklickt = suche nur dort.

<div style='font:13.3px sans-serif;width:7.5em;border-left:1px solid #808080;border-top:1px solid #808080;border-bottom:1px solid #fff; border-right:1px solid #fff;'>
<div style='background:#fff; overflow:auto;height:7.1em;border-left:1px solid #404040;border-top:1px solid #404040;border-bottom:1px solid #d4d0c8;border-right:1px solid #d4d0c8;'>
<label for='cb1' style='padding-right:3px;display:block;'><input name='checkbox[]' value='title' type='checkbox' id='cb1' onclick='highlight_div(this);'>Titel</label>
<label for='cb2' style='padding-right:3px;display:block;'><input name='checkbox[]' value='author' type='checkbox' id='cb2' onclick='highlight_div(this);'>Autor</label>
</div>

hier ein beispiel mit autor und titel!

in der php-klasse, habe ich mir eine neue funktion erstellt:

function getSearchFields()
	{
	   if(!isset($_POST['checkbox']))
	   {
	       $this->searchFieldList = 'short,bodytext,author,keywords,links,imagecaption,title';
	   }
	   else
	   {
	       $i = 0;

            foreach ($_POST['checkbox'] as $field)
            {
                if($i == 0)
                    $this->searchFieldList = $field;
                else
                    $this->searchFieldList .= ", ".$field;

                $i++;
            }
	   }
	}

ist vielleicht nicht die beste lösung, aber sie funktioniert....

natürlich muss diese funktion noch in der main_news aufgerufen werden:

$this->getSearchFields();

thx