PDA

Zobacz pełną wersję : koniec publikacji napierwszej stronie inaczej



artmajster
15-07-2009, 20:02
Witam serdecznie

czy ktoś może mi poradzić jak spowodować aby data początku publikacji artykuły była datą końca publikacji artykułu na pierwszej stronie

wiem że trzeba w tabeli jos_content_frontpage (http://sql.elk.home.pl/sql/tbl_properties_structure.php?db=elk&token=c1f6e11744af61b8b40c46ee56932d5d&table=jos_content_frontpage)
znaleźć kolumnę z odpowiednim content_id (http://sql.elk.home.pl/sql/sql.php?db=elk&table=jos_content_frontpage&token=c1f6e11744af61b8b40c46ee56932d5d&pos=0&session_max_rows=30&disp_direction=horizontal&repeat_cells=100&dontlimitchars=0&sql_query=SELECT+%2AFROM+%60jos_content_frontpage% 60++ORDER+BY+%60jos_content_frontpage%60.%60conten t_id%60+ASC) (id danego artykułu)
i usunąć ją

niestety nie jestem aż tak dobry z sql

pomożecie stworzyć taki kawałek kodu i określić miejsce (plik) joomli gdzie podmienić kod?

proszę o pomoc

Jola
15-07-2009, 22:22
Witam,
staram się, ale nie do końca rozumiem o co Ci chodzi.
Może wytłumacz to na przykładzie.
Pozdrawiam

artmajster
19-07-2009, 12:29
Dodaję artykuł:
i mam tam trzy daty

Data utworzenia
Rozpocznij publikację
Zakończ publikacjęchciałbym uczynić tak aby data "Rozpocznij publikację"
był datą końca publikacji artykułu na pierwszej stronie

po zmianie nazwy z pliku języka
"Rozpocznij publikację" na "Usuń za strony startowej"
będzie wszystko jasne

Bazyl
19-07-2009, 12:52
1. Artykuły wyświetlają się na startowej. Utworzone tego samego dnia.
2. Artykuł AAA - zakończ publikację 10.X
3. Artykuł BBB - rozpoczęcie publikacji 11.X zakończ publikację 15.X
4. Artykuł CCC - rozpoczęcie 16.X zakończ publikację 20.X


???

artmajster
20-07-2009, 15:14
nie mam pojęcia jak mam to wytłumaczyć inaczej
(czyżbym tłumaczył niezrozumiale ?)

więc może inaczej
chciałbym osiągnąć efekt aby data początku i końca publikacji
była datą początku i końca pokazywania artykułu na pierwszej stronie

artykuły dodawane na pierwszą stronę
powinny trafić na początek tabeli jos_content_frontpage (http://sql.elk.home.pl/sql/tbl_properties_structure.php?db=elk&token=c1f6e11744af61b8b40c46ee56932d5d&table=jos_content_frontpage)
tak żeby było prosto i przyjemnie :)

w jaki sposób to uczynić?
jeżeli artykuł osiągnie datę "Początek publikacji" skrtypt musi wziąć ID tegoż artykułu z tabeli jos_content (http://sql.elk.home.pl/sql/tbl_properties_structure.php?db=elk&token=f3ec7bb2caa098103dd75962249b5f31&table=jos_content)
następnie przenumerować kolumnę ordering (http://sql.elk.home.pl/sql/sql.php?db=elk&table=jos_content_frontpage&token=f3ec7bb2caa098103dd75962249b5f31&pos=0&session_max_rows=30&disp_direction=horizontal&repeat_cells=100&dontlimitchars=0&sql_query=SELECT+%2AFROM+%60jos_content_frontpage% 60++ORDER+BY+%60jos_content_frontpage%60.%60orderi ng%60+ASC) w tabeli jos_content_frontpage (http://sql.elk.home.pl/sql/tbl_properties_structure.php?db=elk&token=c1f6e11744af61b8b40c46ee56932d5d&table=jos_content_frontpage)
+1 wo wszystkich wartości
i dodać nowy wiersz z ID artykułu i liczbą "1" w kolumnie ordering (http://sql.elk.home.pl/sql/sql.php?db=elk&table=jos_content_frontpage&token=f3ec7bb2caa098103dd75962249b5f31&pos=0&session_max_rows=30&disp_direction=horizontal&repeat_cells=100&dontlimitchars=0&sql_query=SELECT+%2AFROM+%60jos_content_frontpage% 60++ORDER+BY+%60jos_content_frontpage%60.%60orderi ng%60+ASC)

niestety nie wiem jak napisać do tego kod SQL bo tego bardzo czaję :(

będę wdzięczny za pomoc

zwiastun
20-07-2009, 15:45
Chyba za dużo i niepotrzebnie kombinujesz:
W przeglądzie Strona startowa artykuły standardowo układane są chronologicznie - według daty publikacji od najnowszych. Od Ciebie zależy, czy pokazesz na stronie startowej jeden, dwa czy 10 materiałów, od Ciebie również zależy, ile będzie odnośników i czy włączysz paginację.
Pomysł ze zmianą roli, jaką spełnia data rozpoczęcia publikacji jest nieracjonalny.

artmajster
20-07-2009, 16:20
Pomysł ze zmianą roli, jaką spełnia data rozpoczęcia publikacji jest nieracjonalny.
być może nieracjonalnym ale dla mnie potrzebny
tak sobie obmyśliłem stronę że potrzebuję takowego zachowania artykułów
chodzi o to że nie będę musiał pamiętać aby dzisiaj akurat zdjąć coś z pierwszej strony
będzie się to działo automatycznie
przy sporej ilości wiadomości i wielu innych zajęciach to rozwiązanie znacznie ułatwi mi życie

to podpowiedzcie chociaż gdzie mam szukać pliku w którym znajduje się kod SQL odpowiedzialny za obsługę tych dwóch dat

EDIT: po przemyśleniu tematu
trzeba dodać wiersz do tabeli jos_content_frontpage (http://sql.elk.home.pl/sql/tbl_properties_structure.php?db=elk&token=c1f6e11744af61b8b40c46ee56932d5d&table=jos_content_frontpage) na końcu z kolejnym numerem
i nie trzeba jej przenumerowywać
wtedy artykuł trafi na koniec (o to mi chodzi)

Jola
21-07-2009, 20:08
Witam,
teoretycznie wystarczy zmienić warunek wyświetlania art. na stronie startowej. Jeśli mają to być tylko artykuły startujące z publikacją dziasiaj (pomijam godzinę) to wystarczy w pliku:
components/com_content/models/frontpage.php linia:202

$where .= ' AND ( a.publish_up = '.$this->_db->Quote($nullDate).' OR a.publish_up <= '.$this->_db->Quote($now).' )' .
' AND ( a.publish_down = '.$this->_db->Quote($nullDate).' OR a.publish_down >= '.$this->_db->Quote($now).' )';zmienić na:

$where .= ' AND ( date(a.publish_up) = curdate() )' ;Pozdrawiam

artmajster
21-07-2009, 20:57
no tak to nie da rady
chciałbym mieć możliwość ustawienia daty kiedy ma wejść na pierwszą stronę i kiedy zejść

a w którym pliku znajdują się warunki publikowania i wyłączenia publikacji artykułu w zależności od spełnienia warunku daty publikacji i odpulikowania danego artykułu?

można by tam wstawić kod który włącza i wyłącza publikację artykułu na stronę frontową (przyciski w menu administracyjnym) - tam można by podglądnąć kod SQL - w jakim pliku tego szukać?

trochę motam co?
ale to strasznie ułatwiło by życie - nie tylko mi :)

Jola
21-07-2009, 22:15
Dodanie takiej funkcjonalności - zarządzanie czasem publikacji na stronie frontowej - to nie tylko kwestia przycisków, ale zapisania tej informacji w bazie i dodanie wszystkich operacji (dodawanie, zmiana i usuwanie) związanych z działaniami na tej wartości. Proponuję znalezienie innego pomysłu. To rozwiązanie, które podałam powoduje wyświetlenie art. na froncie tylko w dniu jego publikacji - można przecież zmienić na określoną ilość dni od dnia publikacji, nie wspomnę o standardowym wpisie o końcu publikacji.
Pozdrawiam

artmajster
25-07-2009, 11:53
witam serdecznie

no niestety koniec publikacji wiąże się z tym, iż artykuł przestaje być w ogóle widoczny na stronie

jeżeli chodzi o zmianę informacji w bazie danych, to zdaję sobie z tego sprawę
dlatego właśnie szukam pliku w którym joomla przetwarza datę początku i końca publikacji artykułu i chciałbym podmienić komendy dotyczące publikacji na polecenia zapisu i usunięcia artykułu z frontpage podpatrzone spod przycisków dodania i usunięcia artykułu z pierwszej strony w panelu administracyjnym

hmmm... czy to naprawdę aż takie trudne?

Jola
25-07-2009, 21:49
Witam,
- przymierzasz się do modyfikacji komponetu - zakładam, że samodzielnej, a nie wiesz gdzie masz szukać potrzebnego kodu
- nie wróży to dobrze tej modyfikacji
- to, o czym piszesz w pierwszym poście możesz osiągnąć modyfikując warunki wyświetlania artykułów na stronie frontowej - nowy pomysł to: wyświetlanie ich jeśli są opublikowane i data dzisiejsza jest mniejsza (równa) od daty początku publikacji. Czyli artykuły na froncie będą pokazywane od momentu ich opublikowania do dnia początku publikacji (od tej pory będą widoczne w innych miejscach witryny).
- za komunikację skrypt - baza danych odpowiedzialny jest plik controller.php komponentu.
Pozdrawiam

artmajster
26-07-2009, 12:18
dzięki za sugestię :)
niemniej spróbuję przerobić trochę skrypt
jak się nie uda to trudno :)
może nie popsuję mocno bazy :p

o postępach pracy będę donosił

pozdrawiam

EDIT:
tak więc w pliku administrator/components/com_content/controller.php
jest zmian statusu artykułu (czy ma być na pierwszej czy nie)


/**
* Changes the frontpage state of one or more articles
*
*/
function toggleFrontPage()
{
global $mainframe;

// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );

// Initialize variables
$db =& JFactory::getDBO();

$cid = JRequest::getVar( 'cid', array(), 'post', 'array' );
$option = JRequest::getCmd( 'option' );
$msg = null;

JArrayHelper::toInteger($cid);

if (count($cid) < 1) {
$msg = JText::_('Select an item to toggle');
$mainframe->redirect('index.php?option='.$option, $msg, 'error');
}

/*
* We need to update frontpage status for the articles.
*
* First we include the frontpage table and instantiate an instance of
* it.
*/
require_once (JPATH_ADMINISTRATOR.DS.'components'.DS.'com_front page'.DS.'tables'.DS.'frontpage.php');
$fp = new TableFrontPage($db);

foreach ($cid as $id)
{
// toggles go to first place
if ($fp->load($id)) {
if (!$fp->delete($id)) {
$msg .= $fp->stderr();
}
$fp->ordering = 0;
} else {
// new entry
$query = 'INSERT INTO #__content_frontpage' .
' VALUES ( '. (int) $id .', 0 )';
$db->setQuery($query);
if (!$db->query()) {
JError::raiseError( 500, $db->stderr() );
return false;
}
$fp->ordering = 0;
}
$fp->reorder();
}

$cache = & JFactory::getCache('com_content');
$cache->clean();

$mainframe->redirect('index.php?option='.$option, $msg);
}


nie bardzo wiem o co chodzi z tym checkToken()
wygląda na to że kod zmienia status z jednego na drugi
dobrze rozumiem?

niestety nadal nie mogę znaleźć miejsca dzi joomla sprawdza warunek spełnienia dat publikacji :(
moze ktoś pomoże?

artmajster
27-07-2009, 21:02
no i posłuchałem mądrej rady :)

zmieniłem tylko znak < na > i już
nie da się tylko ręcznie ustawić tak żeby pojawiał się zdalnie ale z tym da się żyć
ważne że nie będę musiał pamiętać żeby czegoś zdjąć :)

$where .= ' AND ( a.publish_up = '.$this->_db->Quote($nullDate).' OR a.publish_up <= '.$this->_db->Quote($now).' )' .
' AND ( a.publish_down = '.$this->_db->Quote($nullDate).' OR a.publish_down >= '.$this->_db->Quote($now).' )';na

OR a.publish_up >= '.$this->_db->Quote($now).' )' .
proste z strasznie cieszy :)

dziękuję ślicznie za pomoc

artmajster
07-08-2009, 20:52
niestety nie da się w ten sposób tego uczynić

dlaczego?

bo po kliknięciu na więcej .... 404 nie ma takiej strony

ten artykuł nie jest jeszcze opublikowany :(

normalnie pod górkę cały czas :/

Jola
07-08-2009, 21:00
To przecież oczywiste, że tak będzie - jedyne wyjście: umieszczać całe artykuły.