ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
Modul Feature-Suche
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9  Weiter
 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Kleine und neue Module
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 13.03.2017 10:32    Titel: Antworten mit Zitat

Ich hätte noch eine kleine Frage:

Wie bereits weiter oben (von MarkusR) erwähnt, kann man die Suchergebnisse sehr schön ausgeben lassen, sodass sie weitgehend dem originalen Artikel entsprechen, aber die Suchtreffer werden eben nicht geparst.

Da es in meinen Artikeln Teile gibt, die eben doch geparst werden müssten, wollte ich einfach einen link zum originalen Artikel einbauen (der ja auch schon in der Vorlage des Moduls enthalten ist), was auch funktioniert, nur verschwindet auf der Detailseite dann leider die Suche...

Ich habe schon versucht, etwas mit
Code:
$pagetype == "index"
zu tricksen, hat aber nicht funktioniert Embarassed

Gibt es hierfür eine Lösung?

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6979

BeitragVerfasst am: 13.03.2017 17:57    Titel: Antworten mit Zitat

Zum Verständnis:

Du leitest mit dem Link zur Detailseite ja auf das Rubrikverzeichnis, daher wird auch dort wie gehabt die Detailseite ausgegeben.

Oder hast Du den Link so zurechtbastelt, dass er auf die detail.php des Modulverzeichnisses verlinkt?

Dann könnte man die detail.php so umbauen, dass sie wie die index.php funktioniert.

Falls Du CPO 4.1.6 benutzt könnte man auch versuchen im Modul statt des Modulparsers den CPO-Parser zu benutzen. Da dieser aber für tabellarische Darstellungen nicht so geeignet ist habe ich den Modulparser entwickelt. Dann darf auch die Anzahl der Suchergebnisse pro Seite nicht zu groß sein, weil der Server in die Knie geht.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 13.03.2017 18:12    Titel: Antworten mit Zitat

Bei mir ist das Modulverzeichnis das Rubrikverzeichnis. Der Link geht also zur detail.php des Modulverzeichnisses.

Wie müsste ich denn die detail.php anpassen, dass sie wie die index.php die Suchfunktion ebenfalls ausgibt?

Ich habe einfach mal ganz dreist den Teil hier in die detail.php hineinkopiert:

Code:
// the includes ***********************************************************************************
require_once(CPO_BASEDIR.$directory.'/includes/inc_search_function.inc.php');
include_once(CPO_BASEDIR.$directory.'/includes/actions.inc.php');

ob_start();
if (
   (!array_key_exists($directory, $activeModules)) ||
   (license($activeModules[$directory]['lkey'],$activeModules[$directory]['mod_id'])!=1 && license($activeModules[$directory]['lkey'],$activeModules[$directory]['mod_id'])!=3)
   ) {
    $message[] = ___('The form is currently disabled.');
   include(CPO_BASEDIR.'_include/message.php');
} else {
   if (
         ( $activeModules[$directory]['hideArticles'] == "no" && $activeModules[$directory]['showArticles'] == "before" ) ||
         ( $_REQUEST['action'] != 'feature_search' && $cpoRubric['id'] && $activeModules[$directory]['showArticles'] == "before" )
      ) require(CPO_BASEDIR.'_includesite/i_index.php');

   $zusatzurl = '';
   foreach ($_REQUEST as $key=>$value)
   {
      if ($key == session_name()) continue;
      if ($key == 'pos') continue;
      $zusatzurl .= $key.'='.urlencode($value).'&';
   }

   $pagination = string_next_page($_REQUEST['pos'], count($results), $noOfResults, true, $zusatzurl, '', $tl);

   include(CPO_BASEDIR.$directory.'/includes/parser.inc.php');

   if (
         ( $activeModules[$directory]['hideArticles'] == "no" && $activeModules[$directory]['showArticles'] == "after" ) ||
         ( $_REQUEST['action'] != 'feature_search' && $cpoRubric['id'] && $activeModules[$directory]['showArticles'] == "after" )
      ) require(CPO_BASEDIR.'_includesite/i_index.php');
}
$showForm = ob_get_clean();


Aber leider geht das wohl nicht so... Laughing

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6979

BeitragVerfasst am: 13.03.2017 19:19    Titel: Antworten mit Zitat

Wenn Du Header und Footer benutzt fehlt jetzt noch
Code:

    include(CPO_BASEDIR.$directory.'/loadheaders.php');
    echo $showForm;
    require(CPO_BASEDIR.'_includesite/i_detail.php');
    include(CPO_BASEDIR.$directory.'/loadfooters.php');


Ist aber nur Theorie...

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 13.03.2017 19:46    Titel: Antworten mit Zitat


 Die Zeilen waren eigentlich schon mit drin. Das hier ist meine ganze detail.php:

php:
php /* _\|/_              vim: set et ts=4 sw=4 sts=4 nowrap fdm=marker:
         (o o)                         
+-----oOO-{_}-OOo--------------------------------------------------------+
| ConPresso - Foolproof Content Management                               |
+------------------------------------------------------------------------+
| Copyright (c) Bartels Schoene GmbH & Co. KG, 48149 Muenster, Germany   |
+------------------------------------------------------------------------+
| This source file is subject to ConPresso license version 2002-11-16    |
| that is bundled with this package in the files LICENSE_EN.TXT or       |
| LICENSE_DE.TXT, and is available through the world-wide-web at         |
|     http://www.conpresso.de/license/LICENSE_EN-2002-11-16.TXT or       |
|     http://www.conpresso.de/license/LICENSE_DE-2002-11-16.TXT          |
|                                                                        |
| If you did not receive a copy of the ConPresso license and are unable  |
| to obtain it through the world-wide-web, please send a note to         |
| <license@conpresso.de> so we can e-mail you a copy immediately.        |
+------------------------------------------------------------------------+
| Authors: ConPresso development and support team <support@conpresso.de> |
+------------------------------------------------------------------------+
  $Id$ */
define('CPO'true);
require_once(
'../_include/common.inc.php');

$pagetype 'detail';
require(
CPO_BASEDIR.'_include/var_category.php');
require(
CPO_BASEDIR.'_include/secure.php');

// the includes ***********************************************************************************
require_once(CPO_BASEDIR.$directory.'/includes/inc_search_function.inc.php');
include_once(
CPO_BASEDIR.$directory.'/includes/actions.inc.php');

ob_start();
if (
    (!
array_key_exists($directory$activeModules)) || 
    (
license($activeModules[$directory]['lkey'],$activeModules[$directory]['mod_id'])!=&& license($activeModules[$directory]['lkey'],$activeModules[$directory]['mod_id'])!=3)
    ) {
    
$message[] = ___('The form is currently disabled.');
    include(
CPO_BASEDIR.'_include/message.php');
} else {
    if (
            ( 
$activeModules[$directory]['hideArticles'] == "no" && $activeModules[$directory]['showArticles'] == "before" ) ||
            ( 
$_REQUEST['action'] != 'feature_search' && $cpoRubric['id'] && $activeModules[$directory]['showArticles'] == "before" )
        ) require(
CPO_BASEDIR.'_includesite/i_index.php');

    
$zusatzurl '';
    foreach (
$_REQUEST as $key=>$value)
    {
        if (
$key == session_name()) continue;
        if (
$key == 'pos') continue;
        
$zusatzurl .= $key.'='.urlencode($value).'&amp;';
    }

    
$pagination string_next_page($_REQUEST['pos'], count($results), $noOfResultstrue$zusatzurl''$tl);

    include(
CPO_BASEDIR.$directory.'/includes/parser.inc.php');

    if (
            ( 
$activeModules[$directory]['hideArticles'] == "no" && $activeModules[$directory]['showArticles'] == "after" ) ||
            ( 
$_REQUEST['action'] != 'feature_search' && $cpoRubric['id'] && $activeModules[$directory]['showArticles'] == "after" )
        ) require(
CPO_BASEDIR.'_includesite/i_index.php');
}
$showForm ob_get_clean();

// header and footer mechanism
if ($cpoRubricSettings['pagetemplate_'.$pagetype]==0) {
    include(
CPO_BASEDIR.$directory.'/loadheaders.php');
    require(
CPO_BASEDIR.'_includesite/i_detail.php');
    include(
CPO_BASEDIR.$directory.'/loadfooters.php');
    exit;
}

// fetch pagetemplate from database and build page
$db = new DB;
$db->query('SELECT pagetemplate FROM '.CPO_PAGETEMPLATES.' '
    
.'WHERE id='.(int)$cpoRubricSettings['pagetemplate_'.$pagetype].' '
);
$db->next_record();
$pageTemplate $db->v('pagetemplate');
require 
CPO_BASEDIR.'_include/buildpage.inc.php';
?>


Ich habe es dann auchg nochmal ohne die if-Anweisung versucht, also so:

php:


// header and footer mechanism

    include(CPO_BASEDIR.$directory.'/loadheaders.php');
    require(CPO_BASEDIR.'_includesite/i_detail.php');
    include(CPO_BASEDIR.$directory.'/loadfooters.php');



Aber das hilft auch nicht...

Gruß,
dutch

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6979

BeitragVerfasst am: 13.03.2017 19:54    Titel: Antworten mit Zitat

Warum sind bei Dir nur drei Zeilen von den vier Zeilen? Kopfkratzen Roll on the floor laughing
_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 13.03.2017 20:44    Titel: Antworten mit Zitat

... wohl zu viel am Computer gesessen heute Ich Dummbeutel!

Damit wäre jetzt also (natürlich!) das Suchform auch in de detail.php vorhanden Laughing

Leider werden dort jetzt aber alle Artikel ausgegeben (halt wie in der index.php) und am Ende dann nochmal der gewünschte Artikel...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 13.03.2017 20:48    Titel: Antworten mit Zitat

Ich glaube jetzt hab ich es geschafft!

Habe noch das Folgende weggelassen:

Code:

if (
         ( $activeModules[$directory]['hideArticles'] == "no" && $activeModules[$directory]['showArticles'] == "after" ) ||
         ( $_REQUEST['action'] != 'feature_search' && $cpoRubric['id'] && $activeModules[$directory]['showArticles'] == "after" )
      ) require(CPO_BASEDIR.'_includesite/i_index.php');


Jetzt wird alles wir gewünscht ausgegeben!


Danke für die Hilfe, Markus!! Smile

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 27.03.2017 12:53    Titel: Antworten mit Zitat

Ich komme doch nochmal auf eine Frage von mir von weiter oben zurück, da der Kunde es eben doch gerne so hätte...

Es geht darum, dass ich (wie oben erwähnt) eigentlich die Volltextsuche von mod_search (also über alle Felder) mit den Ausgabemöglichkeiten von mod_feature_search kombinieren würde.

MarkusR hatte bereits dazu geschrieben:
MarkusR hat Folgendes geschrieben:
Im Grunde geht es ja darum nach spezifischen Informationen in einem spezifischen Feld zu suchen.
Will man mit dem gleichen Suchbegriff in mehreren Feldern suchen, dann müsste man ihn theoretisch entweder beim Absenden in die anderen Felder übernehmen (JavaScript) oder vor Beginn der Suche die Parameter gleichsetzen (PHP z.B. in actions.inc.php).
Mit konkreten Angaben kann man das konkretisieren.

Für die unspezifische Suche ist ja mod_search gedacht.


Ich würde also gerne probieren die actions.inc.php anzupassen.
Habe es mir auch angeschaut aber... öh... Shocked Embarassed wo anfangen?

Ich habe in den Artikeln (momentan) 5 Textfelder, die alle mit dem gleichen Suchbegriff durchsucht werden sollen.

Ich nehme an, die Antwort steckt irgendwo hierin verborgen?
Code:
for ($z=1;$z<=100;$z++)  {
      if (!array_key_exists('p'.$z,$_REQUEST) && !array_key_exists('sv'.$z,$_REQUEST) && !array_key_exists('sf'.$z,$_REQUEST) && !array_key_exists('sp'.$z,$_REQUEST)) continue;
      if (array_key_exists('sp'.$z,$_REQUEST))
      {
         $_REQUEST['p'.$z] = $_REQUEST['sp'.$z];
         $selects[$z] = $_REQUEST['sp'.$z];
      }
      // die Suchfelder vorbereiten, um später zu prüfen, ob auch jedes gefüllte Feld berücksichtigt wurde
      if ($_REQUEST['p'.$z] != '' && $_REQUEST['sf'.$z] != '') $searchFields[$_REQUEST['sf'.$z]]=Array();
      if ($_REQUEST['p'.$z] != '' && $_REQUEST['sv'.$z] != '') $searchFields['value']=Array();
      // für Select und Optionsfelder bei denen sf=p sein soll!
      if ($_REQUEST['sf'.$z] == '' || (!isset($_REQUEST['sf'.$z]) && !isset($_REQUEST['sv'.$z])))
      {
         $_REQUEST['sf'.$z] = $_REQUEST['p'.$z];
         if ($_REQUEST['p'.$z] != '' && !isset($_REQUEST['sv'.$z])) $searchFields[$_REQUEST['sf'.$z]]=Array();
      }
//      $z++;
   }



An welchen Zeilen müsste ich denn schrauben? Rolling Eyes

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6979

BeitragVerfasst am: 28.03.2017 04:07    Titel: Antworten mit Zitat

Wenn dann passiert das in der Zeile vor der for-Schleife oder nach
Code:
if ($_REQUEST['action'] == 'feature_search')  {


Du hast also fünf Felder, nennen wir sie Feld1 bis Feld5.
Und Du hast ein Suchbegriff, der in das Feld p1 eingetragen wird.

Ich weiß jetzt natürlich nicht was Du schon über das Formular an Parametern übergibst, daher definiere ich sie mal alle.

Dann setzt Du vor die Schleife:
Code:
$_REQUEST['sf1'] = 'Feld1';
$_REQUEST['sf2'] = 'Feld2';
$_REQUEST['sf3'] = 'Feld3';
$_REQUEST['sf4'] = 'Feld4';
$_REQUEST['sf5'] = 'Feld5';
$_REQUEST['p2'] = $_REQUEST['p1'];
$_REQUEST['p3'] = $_REQUEST['p1'];
$_REQUEST['p4'] = $_REQUEST['p1'];
$_REQUEST['p5'] = $_REQUEST['p1'];


So wird in allen fünf Feldern nach dem Wert von p1 gesucht.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 28.03.2017 09:30    Titel: Antworten mit Zitat

Hallo Markus,

danke für den Code.

Ich habe es gerade getestet, aber leider wird damit nichts gefunden...
Im Modul-template habe ich es erst mit nur einem Eingabefeld (p1) versucht und anschließend noch einmal mit allen 5 Eingabefeldern. Aber leider wird nichts gefunden...
Ich sehe zwar, dass der Suchbegriff, der in p1 eingetragen wird, in die anderen 4 Suchfelder übernommen wird, aber die Suche liefert eben keine Ergebnisse.

Das Suchfeld im Modutemplate (bei nur einem Eingabefeld) sieht bei mir so aus:
Code:
<tr>
    <td><label for="p1">Suche</label><br>
      <input type="text" name="p1" id="p1" value="### SEARCH_PHRASE_1 ###" />
      <input type="hidden" name="sf1" value="Feld1" />
    </td>
  </tr>


Der Feldname 'Feld1' stimmt natürlich mit dem entsprechenden Template-Feldnamen überein.

Wenn ich es ohne deine Codeerweiterung teste, funktionieren alle 5 Suchfelder. Die Suchfelder scheinen also wohl ok zu sein.

Woran könnte es noch liegen? Rolling Eyes

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6979

BeitragVerfasst am: 28.03.2017 11:42    Titel: Antworten mit Zitat

Hast Du die Suchmethode auf AND oder OR?
(siehe geheim gehaltener Teil Deines Formulars)
Default ist eigentlich OR wenn man nichts angibt.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 28.03.2017 11:44    Titel: Antworten mit Zitat

Habe nichts daran geändert, also OR.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6979

BeitragVerfasst am: 28.03.2017 16:33    Titel: Antworten mit Zitat

Wenn Du NICHTS geändert hast steht in Deinem Template folgendes:
Code:
<input type="hidden" name="results" value="AND" />


Nur wenn NICHTS angegeben ist gilt OR.

Und das Standardmuster steht noch auf "LIKE '%###%'"?

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Experte


Anmeldungsdatum: 04.07.2007
Beiträge: 504

BeitragVerfasst am: 28.03.2017 17:02    Titel: Antworten mit Zitat

Hahaha!
Ich weiß schon, warum ich kein Programmierer geworden bin Laughing

Also: Ich habe nichts geändert, darum stand es bei mir natürlich (noch) wie folgt:

Code:
 <input type="hidden" name="results" value="AND" />


Habe ich also geändert auf 'OR' und funzt!

Vielen Dank mal wieder!!

Und noch meine - wenn auch stark verspäteten - Komplimente zum mod_feature_search. Tolles Teil!

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Kleine und neue Module Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9  Weiter
Seite 7 von 9

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen