Névnapi köszöntő - működhet-e?

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:









Code:

<?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...";

}

?>








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 :slight_smile: ugyanezt zongorázza végig :slight_smile: 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. :smiley:

É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 :slight_smile:





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! :slight_smile: 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. :frowning: 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 :slight_smile: ).


'Sunbird' wrote on '2010-07-31:

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.








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.:





Code:



<?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:





Code:

// ez szépen behívja az oldalsávba a fentieket








Aztán a style.css-ben formázod, pl.:





Code:

/* ez halványszürke hátteret, sötétebb szürke keretet ad a dobozna, a doboz tartalma és a keret között minden irányban lesz 10 pixel "légtér" */

.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. :slight_smile:

[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. :slight_smile:











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:









Code:

<?php

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:





Code:

<?php

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





Code:

<?php

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.


Quote:

A fajl legeslegvegere szurtad, a zaro "?>" utan?








Hoppá! A záró "?>" után nekem még a Háború és Béke is oda van írva.


Quote:

<?php





$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') : ?>















<a href="comment_ID ) ) ?>">















$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
rn
rn",


'' => "rn
rn
rn
rn
rn
rn",


'' => "
rn
rn
rn
rn
rn
rn
rn
rn
rn
rn
rn",


'' => "rn
rn
rn",


'' => "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('~
  • ]*)>]*)>([^<]*)~',


    '
  • $3',


    $output);


    $re = '~
  • <a ~';


    $output = preg_replace($re, '
  • <a class="active" ', $output, 1);


    $output = preg_replace($re, '
  • <a ', $output);


    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. :slight_smile:

    @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.