RSS

zapisz się: RSS Artykuły

szukaj

Intro artykułu

Komentarze 0

Kursor - łapkaTen mały dodatek do sNews jest dla tych osób, które nie chcą mieć na stronie głównej lub stronach kategorii początków artykułów tylko zupełnie coś innego. Intro dla artykułu, krótkie wejście, coś co po krótce przedstawi artykuł.

Intro pojawi się tylko na stronach kategorii, bądź stronie głównej. Na stronie pełnego artykułu nie wystąpi. Autor moda to Moshe Gil Lamberger.

Na początek otwieramy snews.php i dodajemy do niego funkcję intro. Może ona być przed znacznikiem zamykającym "?>":

/*
 Very Simple Intro Mod for sNewsCMS v1.6/1.7 ( Auto Detected ).
 by Moshe Gil Lamberger.
 date: Jun 7, 2008 :: 23:12 ::
 website: http://www.cms-zen.com/
 Note: For v1.6 Best use with (  built in 17 )
 [MOD] Function use in articles (snews1.6)  by philmoz. 
 location:  http://snewscms.com/forum/index.php?topic=4583.0
 */
 function intro($introtxt=''){
 // sprawdzanie wersji sNews (1.6 lub 1.7).
 if (function_exists('get_id')) {
 $_ID = get_id('article');
 } else {
 global $_ID;
 }
 // Wyświetlanie intra, jeśli nie jesteśmy w pełnym widoku artykułu
 if( !$_ID ) {
 if(!empty($introtxt)) {
 echo '<div class="intro-Div">';
 echo '<div class="intPad">';
 echo $introtxt;
 echo '</div>';
 echo '</div>';
 }
 }
 }

Intro generowane jest w dwóch divach z klasami. Możemy dzięki temu dowolnie zmienić wyświetlanie się intra przy pomocy klas. Wystarczy dodać do nich odpowiednie style CSS, w naszym arkuszu stylów.

Funkcję tę uruchamiamy podczas pisania artykułu według następującego przykładu:

[func]intro:|:<p>W tym miejscu umieszczamy nasze intro.</p>[/func]
[break]
Tu pojawia się pełen artykuł.

Funkcję można wpisać ręcznie lub przy pomocy przycisku "Funkcja". Zawartość intra wpisujemy przed znacznikiem zamykającym "" ucinamy nasze intro przy pomocy przycisku "Break". Po nim piszemy pełną część artykułu.

Należy jednak zauważyć, że intro jest wpisywane w miejscu, w którym normalnie podawane są parametry funkcji. Pojawia się problem, gdy użyjemy przecinka. W takim wypadku nasz CMS uzna to jako oddzielenie od następnego parametru i nasze intro zostanie ucięte.

Problem rozwiązał philmoz. Wystarczy zmienić oddzielanie parametrów innym znakiem. Szukamy linijki:

$returned = call_user_func_array($func[0], explode(',',$func[1]));

i zmieniamy zaznaczony przecinek przykładowo na znak gwiazdki:

$returned = call_user_func_array($func[0], explode('*',$func[1]));

Od teraz użycie przecinka w intrze nie spowoduje jego ucięcia. Należy jednak zapamiętać, że teraz, aby oddzielić parametry, jeśli używamy funkcji, trzeba użyć gwiazdki. Dobrze jest też zmienić nieco tłumaczenie w pliku PL.php. W tym celu szukamy w nim fragmentu:

$l['parameters']='Parametry - jeśli więcej niż jeden, wymagane oddzielenie przecinkiem.<br /> 
Nie należy używać cudzysłowów dla pustych parametrów.';

i zamieniamy na:

$l['parameters']='Parametry - jeśli więcej niż jeden, wymagane oddzielenie gwiazdką (*).<br />
Nie należy używać cudzysłowów dla pustych parametrów.';

A także nieco niżej zamieniamy:

$l['js_func2'] = "Parametry - jeśli więcej niż jeden, wymagane oddzielenie przecinkiem (bez spacji). Nie należy używać cudzysłowów dla pustych parametrów, po prostu puste zastąp przecinkami.";

na:

$l['js_func2'] = "Parametry - jeśli więcej niż jeden, wymagane oddzielenie gwiazdką (*) (bez spacji). Nie należy używać cudzysłowów dla pustych parametrów, po prostu puste zastąp gwiazdkami.";

Dzięki temu mamy tłumaczenie zgodne z naniesioną zmianą w pliku snews.php.

Dodatek ten sprawia również, że intro wyświetla się w kanałach RSS. W dodatku razem ze znacznikami [func]intro:|: oraz [/func]. Aby usunąć tę funkcję z RSS szukamy fragmentu:

function strip($text) {
	$search = array('/[include](.*?)[/include]/', '/[func](.*?)[/func]/', '/[break]/', '//');

i zamieniamy na:

function strip($text) {
	$search = array('/[include](.*?)[/include]/', '![func](.+?)[/func]!is', '/[break]/', '//');

Podziel się

Bookmark and Share

Komentowanie zostało zablokowane