Sziasztok!
Abban kérnék segítséget, hogy a következő elképzelés megvalósítható-e, vagy sem.
Az fiam osztályának oldalán (http://darus9-17.fw.hu) widgetben szerepel egy névnap plugin. Lehetséges-e, hogy egy másik widget ezt és egy névsort kombinálva személyre szóló névnapi köszöntőt jelenít meg? Tehát, ha pl. Mária nap van, akkor kikeresi a névsorból Kiss Máriát és a widgetben kiírja, hogy “Boldog névnapot kíván Kiss Máriának az osztály”. Amikor nincs egyezés akkor pedig nem látszik semmi csak a cím.
Nagyon örülnék, ha sikerülne megoldást találni.
Elvileg működhetne, gyarkorlatilag viszont nem hiszem, hogy fogsz találni olyan plugint, ami bedolgozik a másik plugin alá.
IMHO jóval egyszerűbb lenne leprogramozni php-ban és beilleszteni a sidebarba. Valami ilyesmi módon:
$todaysDate = date('m/d'); // bevezeti a todaysDate változót és megnézi a szerveridő hónap/napját, pl. 0729
if ( $todaysDate === "02/12" ) { // megnézi, hogy a szerveridő (változó) azonos-e 02/12-vel, azaz február 12-vel
echo "Boldog névnapot, Kiss Mária!";
} else if ( $todaysDate === "03/22" ) { // megnézi, hogy a szerveridő (változó) azonos-e március 22-vel
echo "Boldog névnapot, Tóth Zolika!"; // és így tovább
} else {
echo "Ma senkinek sincs névnapja...";
}
?>
Mindezt berakod egy div-be, css-ben leformázod, csinálsz belőle mondjuk egy nevnap.php-t és a sidebar.php-ban meghivatkozod.
Nem tudom, hány gyerek van az osztályban, de ha mondjuk 30, akkor is max. 60-70 sor kód az egész. Ennek a módszernek az az előnye, hogy mivel a változóhoz való összehasonlítási dátumokat te adod meg, akár a születésnapok is felvihetők bele.
Szerintem.
van rá egy javascript kódom ha érdekel ugyanezt zongorázza végig
csak böngészőt nem pedig servert terhelünk vele
Gyanús volt, hogy azzal is le lehet ugyanezt micsinálni, de JS-hez és focihoz hülye vagyok.
Érdekes, azt hittem a focihoz mindenki ért Magyarországon, csak én nem. A JS-tel kapcsolatos antitalentumomat eddig is ismertem.
nagyon bonyi testreszabni mert mindössze egy ilyen a vége:
document.write('Szöveg'+nev+'megintszoveg');
szoval pld ezt csinalod belőle:
document.write('Ma '+nev+' napja van');
thats all
a script korábbi része pedig meghatározza a napi aktuális nevet…
Köszönöm szépen a válaszokat!
@psztrnk: Azért jó, hogy rajtam kívül van még akit nem hoz lázba a foci! A megoldásra visszatérve, annyit értek belőle, hogy ahány gyerek van, annyiszor kell az alábbi részt megismételni:
else if ( $todaysDate === “03/22” ) { // megnézi, hogy a szerveridő (változó) azonos-e március 22-vel
echo “Boldog névnapot, Tóth Zolika!”; //
Valamint, ha születésnapot is szeretnék köszönteni, akkor azt is ugyanennyiszer. Szerintem ezt még meg tudom oldani, de a többit, “Mindezt berakod egy div-be, css-ben leformázod, csinálsz belőle mondjuk egy nevnap.php-t és a sidebar.php-ban meghivatkozod.” már csak messziről ugatom. Még igencsak kezdő vagyok a Wp-ben és azért választottam, mert mintha azt olvastam volna róla, hogy php és css ismeretek egészen alapfokával is lehet vele boldogulni. Lehet, hogy az alapfokot sem érem el?
@hgrg: Köszönöm! Érdekel, ha tudsz egy leírást is mellékelni a konfigurálásról (kezdő nyelven ).
Gyakorlatilag annyi, hogy a php-kódot berakod egy div-be (vagy ha úgy tetszik, blokkba, dobozba etc, azon belül mondjuk egy paragraph-ba, amit aztán stíluslapon belül formázhatsz. Pl.:
<?php
$todaysDate = date('m/d'); // bevezeti a todaysDate változót és megnézi a szerveridő hónap/napját, pl. 0729
if ( $todaysDate === "02/12" ) { // megnézi, hogy a szerveridő (változó) azonos-e 02/12-vel, azaz február 12-vel
echo "Boldog névnapot, Kiss Mária!";
} else if ( $todaysDate === "03/22" ) { // megnézi, hogy a szerveridő (változó) azonos-e március 22-vel
echo "Boldog névnapot, Tóth Zolika!"; // és így tovább
} else {
echo "Ma senkinek sincs névnapja...";
}
?>
Ezt elmented mondjuk nevnap.php-ként a sablonfileok közé. Ezután a sidebar.php-ban már csak ezt kell beszúrni:
Aztán a style.css-ben formázod, pl.:
.nevnap { background: #eee; padding: 10px; border: 1px solid #999; }
/* ez a dobozban foglalt bekezdést formázza, legyen mondjuk most félkövér */
.nevnap p { font-weight: bold; }
A WP valóban nagyon egyszerű, de mint minden CMS-nél, minél bonyolultabb dolgokat akarsz és minél egyedibb igénnyel állsz elő, annál mélyebben kell belenyúlnod a dolgokba... ;)
Sziasztok!
@psztrnk: Nagyon szépen köszönöm a részletes leírást! Lehet, hogy menni fog. De rájöttem, hogy a sulikezdést mindenképpen meg kell várnom, mert a névsoron kívül szükség van a többi adatra is :). A kérdésem annyi még, hogy ha az oldalsávba meghívom, akkor az automatikusan akkora lesz, mint a többi alkalmazás?
Sziasztok!
Még egy kérdés: Mivel kicsit olvasgattam is a témáról, felmerült egy új kérdés, nevezetesen, ha ugyanazon a napon több ünnep is lenne (mivel psztrnk sugallatára beletettem a szülinapokat is) az “echo”-val is működik-e az “echoBR”? Ha “print”-tel iratom ki a köszöntést a könyv szerint “printBR”-rel lehet több sort kiíratni. Tehát ha egy adott napon van születésnap és névnap is, vagy egy napon két gyereknek van névnapja, azt ilyen módon lehet-e kezelni?
Hátulról, mint a rákok:
Az echo simán lekezeli a
HTML-kódot, tehát az echo “Boldog szülinapot, Piroska!
Boldog névnapot, Szebasztiánka!” teljesen működőképes sortörésileg.
A korábbi kérdésedre a hosszú válasz: oldalsávba beillesztve a tartalmazó div (jelen esetben valószínűleg az oldalsáv) méretei több, mint valószínű, hogy kihatnak a tartalmazott div-re is. Mivel a php-kód csupán funkció, így annak nem lehetnek dimenziói, az oldal pedig csak az echo-val kiíratott szöveget “látja”. Mivel ez egyszerű szöveg (vagy bekezdés), gyakorlatilag addig nyújtózkodik, ameddig a takarója ér. Tehát a rövid válasz: igen.
[off]nyugodtan tolhatsz mindent egy echo-ba! pld változónevet sem kell így: hanem írhatod így is: [/off]
Sziasztok!
Elsősorban Psztrnk felé lenne még egy kérdésem!
Úgy tűnik sikerült megcsinálni a nevnap.php -t, fel is töltöttem a sablonfájlok közé, de hiába illesztettem be a behívó sort a sidebar.php-ba nem jelent meg. Nem lehetne valami szöveges widgettel meghívni? Mert akkor a pozícióját is meg tudnám határozni, ugyanis a nem személyes névnap widget alá szeretném betenni. L: http://darus9-17.fw.hu
A választ előre is köszönöm!
Ha widgetes oldalsávot használsz, akkor a legegyszerűbb, ha gyártasz belőle egy widgetet. Nyugalom, egyszerűbb, mint ahogy hangzik.
Szóval akkor, első körben lértehozzuk a funkciót (minden cuccot a sablonod functions.php-jába teszünk, mondjuk a fájl legvégére:
function nevnap_widget($args) { // a nevnap_widget lesz a neve, ezt regisztrálja majd widgetként a végén
extract ($args);
echo $before_widget; // ez ahhoz kell, hogy ugyanolyan felépítésű legyen a widgeted, mint a több WP-widget
?>
Gyakorlatilag a te widgeted már készen van, hiszen a widget maga az a névnapi köszöntős php-halmaz, amit már megírtál, úgyhogy azon nem kell változtatni, hiszen jól működik, egykutya, hogy widgetként, vagy manuálisan szúrod be...
A végén mindenesetre zárjuk a widgetet és regisztráljuk:
echo $after_widget; // ez a widget-struktúra vége
}
register_sidebar_widget(__('Ezen a napon'), 'nevnap_widget'); // ez meg jól beregisztrálja a widgetet
?>
A kettő közé értelemszerűen megy be maga a funkció, divekkel, paragraphokkal stb, így nem kell újraformázni sem. Magyarul a két fenti kódrészlet közé mehet be a nevnap.php teljes tartalma. Nem tudom, hogy hivatkozással behúzza-e, úgy, hogy
function nevnap_widget($args) {
extract ($args);
echo $before_widget; ?>
<?php
echo $after_widget;
}
register_sidebar_widget(__('Ezen a napon'), 'nevnap_widget');
?>
Ha nem, akkor a "" helyére egyszerűen másold be a nevnap.php teljes tartalmát.
Ezek után a widgetek között elérhető lesz egy "Ezen a napon" nevű widget, amit az oldalsávon belül mostmár oda húzol, ahová akarsz. Opciói értelemszerűen nincsenek, hiszen minden formai/strukturális kódolás benne van már eleve a nevnap-php-ban.
Szia psztrnk!
Sajnos ezt válaszolja és teljesen elszáll, csak úgy tudom visszazökkenteni, ha ftp-n felülírom a jó functions.php-val
Parse error: syntax error, unexpected '<' in /storages/storage1/d/da/darus9-17/public_html/wp-content/themes/d2c/functions.php on line 264
Kimásoltam az egész cuccot és 264.sor pont az ahová beszúrom az új widgetet.
Egyébként nagyon szépen köszönöm a segítségedet!!!
Ja, kipróbáltam mindkét variációban.
Hm, ez fura, nekem tokeletesen mukodott… A fajl legeslegvegere szurtad, a zaro “?>” utan? Ha feltoltod ide a functions.php-dat, akkor holnap megnezem.
Hoppá! A záró "?>" után nekem még a Háború és Béke is oda van írva.
$artThemeSettings = array(
'menu.showSubmenus' => true
);
load_theme_textdomain('kubrick');
if (!function_exists('get_search_form')) {
function get_search_form()
{
include (TEMPLATEPATH . "/searchform.php");
}
}
if (!function_exists('get_previous_posts_link')) {
function get_previous_posts_link($label)
{
ob_start();
previous_posts_link($label);
return ob_get_clean();
}
}
if (!function_exists('get_next_posts_link')) {
function get_next_posts_link($label)
{
ob_start();
next_posts_link($label);
return ob_get_clean();
}
}
function art_comment($comment, $args, $depth)
{
$GLOBALS['comment'] = $comment; ?>
<li id="li-comment-">
<div id="comment-">
<?php echo get_avatar($comment,$size='48',$default='' ); ?>
<?php printf(__('%s says:'), get_comment_author_link()) ?>
comment_approved == '0') : ?>
$depth, 'max_depth' => $args['max_depth']))) ?>
<?php
}
if (function_exists('register_sidebars')) {
register_sidebars(2, array(
'before_widget' => '',
'before_title' => '',
'after_title' => '',
'after_widget' => ''
));
}
function art_normalize_widget_style_tokens($content) {
$bw = '';
$bwt = '';
$ewt = '';
$bwc = '';
$ewc = '';
$ew = '';
$result = '';
$startBlock = 0;
$endBlock = 0;
while (true) {
$startBlock = strpos($content, $bw, $endBlock);
if (false === $startBlock) {
$result .= substr($content, $endBlock);
break;
}
$result .= substr($content, $endBlock, $startBlock - $endBlock);
$endBlock = strpos($content, $ew, $startBlock);
if (false === $endBlock) {
$result .= substr($content, $endBlock);
break;
}
$endBlock += strlen($ew);
$widgetContent = substr($content, $startBlock, $endBlock - $startBlock);
$beginTitlePos = strpos($widgetContent, $bwt);
$endTitlePos = strpos($widgetContent, $ewt);
if ((false == $beginTitlePos) xor (false == $endTitlePos)) {
$widgetContent = str_replace($bwt, '', $widgetContent);
$widgetContent = str_replace($ewt, '', $widgetContent);
} else {
$beginTitleText = $beginTitlePos + strlen($bwt);
$titleContent = substr($widgetContent, $beginTitleText, $endTitlePos - $beginTitleText);
if (' ' == $titleContent) {
$widgetContent = substr($widgetContent, 0, $beginTitlePos)
. substr($widgetContent, $endTitlePos + strlen($ewt));
}
}
if (false === strpos($widgetContent, $bwt)) {
$widgetContent = str_replace($bw, $bw . $bwc, $widgetContent);
} else {
$widgetContent = str_replace($ewt, $ewt . $bwc, $widgetContent);
}
$result .= str_replace($ew, $ewc . $ew, $widgetContent);
}
return $result;
}
function art_sidebar($index = 1)
{
if (!function_exists('dynamic_sidebar')) return false;
ob_start();
$success = dynamic_sidebar($index);
$content = ob_get_clean();
if (!$success) return false;
$content = art_normalize_widget_style_tokens($content);
$replaces = array(
'' => "
'' => "
'' => "rn
'' => "
'' => "rn
'' => "rn
);
$bwt = '';
$ewt = '';
if ('' == $replaces[$bwt] && '' == $replaces[$ewt]) {
$startTitle = 0;
$endTitle = 0;
$result = '';
while (true) {
$startTitle = strpos($content, $bwt, $endTitle);
if (false == $startTitle) {
$result .= substr($content, $endTitle);
break;
}
$result .= substr($content, $endTitle, $startTitle - $endTitle);
$endTitle = strpos($content, $ewt, $startTitle);
if (false == $endTitle) {
$result .= substr($content, $startTitle);
break;
}
$endTitle += strlen($ewt);
}
$content = $result;
}
$content = str_replace(array_keys($replaces), array_values($replaces), $content);
echo $content;
return true;
}
function art_list_pages_filter($output)
{
$output = preg_replace('~
'
$output);
$re = '~
$output = preg_replace($re, '
$output = preg_replace($re, '
return $output;
}
function art_header_page_list_filter($pages)
{
global $artThemeSettings;
$result = array();
if ($artThemeSettings['menu.showSubmenus']) {
foreach ($pages as $page)
$result[] = $page;
} else {
foreach ($pages as $page)
if (0 == $page->post_parent)
$result[] = $page;
}
if ('page' == get_option('show_on_front')) {
$pageOnFront = get_option('page_on_front');
$pageForPosts = get_option('page_for_posts');
if ($pageOnFront) {
foreach ($result as $key => $page) {
if (0 == $page->post_parent && $pageOnFront == $page->ID) {
unset($result[$key]);
break;
}
}
}
if (!$pageOnFront && $pageForPosts) {
foreach ($result as $key => $page) {
if (0 == $page->post_parent && $pageForPosts == $page->ID) {
unset($result[$key]);
break;
}
}
}
}
return $result;
}
function art_menu_items()
{
$homeMenuItemCaption = <<<EOD
Home
EOD;
$showHomeMenuItem = true;
$isHomeSelected = null;
if ('page' == get_option('show_on_front')) {
$pageOnFront = get_option('page_on_front');
$pageForPosts = get_option('page_for_posts');
if ($pageOnFront) {
$page = & get_post($pageOnFront);
if (null != $page)
$homeMenuItemCaption = apply_filters('the_title', $page->post_title);
$isHomeSelected = is_page($page->ID);
} elseif (!$pageOnFront && $pageForPosts) {
$page = & get_post($pageForPosts);
if (null != $page)
$homeMenuItemCaption = apply_filters('the_title', $page->post_title);
}
}
if (null === $isHomeSelected)
$isHomeSelected = is_home();
if (true === $showHomeMenuItem || 'page' == get_option('show_on_front'))
echo '
. $homeMenuItemCaption . '
add_action('get_pages', 'art_header_page_list_filter');
add_action('wp_list_pages', 'art_list_pages_filter');
wp_list_pages('title_li=');
remove_action('wp_list_pages', 'art_list_pages_filter');
remove_action('get_pages', 'art_header_page_list_filter');
}
add_filter('comments_template', 'legacy_comments');
function legacy_comments($file) {
if(!function_exists('wp_list_comments')) : // WP 2.7-only check
$file = TEMPLATEPATH.'/legacy.comments.php';
endif;
return $file;
}
Naaaajsz. Akkor legyen a legeslegeleje, a <?php ele. Ha ugy sem, akkor tenyleg csak holnap lesz otletem.
@psztrnk: MESTER!! Ãgy csupa nagybetűvel! Működik a dolog (egy kis bibivel), úgyhogy hálás köszönetemet fejezem ki a gyerekek nevében is!!!
A bibi az ékezetes karakterek megjelenítésében van. Valószínű, hogy a nevnap.php-t rossz karakterkódolással gyártottam le a notepad+±ban. Megmondanád, hogy mire állítsam át?
Válaszodat előre is köszönöm!
Megoldottam! UTF8-ra kellett kódolni.