IPB

( Zaloguj | Zarejestruj )

 
Reply to this topicStart new topic
> Strona językowa ze zmiennym menu
rasgan
post 30.3.2009 - 07:52
Post #1





Grupa: Bloger
Postów: 6

Nr: 4 633



Witam,

chciałem zapytać czy za pomocą wordpress i wtyczek można zrobić stronę firmy w której:
- Menu boczne zmieni się zależnie od działu w którym się jest np. w stali będzie menu o stali a w betonach o betonie
- strona będzie w co najmniej 3 językach w jednej instancji wordpressa
Go to the top of the page
 
+Quote Post
kejsi
post 30.3.2009 - 08:07
Post #2


aktywność:
*****

Grupa: +Bloger
Postów: 892

Nr: 3 286



CYTAT(rasgan @ 30.3.2009 - 08:52) *
Witam,

chciałem zapytać czy za pomocą wordpress i wtyczek można zrobić stronę firmy w której:
- Menu boczne zmieni się zależnie od działu w którym się jest np. w stali będzie menu o stali a w betonach o betonie
- strona będzie w co najmniej 3 językach w jednej instancji wordpressa


Możesz przygotować różne sidebary, wczytywane w zależności od działu, czy strony, albo wspomóc się wtyczką Widget Logic, żeby za pomocą odpowiednich conditional tags wyświetlić różne widgety na poszczególnych stronach.

A do wielojęzyczności polecam qtranslate.
Go to the top of the page
 
+Quote Post
rasgan
post 01.4.2009 - 07:18
Post #3





Grupa: Bloger
Postów: 6

Nr: 4 633



A czy mógłbyś mi powiedzieć jak utworzyć takie sidebary zależne od strony lub działu? W jaki sposób do tego podejść bez wtyczek?
Go to the top of the page
 
+Quote Post
kejsi
post 01.4.2009 - 10:48
Post #4


aktywność:
*****

Grupa: +Bloger
Postów: 892

Nr: 3 286



CYTAT(rasgan @ 01.4.2009 - 08:18) *
A czy mógłbyś mi powiedzieć jak utworzyć takie sidebary zależne od strony lub działu? W jaki sposób do tego podejść bez wtyczek?


Wszystko zależy od tego gdzie chcesz to stosować i w jakich ilościach.

Normalnie jak wczytujesz sidebar to robisz to w szablonie funkcją get_sidebar(), co powoduje wczytanie pliku sidebar.php z szablonu skórki. Stwórz sobie dodatkowe sidebary z zawartością dopasowaną do potrzeb, np. sidebar-1.php, sidebar-2.php itd. i wówczas możesz kombinować w szablonach na zasadzie wczytywania odpowiedniego sidebara w zależności od strony, kategorii itp (poczytaj o conditional tag)... możliwości jest dużo.

przykład dla stron statycznych:

w pliku page.php na końcu dajesz get_sidebar(), co wczytuje ci sidebar domyślny (plik sidebar.php)

przykład dla stron wpisów:
w pliku single.php na końcu dajesz get_sidebar('1'), co wczytuje ci sidebar-1 (plik sidebar-1.php)

możesz też się bawić używając warunków. Np. dla wpisów z kategorii o ID 3 chcesz załadować sidebar-2, dla kategorii o ID 2 sidebar-1, a dla pozostałych wpisów sidebar domyślny. W pliku single.php piszesz zamiast get_sidebar() coś takiego:

KOD
<?php if (in_category(3)) { ?>

<?php get_sidebar('2'); ?>

<?php }

elseif (in_category(2)) { ?>

<?php get_sidebar('2'); ?>

<?php }

else { ?>

<?php get_sidebar(); ?>

<?php } ?>


WordPress jest pod tym względem bardzo elastyczny.

Ten post edytował kejsi 01.4.2009 - 20:44
Go to the top of the page
 
+Quote Post
ideo
post 20.11.2009 - 20:48
Post #5


aktywność:
**

Grupa: +Bloger
Postów: 85

Nr: 7 212



Mam pytanie do info powyżej. Właśnie czegoś takiego szukam. Chcę aby do każdej strony był skojarzony inny sidebar. Następnie w nim chciałbym umieścić różne widgety.

Do tej pory próbowałem to robić za pomocą widget logic i właściwie wszystko działało, dopóty, dopóki stronie nie była rozbudowana. Teraz siedzę i tak sobie myślę, że łatwiejszym sposobem będzie użycie sidebar i do tego wewnątrz niego Conditional Tags za pomocą widget logic. Rozumiem, że jak np. wpiszę is_single() w danym sidebar (którego stworzę) to widget będzie mi się wyświetlał na wszystkich pojedynczych stronach, ale tylko tam gdzie ten sidebar występuje, tak?

Jeśli tak, to chciałbym zastosować to co napisałeś po wyżej, ale pojęcia nie mam jak wpisać w functions.php to co podałeś get_sidebar(), same tylko <?php get_sidebar('2'); ?> czy cokolwiek jeszcze? Podejrzewam, że tak, ale co?

Będę wdzięczny za podpowiedź.

ps. rozwiązaniem moich problemów, byłby też Conditional Tags, gdzie np. wpisując is_category('1') nie pokazuje tylko w danej kategorii 1, ale też we wszystkich postach danej kategorii. Ale nie znam takiego Conditional Tags.

Ten post edytował ideo 20.11.2009 - 21:18


--------------------
bo Bóg jest lepszy niż myślisz
iBÓG.pl
Go to the top of the page
 
+Quote Post
kejsi
post 20.11.2009 - 22:49
Post #6


aktywność:
*****

Grupa: +Bloger
Postów: 892

Nr: 3 286



CYTAT(ideo @ 20.11.2009 - 20:48) *
Mam pytanie do info powyżej. Właśnie czegoś takiego szukam. Chcę aby do każdej strony był skojarzony inny sidebar. Następnie w nim chciałbym umieścić różne widgety.

To jest jak najbardziej wykonalne
CYTAT(ideo @ 20.11.2009 - 20:48) *
Rozumiem, że jak np. wpiszę is_single() w danym sidebar (którego stworzę) to widget będzie mi się wyświetlał na wszystkich pojedynczych stronach, ale tylko tam gdzie ten sidebar występuje, tak?

Chodzi Ci o warunek is_single wpisany w widgetcie (nie w sidebar) w polu dodanym przez wtyczkę Widget Logic? To tak - na tym sidebarze wyświetli się ten widget na sidebarze dla pojedynczego wpisu.
CYTAT(ideo @ 20.11.2009 - 20:48) *
Jeśli tak, to chciałbym zastosować to co napisałeś po wyżej, ale pojęcia nie mam jak wpisać w functions.php to co podałeś get_sidebar(), same tylko <?php get_sidebar('2'); ?> czy cokolwiek jeszcze? Podejrzewam, że tak, ale co?

Niezupełnie tak jest. W functions.php trzeba tylko wpisać kod powodujący, zarejestrowanie tych sidebarów, oczywiście one same w sobie muszą mieć kod pozwalający stosowanie na nich widgetów (to już podejrzyj w oryginalnym pliku sidebar.php). <?php get_sidebar('2'); ?> wpisujesz w pliku szablonu (np. single.php) i wtedy na stronach pojedynczego wpisu masz sidebar-2. Możesz też tworzyć warunki, tak jak podałem w poprzednim poście.
Pierwszy sidebar zarejestrowany w functions.php wygląda zazwyczaj tak:
KOD
<?php
if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '<div class="box %1$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widgettitle">',
        'after_title' => '</h3>',
    ));

?>

wystarczy powielić kod zmieniając odpowiednie fragmenty, aby uzyskać możliwość korzystania z dodatkowych sidebarów np.:
KOD
<?php
if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '<div class="box %1$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widgettitle">',
        'after_title' => '</h3>',
    ));

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name'=>'deutsch',
        'before_widget' => '<div class="box %1$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widgettitle">',
        'after_title' => '</h3>',
    ));

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name'=>'english',
        'before_widget' => '<div class="box %1$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widgettitle">',
        'after_title' => '</h3>',
    ));
?>

spowoduje, że w panelu oprócz sidebara domyślnego otrzymam 2 nowe sidebary o nazwach english i deutsch, na których mogę sobie poumieszczać różne widgety (wtedy już za pomocą conditional_tags wg mojego widzimisię).
CYTAT(ideo @ 20.11.2009 - 20:48) *
Będę wdzięczny za podpowiedź.
ps. rozwiązaniem moich problemów, byłby też Conditional Tags, gdzie np. wpisując is_category('1') nie pokazuje tylko w danej kategorii 1, ale też we wszystkich postach danej kategorii. Ale nie znam takiego Conditional Tags.

to może nie is_category(1), tylko in_category(1) ufff
Go to the top of the page
 
+Quote Post
ideo
post 21.11.2009 - 01:13
Post #7


aktywność:
**

Grupa: +Bloger
Postów: 85

Nr: 7 212



CYTAT
to może nie is_category(1), tylko in_category(1) ufff

jak robię in_category(1) to pokazuje mi się wszędzie, na każdej stronie prócz głównej

dokładnie tak wygląda
CYTAT
is_page('nauczanie')||in_category('nauczanie')

chciałem, aby się wyświetlało na stronie "nauczanie", kategorii "nauczanie" i poszczególnym poście kategorii "nauczanie".

kiedyś miałem po prostu tak wpisane:
CYTAT
is_page('nauczanie')||is_category()||is_single()

i powiem szczerze, wszystko dobrze działo.... do momentu kiedy chciałem, aby całkowicie oddzielna kategoria "aktualności" miała posty na stronie "o nas" - wtedy zdałem sobie sprawę, że zawsze "nauczanie" będzie pokazywało mi się pod kategorią i w pojedynczym poście. Dlatego szukam czegoś takiego, aby móc zapisać

CYTAT
is_page('nauczanie')||in_category('nauczanie')
i aby wtedy na sidebar: na stronie nauczanie, w kategorii nauczanie i w poszczególnym poście kategorii "nauczanie" mógł się wyświetlać. Ale tak się nie dzieje... właściwie nie wiem dlaczego, chyba powinno działać.


ale o ile z widget logic mogę sobie poradzić, albo przynajmniej mocno popracować to już z stworzeniem sidebar będzie gorzej. W wl mogę popróbować, nic nie zepsuję, a w mieszaniu plików function, czy single może być źle.

Co do sidebar:

CYTAT
Niezupełnie tak jest. W functions.php trzeba tylko wpisać kod powodujący, zarejestrowanie tych sidebarów, oczywiście one same w sobie muszą mieć kod pozwalający stosowanie na nich widgetów

Dokładnie tak zrobiłem ... i faktycznie pojawia się sidebar o nazwie "deutsch", ale jak chce do niego wrzucić widget, to oczywiście pozostaje w nim, ale nie działa.

CYTAT
(to już podejrzyj w oryginalnym pliku sidebar.php). <?php get_sidebar('2'); ?> wpisujesz w pliku szablonu (np. single.php) i wtedy na stronach pojedynczego wpisu masz sidebar-2.

tutaj przyznam się, że czuje się jakbym chodzić po księżycu blink.gif...

ale próbuję,.. dla pewności pokazuję co zrobiłem (jeśli chodzi o sidebar)
to jest mój function.php: w którego wstawiłem to co napisałeś:

CYTAT
<?php
/**
* Coded by misbah (ini_misbah@yahoo.com)
*/

if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name' => 'Main Sidebar',
'before_widget' => '<li id="%1$s" class="widget"><div class="widget-content">',
'after_widget' => '</div><div class="widget-bottom"></div></li>',
'before_title' => '<h4 class="widget-title">',
'after_title' => '</h4>',
));
register_sidebar(array(
'name'=>'deutsch',
'before_widget' => '<div class="box %1$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',

));
/*
register_sidebars(2,array(
'name' => 'Small Sidebar %d',
'before_widget' => '<li id="%1$s" class="widget">',
'after_widget' => '</div></li>',
'before_title' => '<h4 class="widget-title">',
'after_title' => '</h4><div class="widget-content">',
));
/*
/**/
}

//Check for widgets in widget-ready areas http://wordpress.org/support/topic/190184?...s=7#post-808787
//Thanks to Chaos Kaizer http://blog.kaizeku.com/
function is_sidebar_active( $index = 1){
$sidebars = wp_get_sidebars_widgets();
$key = (string) 'sidebar-'.$index;

return (isset($sidebars[$key]));
}

include(TEMPLATEPATH.'/includes/template-options.php');

include(TEMPLATEPATH.'/includes/widgets.php');
/*
add_action('widgets_init', 'remove_default_widgets', 0);
function remove_default_widgets() {
if (function_exists('unregister_sidebar_widget')) {
unregister_sidebar_widget('Search');
}
}

include(TEMPLATEPATH.'/includes/plugins.php');

/**/


a to single.php (tutaj i poniżej w sidebar.php nic nie ruszałem):

CYTAT
<?php get_header() ?>
<div id="content"><div id="content-in">
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" class="post">
<h3 class="title"><?php the_title(); ?></h3>
<div class="meta clearfix">
<span class="date-post">Posted on <?php the_time('F j Y') ?></span> <span class="author-post">by <?php the_author() ?></span>
</div>
<div class="entry">
<?php the_content(''); ?>
</div>
<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
<div class="clear"></div>
</div>
<?php endwhile; ?>
<div class="navigation clearfix">
<div class="alignleft single"><?php previous_post_link('%link') ?></div>
<div class="alignright"><?php next_post_link('%link') ?></div>
</div>
<?php else: ?>
<h2 class="center">Not Found</h2>
<p class="center">Sorry, but you are looking for something that isn't here.</p>
<?php endif ?>
<?php get_sidebar(); get_footer() ?>



sidebar.php

CYTAT
</div></div><!-- /content -->

<div id="sidebar">
<div id="primary">
<ul>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(1) ) : ?>
<li class="widget"><div class="widget-content">
<h4 class="widget-title">Blogroll</h4>
<ul>
<?php get_links(-1, '<li>', '</li>', 'between', FALSE, 'name', FALSE, FALSE, -1, FALSE); ?>
</ul>
</div><div class="widget-bottom"></div></li>
<?php endif ?>
</ul>
</div><!-- primary -->
<div id="secondary">
<!-- <ul>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(2) ) : ?>
<li class="widget"><div class="widget-content">
<h4 class="widget-title">Archives</h4>
<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul>
</div><div class="widget-bottom"></div></li>
<?php endif ?>
</ul> -->
</div><!-- secondary -->
</div><!-- /sidebar -->


wiem, że dużo tego wkleiłem. Nie chcę coś pomieszać, dlatego wolę całe pokazać. Ale już coś wychodzi, bo tak jak pisałeś, sidebar się pokazuje, ale jeszcze nie działa, coś robię nie tak, ale co? Nie ma odwołania w sidebar.php?

Właściwie to sprawa dotyczy dwóch oddzielnych rzeczy: tworzenia sidebar i zastosowań Conditional Tags. Na oba pytania dot. tych spraw chciałbym poznać odpowiedź, ale jak miałbym wybierać, to "większym kosmosem" jest dla mnie tworzenie sidebar

Ten post edytował ideo 21.11.2009 - 01:51


--------------------
bo Bóg jest lepszy niż myślisz
iBÓG.pl
Go to the top of the page
 
+Quote Post
ideo
post 21.11.2009 - 04:02
Post #8


aktywność:
**

Grupa: +Bloger
Postów: 85

Nr: 7 212



... blink.gif spać nie mogę, tylko myślę o tych haszach wink.gif , a już prawie czwarta nad ranem

...ale.... jeszcze a propos Conditional Tags, przejrzałem różne strony o tym... i nie rozumiem,

jak wpisuje in_category() pokazuje mi błąd -
CYTAT
Warning: Missing argument 1 for in_category(), called in /wp-content/plugins/widget-logic/widget_logic.php(154) : eval()'d code on line 1 and defined in /wp-includes/category-template.php on line 255

rozumiem, że chodzi o to, że nie zdefiniowałem nazwy kategorii, więc wpisuję in_category('nauczanie') i nic się nie psuje, tylko zamiast (tak mi się wydaje, na logikę "in" wink.gif ) wstawiać widget w sidebar na wszelkich podstronach i postach dot. kategorii nauczanie, wstawia mi na stronach głównych z paska menu, prócz na samej głównej stronie.

no nic, może to nie na dzisiejszą głowę, idę spać ... sleep1.gif

Ten post edytował ideo 21.11.2009 - 04:07


--------------------
bo Bóg jest lepszy niż myślisz
iBÓG.pl
Go to the top of the page
 
+Quote Post
ideo
post 21.11.2009 - 15:30
Post #9


aktywność:
**

Grupa: +Bloger
Postów: 85

Nr: 7 212



Dobra ... z Conditional Tags poradziłem sobie w większej mierze.
Poprzednim razem, po prostu źle zdefiniowałem kategorie, zrobiłem pożądek z kategoriami i jest ok.

Mam tylko jedno pytanie:

Mam zaznaczone is_page('artykuly')||in_category('artykuly') i działa, jednak w tym samym czasie, ma tak zbudowaną stronę, że na głównej stronie mają się pokazywać posty z kategorii artykuły. Kiedy zdefiniuję tak widget logic, jak to zrobiłem powyżej, to on oczywiście wyświetli widget na stronie artykuły i wszędzie gdzie występuje kategoria artykuły, w tym i na stronie głównej, a tego nie chcę.

Dlatego po is_page('artykuly')||in_category('artykuly') chciałbym dodać wykluczenie, tak by wyświetlał się widget tylko na stronie i w kategorii "artykuły z wyłączeniem strony głównej.

ufff... mam nadzieję, że nie namieszałem wink.gif

... ale ze względu na to, że tu w tym temacie, mówimy tylko o sidebar, przenoszę to powyższe pytanie do odrębnego tematu - klik , jeśli to możliwe, czy tutaj mógłbyś kejsi mi wyjaśnić kwestię tych sidebarów? Będę bardzo wdzięczny.

Ten post edytował ideo 21.11.2009 - 15:33


--------------------
bo Bóg jest lepszy niż myślisz
iBÓG.pl
Go to the top of the page
 
+Quote Post
kejsi
post 21.11.2009 - 21:36
Post #10


aktywność:
*****

Grupa: +Bloger
Postów: 892

Nr: 3 286



Ideo, to jest temat na kilkadziesiąt minut pisania. Ja postaram się w skrócie od początku, z wykorzystaiem gotowych przykładów, które kiedyś gdzieś stworzyłem. Analogia do Twoich zamierzeń jest dość duża więc można to wykorzystać aby nie trwonić słów.

Pierwsze założenie jest takie, że musisz sobie stworzyć dodatkowe sidebary (tyle ile Ci potrzeba). Bazujmy na moich gotowych rozwiązaniach. Tworzymy sidebara sidebar-deutsch.php. Kod kopiujesz z sidebara domyślnego, tylko tam gdzie w domyślnym masz
KOD
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
wstawiasz
KOD
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('deutsch') ) : ?>
. Teraz przechodzisz do pliku functions.php i tam masz zarejestrowanego tylko domyślnego sidebara:
KOD
if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '<div class="box %1$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widgettitle">',
        'after_title' => '</h3>',
    ));

rejestrujemy nowego dodając pod spodem:
KOD
if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'name'=>'deutsch',
        'before_widget' => '<div class="box %1$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widgettitle">',
        'after_title' => '</h3>',
    ));

Teraz w panelu z widgetami widzimu już 2 sidebary - domyślny i deutsch. Domyślny wyświetla się wszędzie tam gdzie w plikach szablonu masz
KOD
<?php get_sidebar(); ?>
. Jeśli na jakichś stronach z wpisami lub czymkowiek chcesz mieć sidebar deutsch, to musisz to co powyżej zmienić na
KOD
<?php get_sidebar('deutsch'); ?>
.
Ale to nie jest tak łatwo, bo trzeba utworzyć warunek, że jeśli wpis taki lub kategoria taka lub coś tam to sidebar domyślny, a jeśli coś innego to sidebar deutsch. I teraz przykład taki:
KOD
<?php if (is_page_template('page_DE.php')||in_category('7')||in_category('10')) { ?>
<?php get_sidebar('deutsch'); ?><?php }
else { ?><?php get_sidebar(); ?>
<?php } ?>

czyli, jeżeli strona korzysta z szablonu page_DE.php lub jest z kategorii id=7 lub id=10 to ładuje się sidebar deutsch, jeśli warunki nie są spełnione, to ładuje się sidebar domyślny.
I teraz to co na te sidebary sobie w panelu wstawię zależy od tego jakie widgety chcę mieć na stronie z sidebarem deutsch, a jakie na stronie z sidebarem domyślnym. Dodatkowo na poszczególnych stronach mogą być inne widgety, to już rozwiązuje się za pomocą Widget Logic. I tak oto na każdej stronie można mieć inne widgety, lub inne sidebary.
Go to the top of the page
 
+Quote Post
ideo
post 22.11.2009 - 01:40
Post #11


aktywność:
**

Grupa: +Bloger
Postów: 85

Nr: 7 212



dzięki kejsi,

Właściwie jak stworzy się te sidebary i w powiązaniu z widget logic, to można wszystko zrobić ze stroną, to jest naprawdę super! Na razie pobawiłem się tym co podałeś o Conditional Tags i do tej pierwszej strony mi wystarczy (ta wtyczka widget logic, przy odpowiednim "ubraniu" jest fenomenalna wink.gif ).

Ale właśnie zaczynam tworzyć drugą stronę i na niech chciałbym mieć te sidebary. Stąd na spokojnie popracuję z tym co napisałeś i dam znać jak mi poszło, ale może to mi trochę zająć.

Ten post edytował ideo 22.11.2009 - 01:45


--------------------
bo Bóg jest lepszy niż myślisz
iBÓG.pl
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



: 23 05 12 - 12:14