Wir brauchten eine Suchfunktion im Backend, da mehrere Personen an der Inhaltpflege beteiligt sind, diese aber nicht immer wissen, wo was abgelegt wurde.
Zu diesem Zweck habe ich habe ich mal eine Suchfunktion eingebaut. In dieser kann man nach ID's oder Textfragmenten suchen. Die Umsetzung ist vielleicht nicht bis ins Letzte ausgefeilt, sollte aber für die meisten Fälle genügen.
Bei der Umsetzung ging es leider nicht ganz ohne Eingriff ins phpwcms.php
Installation
in phpwcms.php:
Im oberen Bereich (bei den require_once Befehlen folgende Zeile einfügen:
Code: Select all
require_once (PHPWCMS_ROOT.'/backendsearch.php');
Code: Select all
//Subnav Wrap Text Tabelle
Code: Select all
$subnav .= $backendsearchform;
Code: Select all
switch($do)
Code: Select all
echo $backendsearchresult;
Dort folgenden Code einfügen und sichern:backendsearch.php
Code: Select all
<?php
$searchhtml = '';
$searchString = '';
if ($_POST['backendsearch']) {
$searchString = $_POST['backendsearchstring'];
if (is_numeric($searchString)) {
// search for contentpart-id or article-id
$searchString = mysql_real_escape_string($searchString);
$sql = '
SELECT
cp.acontent_id, cp.acontent_aid, cp.acontent_text, a.article_title
FROM
cms_phpwcms_articlecontent as cp, cms_phpwcms_article as a
WHERE
cp.acontent_id = "' . $searchString . '" AND cp.acontent_aid = a.article_id OR
a.article_id = "' . $searchString . '" AND cp.acontent_aid = a.article_id
';
} else {
// search in title, subtitle, summary or text
$searchString = mysql_real_escape_string($searchString);
$sql = '
SELECT
cp.acontent_id, cp.acontent_aid, cp.acontent_text, a.article_title, a.article_subtitle, a.article_summary
FROM
cms_phpwcms_articlecontent as cp INNER JOIN cms_phpwcms_article as a
ON
cp.acontent_id = a.article_id
WHERE
a.article_title LIKE "%' . $searchString . '%" OR
a.article_subtitle LIKE "%' . $searchString . '%" OR
a.article_summary LIKE "%' . $searchString . '%" OR
cp.acontent_text LIKE "%' . $searchString . '%"
';
}
if($result = mysql_query($sql, $db)) {
$searchhtml .= '
<p><b>Gefundene Artikel oder Content Parts:</b>
';
while($row = mysql_fetch_assoc($result)) {
$searchhtml .= '
<dl class="backendsearchresult">
';
if (strlen(strip_tags($row['article_subtitle'])) > 1) {
$articleSubtitle = '<dd>' . str_ireplace($searchString, '<em>' . $searchString . '</em>',$row['article_subtitle']) . '</dd>';
} else {
$articleSubtitle = '<dd>--</dd>';
}
if (strlen(strip_tags($row['article_summary'])) > 6) {
$articleSummary = '<dd>' . str_ireplace($searchString, '<em>' . $searchString . '</em>',$row['article_summary']) . '"</dd>';
} else {
$articleSummary = '<dd>--</dd>';
}
$searchhtml .= '
<dt>Title</dt><dd><b><a href="' . PHPWCMS_ROOT . '/phpwcms.php?do=articles&p=2&s=1&aktion=2&id=' . $row['acontent_aid'] . '&acid=' . $row['acontent_id'] . '">' . str_ireplace($searchString, '<em>' . $searchString . '</em>', $row['article_title']) . '</a></b> <span style="color: #727889;">Article-ID: ' . str_replace($searchString, '<em>' . $searchString . '</em>',$row['acontent_aid']) . ' / Contentpart_ID: ' . str_replace($searchString, '<em>' . $searchString . '</em>',$row['acontent_id']) . '</span></dd>
<dt>Subtitle</dt>' . $articleSubtitle . '
<dt>Summary</dt>' . $articleSummary . '
<dt>Text</dt><dd>' . str_ireplace($searchString, '<em>' . $searchString . '</em>',$row['acontent_text']) . '</dd>
';
$searchhtml .= '
</dl>
';
}
$searchhtml .= '</p>';
}
}
$backendsearchform = makeInputForm($searchString);
$backendsearchresult = $searchhtml;
function makeInputForm($searchString) {
$searchhtml = '';
$searchhtml .= '
<form action="' . $_SERVER['REQUEST_URI'] . '" method="post" name="backendsearch" id="backendsearch">
<fieldset style="border:none; border-top: 1px solid #92a1af">
<legend>Suche</legend>
<input type="text" name="backendsearchstring" value="' . $searchString . '"/>
<input type="hidden" name="backendsearch" value="1"/>
<input type="submit" name="submit" value="Senden"/>
<p>Eingabe einer ID (Artikel-ID oder ContentPart-ID) oder eines Textfragments</p>
</fieldset>
</form>
';
return $searchhtml;
}
?>
CSS Ergänzungen:
Im File include / inc_css / additional.css habe ich noch folgende css Ergänzungen vorgenommen:
Code: Select all
dl.backendsearchresult em {color: red;}
dl.backendsearchresult {margin-bottom: 16px;}
dl.backendsearchresult dt {font-weight: bold; float: left; width: 70px; }
dl.backendsearchresult dd {margin-left: 70px;}